编写Linux驱动程序的步骤

建立Linux驱动骨架

 任何类型的程序都有一个基本结构。Linux内核在使用驱动时首先需要装载驱动。在装载过程中需要进行一些初始化工作。当Linux系统退出时需要卸载Linux驱动,在卸载的过程中需要释放由Linux驱动占用的资源。在Linux驱动程序中需要提供两个函数来分别处理驱动初始化和退出的工作。这两个函数分别用 module_init 和 module_exit 宏指定。Linux驱动程序一般都需要指定这两个函数,因此包含这两个函数及指定这两个函数的两个宏的C程序文件也可以看作是Linux驱动的骨架。

注册和注销设备文件

任何一个Linux驱动都需要有一个设备文件,否则应用程序将无法与驱动程序交互。建立设备文件的工作一般在第1步编写的处理Linux初始化工作的函数中完成。删除设备文件一般在第1步编写的处理Linux退出工作的函数中完成。可以分别使用 misc_register 和 misc_deregister 函数创建和移除设备文件。

指定与驱动相关的信息

驱动程序是处描述的。例如,可以通过 modinfo 命令获取驱动程序的作者姓名、使用的开源协议、别名、驱动描述等信息。这些信息都需要在驱动源代码中指定。通过 MODULE_AUTHOR、MODULE_LICENSE、MODULE_ALIAS、MODULE_DESCRIPTION 等宏可以指定与驱动相关的信息。

指定回调函数

Linux驱动包含了多种动作,也可以称为事件。例如,向设备文件写入数据时会触发“写”事件,Linux系统会调用对应驱动程序的write回调函数,从设备文件读数据时会触发“读”事件,Linux系统会调用对应驱动程序的read回调函数。一个驱动程序并不一定要指定所有的回调函数。回调函数。回调函数会通过相关机制进行注册。例如,与设备文件相关的回调函数会通过 misc_register 函数进行注册。

编写业务逻辑

这一步是Linux驱动的核心部分。光有骨架和回调函数的Linux驱动是没有任何意义的。任何一个完整的Linux驱动都会做一些与其功能相关的工作,COM驱动会根据传输速率进行数据交互。具体的业务逻辑与驱动的功能有关。业务逻辑可能由多个函数、多个文件甚至是我个Linux驱动模块组成。

编写Makefile文件

Linux内核源代友的编译规则是通过Makefile文件定义的。因此编写一个新的Linxu驱动程序必须要有一个Makefie文件。

编译Linux驱动程序

Linux驱动程序可以直接编译进内核,也可以作为模块单独编译。

安装和卸载Linux驱动

如果将Linux驱动编译进内核,只要Linux使用该内核,驱动程序就会自动装载。如果Linux驱动程序以模块化单独存在,需要使用insmod 或  modprobe 命令装载Linux驱动模块,使用 rmmod命令卸载Linux驱动模块


在以上8个步骤中前5步是关于如何编写Linux驱动程序的,后面3步是使用Linux驱动正常工作的。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值