物联网嵌入式系统练习题1
一、单项选择题 1. PXA270 处理器是多少位的嵌入式处理器()。 A.8 位B.16 位C.32 位D.64 位 2. ARM 处理器属于下列哪种嵌入式处理器()。 A.MCUB.EMPUC.DSPD.SOPC 3. 下列几种 ARM 工作模式中属于正常模式的是()。 A.系统模式B.数据中止模式 C.未定义模式D.快速终端模式模式 4. 下列几种 ARM 异常中优先级最高的是()。 A.外部中断(IRQ)B.数据中止 C.预取指令中止D.未定义指令 5. ARM 汇编语句“STMIA R0,{R3-R10}”的作用是()。 A.R0 开始的连续 8 个字数据分别加载到 R3-R10 B.R0 地址指向的 1 个字数据分别重复加载到 R3-R10 C.R0 开始的连续 8 个字节数据分别加载到 R3-R10 D.R3-R10 中的 8 个字数据存储到 R0 开始的连续存储单元 6. 寄存器 R14 除了可以做通用寄存器外,还可以做()。 A.程序计数器B.链接寄存器 C.栈指针寄存器D.基址寄存器 7. 下列不是 ARM 伪指令可定义的变量的是()。 A.数值型变量B.逻辑型变量 C.布尔型变量D.字符型变量 8. 嵌入式系统 Bootloader 的 stage1 引导启动时在哪个存储器件中运行 () 。 A.硬盘B.RAMC.ROMD.存储卡 9. 下列进行内核配置的命令中使用已有配置文件.config 进行配置的是()。 A.make configB.make menuconfig C.make oldconfigD.make xconfig 10. 下列嵌入式文件系统中仅适用于 NAND 型 Flash 的是()。 A.jffs2B.yaffsC.cramfsD.NFS 11. Linux 内核提供了内核与用户空间传递数据的专用函数,其中用于实现用 户系统调用 write 的是()。 A.copy_to_user(void *from,void *to,int n) B.copy_to_user(void *to,void *from,int n) C.copy_from_user(void *from,void *to,int n) D.copy_from_user(void *to,void *from,int n) 12. 以下关于设备号的说法不正确的是()。 A.设备号有主设备号和从设备号 第 1 页 共 12 页 B.主设备号说明设备的属性,比如字符设备或块设备,从设备号说明设 备类型。 C.可用 MINOR 从设备号中分理处从设备号。 D.设备号的申请可以静态申请,也可以动态申请,静态申请是申请指定 的设备号。 13. ARM 处理器的 Thumb 工作状态是()。 A.16 位字对齐B.32 位字对齐 C.16 位半字对齐D.16 位字节对齐 14. 若 R1=2000H,(2000H)=0 x86,(2008H)=0 x39,则执行 LDR R0,[R1]!, #8 后 R0 的值为()。 A.0 x2000B.0 x86C.0 x2008 D.0 x39 15. 寄存器 R15 除了可以做通用寄存器外,还可以做()。 A.程序计数器B.链接寄存器 C.栈指针寄存器D.基址寄存器 16. ARM 汇编语句“ADDR0,R2,R3,LSL#1”的作用是()。 A.R0 = R2 + (R3 private_data; /*获得设备结构体指针*/ „„/*判断写位置是否有效*/ if (copy_from_user(dev-data + p, buf, count)) /*从用户空间写入数据*/ ret =- EFAULT; else{„„}} static loff_t mem_llseek(struct file *filp, loff_t offset, int whence) /* seek 文件定位函数 */ {loff_t newpos; switch(whence) { case 0: newpos = offset; /* SEEK_SET */ break; case 1: newpos = (8); /* SEEK_CUR */ break; case 2: newpos = (9); /* SEEK_END */ break; default: /* can t happen */ return -EINVAL; } filp-f_pos = newpos; return newpos;} static const struct file_operations mem_fops =/*文件操作结构体*/ {.owner = THIS_MODULE, .llseek = (5), .read =(6), .write = mem_write, .open = mem_open, .release = mem_release,}; static int memdev_init(void) /*设备驱动模块加载函数*/ {int result; int i; dev_t devno = MKDEV(mem_major, 0); if (mem_major) result =(1);/* 静态申请设备号*/ else {result =(2); /* 动态分配设备号 */ mem_major = MAJOR(devno); } if (result led1_val; buff=buff|( seg_7-led2_val led3_val; buff=(1) (2) „„//第三个数码管地址的写入 return; break; default: printk(KERN_EMERG“ioctl parameter error,please number 0-6“); break; } Updateled( seg_7 ); return 0; } static int Emdoor_8Seg_open(struct inode *inode, struct file *filp) {struct seg *seg_7; seg_7=kmalloc(sizeof(struct seg), GFP_KERNEL); seg_7-negative=LED_MODULE; filp-private_data=(4); MOD_INC_USE_COUNT; return 0; } static int Emdoor_8Seg_release(struct inode *inode, struct file *filp) {(5) MOD_DEC_USE_COUNT; return 0; } static struct file_operations Emdoor_fops = { open:Emdoor_8Seg_open, write:Emdoor_8Seg_write, release: Emdoor_8Seg_release, ioctl:(6) owner: THIS_MODULE, }; static int __init Emdoor_