第一步:建立Linux驱动的骨架
linux内核使用驱动时候,需要先初始化,包括建立设备文件,分配内存地址空间等,退出的时候要释放资源,删除设备文件,释放内存地址空间等。所以在linux驱动中需要提供两个函数来分别处理驱动初始化和退出的工作,这两个函数分别用module_init和module_exit宏来指定,linux驱动一般都需要指定这两个函数,所以linux驱动有一个C文件,文件中包含处理驱动初始化和退出的函数,以及指定这两个函数的module_init和module_exit宏.
第二步:注册和注销设备文件
任何一个驱动都有设备文件,misc_register,misc_deregister
第三步:指定与驱动相关的信息
驱动程序带自描述内容,比如用modinfo可以获取包括作者名称,版本号等等,有MODULE_AUTHOR,MODULE_LICENSE,MODULE_ALIAS,MODULE_DESCRIPTION等宏
第四步:指定回调函数
linux驱动的各个动作也可称为事件,这些时间就有相应的回调函数,
第五步:编写功能逻辑
编写程序,来实现该驱动所要求达到的功能,可以由多个函数/多个文件/甚至多个模块组成
第六步:编写Makefile
一个新的驱动程序必须要有一个Makefile,obj-m表示将驱动作为模块