第六章
Linux系统将每个驱动都映射成一个文件,这些文件称为设备文件或驱动文件,都保存在/dev目录中。
编写Linux驱动程序的步骤:
一、建立Linux驱动骨架(装载和卸载Linux驱动);
Linux内核在使用驱动时首先需要装载驱动。在装载过程中需要进行一些初始化工作。当 Linux系统退出时需要卸载Linux驱动,在卸载的过程中需要释放Linux驱动占用的资源。
二、注册和注销设备文件:
任何一个Linux驱动都需要有一个设备文件,否则应用程序将无法与驱动程序交互。可以分别使用misc_register和misc_deregister函数创建和移除设备文件。
三、指定与驱动相关的信息:
驱动程序是白描述的。可以通过modinfo命令获取驱动程序的相关信息。
四、指定回调函数:
一个驱动程序并不一定要指定所有的回调函数。回调函数会通过相关机制进行注册。
五、编写业务逻辑:
这一步是Linux驱动的核心部分。光有骨架和回调函数的Linux驱动是没有任何意义的。具体的业务逻辑与驱动的功能有关。业务逻辑可能由多个函数、多个文件甚至是多个Linux驱动模块组成。
六、编写Makefile文件:
Linux内核源代码的编译规则是通过Makefile文件定义的。因此编写一个新的 Linux驱动程序必须要有一个Makefile文件。
七、编译 Linux 驱动程序:
Linux驱动程序可以直接编译进内核,也可以作为模块单独编译。
八、安装和卸载 Linux 驱动:
将Linux驱动编译进内核,只要Linux使用该内核,驱动程序会自动装载。如果Linux驱动程序以模块单独存在,需使用insmod或modprobe命令装载Linux驱动模块,使用rmmod命令卸载Linux驱动模块。