1、c/c++精通
2、熟悉内核(查找内核函数轻车熟路)
3、操作系统工作原理
4、能够读得懂硬件datasheet
5、一定要会使用分析时序的软件,不然会很不方便
6、实践,在实践中遇到问题解决问题才能更快的成长
二、首先驱动中经常需要分配物理内存,应该至少注意以下几点:
1,该物理内存是否能经过cache(如Framebuffer)
2,该物理内存分配时是否能睡眠
3,如果频繁分配,可以考虑用SLAB机制
4,在操作IO MM时,在映射之前应该要先申请
其次驱动程序的开发应该还要考虑到 对共享资源的保护(如spin_lock),特别要有完善的出错处理。
三、第三还要理解驱动模型: 总线 设备 驱动, 并熟悉多种总线子系统(PCI, USB , PLATFORM等)以及功能子系统(如网络,framebuffer, input等)。
最后还要熟悉多种硬件(datasheet)以及多参加项目,多写……
内容:
嵌入式处理器和开发板、构建嵌入式驱动程序开发环境、构建嵌入式linux操作系统、第一个驱动程序、简单的字符设备驱动程序等内容;第2篇介绍了设备驱动中的并发控制、阻塞和同步机制、中断与时钟机制、内存访问等内容;第3篇介绍了设备驱动模型、rtc实时时钟驱动程序、看门狗驱动程序、iic设备驱动程序、lcd设备驱动程序、触摸屏设备驱动程序、输入子系统驱动程序、块设备驱动程序、usb设备驱动程序等内容。