1.近期一直在从事linux设备驱动开发/教学/研究工作,如果是嵌入式方向更好,有参与linux内核社群的开发经验尤佳;
2.阅读过2.6版的内核驱动框架的代码和个别具体设备驱动的代码,熟悉相关的内核数据类型、内核数据结构、辅助宏、及GNU GCC扩展标签等;
3.熟悉面向总线系统的设备驱动开发,而不是仅仅是单独设备驱动的编写。有编写全新设备驱动(非移植或修改)的经验更好;
4.熟悉linux驱动开发的基础知识,包括:模块、内存操作、DMA、中断操作、竞态保护、IOCTL、系统调用等;
5.熟悉驱动调试的方法和技巧,包括:交叉编译环境的调试,内核调试,模块调试,中断调试,跨越用户态和内核态的调试等;
6.对linux内核中设备驱动子系统的整体框架有深刻了解,具体包括:熟悉内核启动的工作机制,即从head.o入口到进入init主进程之间,系统是如何引导的,如何发现设备,驱动总线控制器,挂载相应驱动;熟悉2.5版起引入的linux device model,理解其引入的目的,构成框架,及正确有效的使用方法。