irq为中断号,dev_id为申请时告诉系统的设备标识,regs为中断发生时寄存器内容。
device为设备名,将会出现在/proc/interrupts文件里。
flag是申请时的选项,它决定中断处理程序的一些特性,其中最重要的是决定中断处理程序是快速处理程序(flag里设置了SA_INTERRUPT)还是慢速处理程序(不设置SA_INTERRUPT)。
22、写出将在S3C-2410X的Linux中注册外部中断2的程序代码段。 答:下面的代码将在S3C-2410X的Linux中注册外部中断2。
eint_irq = IRQ_EINT2;
set_external_irq (eint_irq, EXT_FALLING_EDGE,GPIO_PULLUP_DIS); ret_val = request_irq(eint_irq,eint2_handler, “S3C2410X eint2”,0); if(ret_val < 0){ return ret_val; }
用来打开和关闭中断的函数如下: #define cli() _asm_ _volatile_ (\#define sli() _asm_ _volatile_ (\
23、有一模块module.o 文件,在/lib/modules 目录下。写出装载和卸载模块的命令。 答:首先从/lib/modules 目录和内核相关的子目录中查找模块文件,如果需要从当前目录装载,可使用如下命令:
# insmod module.o
若要卸载该模块,可使用如下命令: # rmmod module.o
二、综合题
1、 LED接口电路如图2.1 所示。其中LED1、LED2、LED3 及LED4 分别接S3C2410 芯片的I/O口GPB7、GPB8、GPB9 及GPB10。图中4 个LED 为共阳极接法,通过读写GPB I/O 口可以控制LED 的状态。当端口电平为低时LED点亮,输出高电平时LED熄灭。
阅读下面的程序段,说明其程序完成的功能。
static int __init leds_init (void) { int ret; int i;
ret = register_chrdev(LED_MAJOR, DEVICE_NAME, &leds_fops); if (ret < 0) {
printk(DEVICE_NAME \return ret;}
devfs_handle = devfs_register(NULL, DEVICE_NAME, DEVFS_FL_DEFAULT,LED_ MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR, &matrix4_leds_fops,NULL);
图2.1 /*使用宏进行端口初始化,set_gpio_ctrl 和write_gpio_bit 均为宏定义*/
for (i = 0; i < 8; i++) {
set_gpio_ctrl (led_table[i] | GPIO_PULLUP_EN | GPIO_MODE_OUT);
write_gpio_bit(led_table[i], 1); }
printk(DEVICE_NAME \return 0; }
答:模块的入口函数leds_init(),所做的工作是通过register_chrdev()完成字符设备在系统中的注册,并建立与文件系统的并联。并使I/O端口对应的LED在初始状态为熄灭。 2、下面是s3c2410.h文件中几个宏定义。阅读下面几条宏定义语句,试写出GPBCON、GPBDAT、GPBUP对应的寄存器地址。
#define GPIO_CTL_BASE
0x56000000 /*IO口控制寄存器及地址*/
#define bGPIO(p) __REG(GPIO_CTL_BASE + (p)) /*寄存器地址0X50000000+p*/ #define GPBCON bGPIO(0x10) /*寄存器地址0X56000010*/ #define GPBDAT bGPIO(0x14) /*寄存器地址0X56000014*/ #define GPBUP bGPIO(0x18) /*寄存器地址0X56000018*/ ...
寄存器地址为0X56000018。
答:GPBCON寄存器地址为0X56000010;GPBDAT寄存器地址为0X56000014;GPBUP 3、下面的函数完成什么功能?
static void __exit leds_exit (void){
devfs_unregister(devfs_handle);
unregister_chrdev(LED_MAJOR, DEVICE_NAME); }
答:卸载模块时调用leds_exit()函数,执行后设备处于空闲状态。此函数的功能是完成本设备文件系统的注销和本设备的注销。
4、用insmod命令加载模块时,调用什么函数加载模块?用rmmod命令来卸载模块时,调用什么函数卸载模块? 答:用insmod命令加载模块时,调用module_init(),而在module_init()中调用register_chrdev()完成字符设备注册;用rmmod命令来卸载模块时,会调用module_exit()函数,而在module_exit()函数中调用unregister_chrdev()来完成设备的注销。
嵌入式系统linux 模拟参考题
一、选择题
1、如下哪一个命令可以帮助你知道shell命令的用法: A man B pwd C help D more
答案:A
2、Linux分区类型默认的是: A. vfat
B. ext2/ext3 C. swap D. dos
答案:B
3. 下列哪种循环shell不能处理: A For B loop C while D until
答案: B
4、下面哪条命令可用来确保文件“myfile”存在 : A. cp myfile /dev/null B. touch myfile C. create myfile D. mkfile myfile
答案: B
5、 LILO的配置文件是: A. /etc/conf
B. /etc/lilo.conf C. /proc/kcore D. /usr/local/
答案: B
6、删除文件命令为:
A. mkdir B. rmdir C. mv D. rm 答案: D
7、用“useradd jerry”命令添加一个用户,这个用户的主目录是什么: A./home/jerry B./bin/jerry C./var/jerry D./etc/jerry
答案: A
8、不是shell具有的功能和特点的是:
A 管道 B 输入输出重定向 C 执行后台进程 D 处理程序命令
答案: A
9、在下列ARM处理器的各种模式中,只有_____模式不可以可以自由地改变处理器的工作模式。
A、用户模式(User)
B、系统模式(System) C、终止模式(Abort) D、中断模式(IRQ)
答案:A
10、如何从当前系统中卸载一个已装载的文件系统: A. umount B. dismount
C. mount –u D. 从 /etc/fstab 中删除这个文件系统项
答案: A 11、()命令可更改一个文件的权限设置?
A. attrib B. chmod C. change D. file
答案: B
12、用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为: -rwxr-xr-- 1 root root 599 Cec 10 17:12 ff
A. 普通文件 B. 硬链接 C. 目录 D. 符号链接 硬链接是一个指针,如果是硬链接则会显示大于2的数 答案: A
13、字符设备文件类型的标志是:
A. p B. c C. s D. l 答案: B
14、系统中有用户user1和user2,同属于users组。在user1用户目录下有一文件file1,它拥有644的权限,如果user2用户想修改user1用户目录下的file1文件,应拥有( )权限。
A. 744 B. 664 C. 646 D. 746 644-110100100,表示自己可读可写,同组及其它可读。如果同组用户希望对本组其它用户的文件可读可写,则应该在组文件处拥有6权限。110110100 答案: B
15、下列关于/etc/fstab文件描述,正确的是: A. fstab文件只能描述属于linux的文件系统 B. CD_ROM和软盘必须是自动加载的
C. fstab文件中描述的文件系统不能被卸载 D 启动时按fstab文件描述内容加载文件系统
答案: D
16. 下列表达式或语句只存在于tcsh中的是:
相关推荐: