华清__初级驱动试题.doc_第1页
华清__初级驱动试题.doc_第2页
华清__初级驱动试题.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

驱动基础试题(时间:个小时)一、 选择题(每题 4 分,共 40 分,包括单选和多选,多选、少选均不得分)1.Linux系统中将设备进行分类管理,下列设备中( ACD )属于字符设备, ( BC)属于块设备 A 键盘B 硬盘 C 闪存设备D 帧缓存设备E 网卡2. Linux系统中,内核以( D)区分设备A 设备节点名B 设备类名称C 设备名称 D 设备号3. Linux系统中设备节点可以创建在(D )A /dev目录下B 根目录下C /tmp目录下D 以上都可以4. Linux驱动程序运行在( A )A 内核空间B 用户空间C 内核空间和用户空间5. Linux系统中设备驱动程序是以模块形式组的,编译驱动时可以用哪种方式编译( AB )A 静态编译进内核B 动态编译6. Linux 2.6.35 内核中,设备的主设备号用( B )位来表示,次设备号用( D)位来表示A8B 12C16 D 20E 24F 327. Linux系统中哪些种类的设备有设备节点( BC )A 定时器B 字符设备C 块设备D 网络设备8. 通常情况下,kmalloc函数能分配的最大内存是( C )A 4KB 64KC128KD 4M9. 能保证物理空间上连续的内存分配函数是( AB )A_get_free_pagesB kmallocC vmallocD malloc10. Linux系统中通过add_timer 添加的timer是( A )A 一次的B 循环的C 以上两种都可以二、简答题(每题 6 分,共60 分)1. Linux系统中以模块方式组织设备驱动程序,请列举在一个模块程序中必不可少的组成部分。 (可以写个Hello world模块的程序)#include #include #include static int _init fsmod_init(void)printk(KERN_INFO Hello, Farsight!n);return 0;static void _exit fsmod_exit(void)printk(KERN_INFO Goodbye, Farsight!n);module_init(fsmod_init);module_exit(fsmod_exit);MODULE_LICENSE(Dual BSD/GPL);MODULE_AUTHOR(Kevin Jiang );MODULE_DESCRIPTION(This is an example for linux driver module);2. 请从定义、性质、操作方式等方面对比说明字符设备和块设备。属性/类别块设备字符设备访问单位/次有固定大小无固定大小随机访问(lseek)支持不支持用户直接访问不可以可以驱动程序复杂相对简单字符设备指哪些必须以串行顺序依次进行访问的设备,字符设备不经过系统系统的快速缓冲,而块设备经过系统的快速缓冲。3. 请列举Linux设备驱动程序中,中断底半步机制。Tasklet,工作队列,软中断4. 简述Linux设备驱动中使用中断的步骤。request_irq,申请irq;free_irq,释放irq。另:申请中断使能或者屏蔽中断设置中断处理函数释放中断5. 简述信号量和自旋锁的异同和使用时的注意事项。信号量和自旋锁都是解决互斥问题的基本手段,信号量的实现依赖于自旋锁。使用信号量机制时,进程若不能获得信号量,进程不会如自旋锁那样原地打转,而是让进程进入休眠等待状态。当使用信号量的开销时间T1大于使用自旋锁的开销T2时,宜使用自旋锁,若T2大于T1,则宜使用信号量。由于信号量所保护的临界区可能包含引起阻塞的代码,而自旋锁则绝对要避免用来保护这样的代码。信号量存在于进程上下文,而如果被保护的资源需要在中断或者软中断情况下使用,则只能选择自旋锁。详见linux设备驱动详解(宋宝华第二版)P1556. 简述命令 mknod /dev/zero c 1 5 的做用和命令各个部分的含义,并写出创建一个块设备节点的命令。mknod,该命令用于创建设备节点。/dev/zero表示设备节点创建的目录和名字,c代表创建的设备节点为字符设备节点,1代表主设备号,5代表此设备号。创建块设备节点的命令:mknod/dev/one b 200 07. 简述命令insmod,rmmod,lsmod 的功能。insmod:加载驱动模块到内核;rmmod:从内核删除驱动模块;lsmod:查看当前内核包含哪些驱动模块。8. 驱动程序中采用动态申请设备号的,我们如何得到对应设备的设备号?cat proc/dervices9. 简述设备驱动程序和普通应用程序的异同点。不同点:驱动运行于内核,应用程序在用户空间;应用程序能调用C库;应用程序顺序执行,驱动被动的接受调用;应用程序的栈很大,驱动很小,通常4k;应用程序可以做浮点运算,驱动中很少做浮点运算(并不是绝对不能)。10. 简述如何将一个字符设备驱动改造为platform驱动,并说明匹配的过程。首先:定义一个platform_driver结构体,对probe和remove函数指针进行初始化,对driver里面的成员.owner,.name进行初始化;第二:在模块的初始化函数中调用platform_drive_registe()初始化这个驱动,在卸载模块中调用platfrom_driver_unregister()注销这个驱动;第三:将驱动中实用的设备资源信息通过传递进来的platform_device结构体指针获取。还有平台设备添加,一种是:用platform_device手动编码;另一种是在设备树中添加一个节点。匹配过程:一种是:如果是平台设备与平台驱动的匹配以名字匹配,平台总线

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论