几个Linux驱动面试题目

这几天面试几个想做安卓Linux驱动的,总体感觉上驱动基础还是比较薄弱,大部分情况是虽然做过驱动,但是基本上都是采用内核现成的,或者是开发板上已经有的,单独写过模块驱动很少,驱动机制理解不是很透彻.以下是几个随口问过的基础问题,供参考.
  1、字符型驱动设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的?
  2、写一个中断服务需要注意哪些?如果中断产生之后要做比较多的事情你是怎么做的?
  3、自旋锁和信号量在互斥使用时需要注意哪些?在中断服务程序里面的互斥是使用自旋锁还是信号量?还是两者都能用?为什么?
  4、原子操作你怎么理解?为了实现一个互斥,自己定义一个变量作为标记来作为一个资源只有一个使用者行不行?
  5、insmod 一个驱动模块,会执行模块中的哪个函数?rmmod呢?这两个函数在设计上要注意哪些?遇到过卸载驱动出现异常没?是什么问题引起的?
  6、在驱动调试过程中遇到国oops没?你是怎么处理的?
  7、ioctl和unlock_ioctl有什么区别?
  8、设备驱动模型三个重要成员是?platfoem总线的匹配规则是?在具体应用上要不要先注册驱动再注册设备?有先后顺序没?
  这些应该都是比较基础的问题吧,但是从实际情况上来看,回答的都不是很正确。


最新内容请见作者的GitHub页:http://qaseven.github.io/
上一篇:将图像转成HTML文件,VB.net源代码


下一篇:《SolidWorks 2017中文版机械设计从入门到精通)》——第2章 草图绘制2.1 基础知识