嵌入式驱动开发期末复习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 系统为显示设备提供的一个接口,它将显示缓冲

区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接显示缓冲

区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧

缓冲设备驱动本身来完成。于帧缓冲设备而言,只要在显示缓冲区中与显示点应

的区域写入颜色值,应的颜色会自动在屏幕上显示

综合题

相关文档
最新文档