嵌入式驱动开发期末复习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、嵌入式Linux的设备文件的属性是由3部分信息组成的,它们分别是
2、字符型设备主设备号的添加和注销分别通过调用函数register_chrdev和unregister_chrdev
来实现,这两个函数原型在linux/fs.h 文件说明。
3、假定目标板的/lib目录下有模块文件leds.o,该目录也是用户的当前目录,则可以使用$insmod /lib/leds.o 命令安装leds.o模块,使用$rmmod leds.o 删除该模块。
4、Linux驱动程序的加载有两种方式,一种是静态加载方式,另一种是动态加载方式。
5、Makefile文件中的命令行必须以Tab 键开头,否则报语法错。
6、搭建嵌入式开发环境,连接目标板,一般使用ftp 、 nfs、串口调试方
式连接。
7、mini6410开发板触摸屏驱动使用了input框架。
8、块设备以块为单位传输数据。
9、信号量的物理意义是当信号量值大于零时表示可分配资源的个数;当信号量值小于零
时表示等待该资源的任务的个数。
选择题
1、关于交叉编译描述正确的是 D 。
A. 编译器运行在目标机,生成的可执行文件在宿主机上运行
B.编译器运行在宿主机,生成的可执行文件在宿主机上运行
C.编译器运行在目标机,生成的可执行文件在目标机上运行
D.编译器运行在宿主机,生成的可执行文件在目标机上运行
2、Linux网络设备驱动中用于在Linux网络子系统中的各层之间传递数据的数据结构为 B A.net_device B. sk_buff C. net_dev D. skb
3 有关Linux内核裁剪下列说法错误的是 B 。
A.可以使用make menuconfig命令进行内核的配置
B. 所有的配置项都可以按以编译入内核,编译成模块,不编译三种方式配置
C.使用make zImage命令会编译生成内核镜像文件zImage
D. 嵌入式Linux内核编译时应该采用交叉编译器
4、不需要编译内核的情况是 D 。
A 删除系统不用的设备驱动程序时
B 升级内核时
C 添加新硬件时
D 将网卡激活
5、RTC属于 A 总线设备。
A.platform
B.PCI
B
D.SPI
6、Linux文件系统的目录结构是一棵倒挂的树,文件都按其作用分门别类地放在相关的目
录中。现有一个外部设备文件,它应该在 C 目录中。
A./bin
B./etc
C./dev
D./lib
7、用下列 A 命令可以查看Linux驱动程序注册时自动分配的主设备号。
A. cat /proc/devices
B. cat /bin/devices
C. vi /proc/devices
D. vi /user/local/devices
8、使用 B 命令可以查看程序hello是基于哪一种体系结构指令集编译的。
A. cat hello
B. vi hello
C. ./hello
D. file hello
9、NAND FLASH和NOR FLASH的区别正确的是 D 。
A. NOR的读速度比NAND稍慢一些
B. 大多数写入操作需要先进行擦除操作
C. NAND的擦除速度远比NOR的慢
D. NAND的写入速度比NOR慢很多
判断对错题
1、手写板属于典型的块设备。错手写板属于字符设备
2、Linux 2.6内核中以模块方式加载的驱动程序后缀名为.ko。对
3、内核空间和用户空间引用相同的内存映射。错
模块运行的空间称为“内核空间”,而应用程序运行的则是在“用户空间”中。它们分别引用不同的内存映射,也就是程序代码使用不同的“地址空间”。
4、Linux系统中的设备可以看作是一种特殊的文件。对
简答题
1、Linux设备驱动程序通过调用request_irq函数来申请中断,通过free_irq来释放中断。它们在linux/sched.h中的定义如下:
int request_irq(unsigned int irq, void (*handler)(int irq,void dev_id,struct pt_regs *regs),unsigned long flags, const char *device, void *dev_id );
void free_irq(unsigned int irq, void *dev_id);
试简述request_irq函数的使用方法。
Linux设备驱动程序通过调用request_irq函数来申请中断,从request_irq函数返回的值为0时,表示申请成功;负值表示出现错误。
该函数中的参数为:
irq表示所要申请的硬件中断号。
handler为向系统登记的中断处理子程序,中断产生时由系统来调用,调用时所带参数irq为中断号,dev_id为申请时告诉系统的设备标识,regs为中断发生时寄存器内容。
device为设备名,将会出现在/proc/interrupts文件里。
flag是申请时的选项,它决定中断处理程序的一些特性,其中最重要的是决定中断处理程序是快速处理程序(flag里设置了SA_INTERRUPT)还是慢速处理程序(不设置SA_INTERRUPT)。
2、简述数据结构file_operations的作用。
linux的内核内部通过file结构识别设备,通过file_operations数据结构提供文件系统的入口点函数,也就是访问设备驱动的函数。这个数据结构的每一个成员的名字都对应着一个系统调用。在用户进程利用系统调用对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数,这就是Limux的设备驱动程序的工作原理。在file_operations数据结构中,指出了设备驱动程序所提供的入口点位置。
3、试描述framebuffer的运行机制?
帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲
区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接显示缓冲
区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧
缓冲设备驱动本身来完成。于帧缓冲设备而言,只要在显示缓冲区中与显示点应
的区域写入颜色值,应的颜色会自动在屏幕上显示
综合题