看了这么多linux驱动的书,也看了几个项目的代码,总结linux驱动有以下几点模式:
因为在编写驱动时,相当于将自己的设备功能和内核中的驱动接口衔接起来,所以,相当于面向接口编程的思想模式:
所以在编写驱动时,只要实现以下几个接口(一般以结构数据形式表示),就完成了驱动的基本功能。
1.设备接口实现(包含设备的一些基本信息,在这个接口结构中,一般包含内核的字符设备结构)
2.驱动接口实现(驱动的接口里面定义了一些驱动安装,卸载的方法,还有设备检测,初始化的实现方法,最后一般包含该种设备接口属性)
3.文件操作接口实现(这个一般都是file_operation 结构体,实现里面的基本函数即可)
4.最后就是,驱动的初始化和退出,初始化里面包含了驱动的注册,驱动结构的内存分配,与设备号,还有文件操作结构的绑定,这个环节一般都是最后那两个moudle函数来实现。