本人刚学linux驱动不久,把这段时间学习的一些总结体会写出来,以起到抛砖引玉的作用,根据学习的加深,我会持续写出来。
1. 如果要对设备进行有读写控制,字符设备要实现cDev结构,块设备要实现gendisk结构。
2. 驱动模型提供标准的通用的管理设备的框架、方法,把我们的驱动按照驱动模型的框架来构造,方法统一,很多重复代码不需要重复编写,节省开发时间。
3. 如果要在驱动模型框架下构造我们的设备驱动程序,在构造前,首先分析该设备需要驱动模型中那些组件的支持,以下是我分析总结的组件使用策略:
3.1 如果需要设备节点自动生成,需要实现class.
3.2 如果需要功耗(电源)管理(休眠和唤醒):需要实现bus,device,driver.
3.3 如果要实现设备的自动探测和卸载:需要实现bus,device,driver。
linux系统已经实现了很多驱动,当我们添加新的驱动时,如果系统中某一已存在驱动类型,最好和该驱动类实现策略保持一致,这样可以使用已有的成熟框架,使驱动可靠,另外和系统结合更紧密。