编写linux驱动程序步骤
来源:互联网 发布:jdk 7u40 linux x64 编辑:程序博客网 时间:2024/06/05 13:53
一、建立Linux驱动框架(装载、卸载Linux驱动)
Linux内核在使用驱动时首先要装载驱动,在装载过程中进行一些初始化动作(建立设备文件、分配内存等),在驱动程序中需提供相应函数来处理驱动初始化工作,该函数须使用module_init宏指定;Linux系统在退出是需卸载Linux驱动,卸载过程中进行一些退出工作(删除设备文件、释放内存等),在驱动程序中需提供相应函数来处理退出工作,该函数须使用module_exit宏指定。Linux驱动程序一般都要这两个宏指定这两个函数,所以包含这两个宏以及其所指定的两个函数的C程序可看作是Linux驱动的框架。
二、注册和注销设备文件
任何Linux驱动都需要有一个设备文件来与应用程序进行交互。建立设备文件的工作一般在上一步module_init宏指定的函数中完成的,可以使用misc_register函数创建设备文件;删除设备文件的工作一般在上一步module_exit宏指定的函数中完成的,可以使用misc_deregister函数删除设备文件。
三、指定驱动相关信息
驱动程序是自描述的,驱动程序的信息需要在驱动源代码中指定。通过MODULE_AUTHOR(作者姓名)、MODULE_LICENSE(使用的开源协议)、MODULE_ALIAS(别名)、MODULE_DESCRIPTION(驱动描述)等宏来指定与驱动相关的信息,这些宏一般写在驱动源码文件的结尾。可通过modinfo命令获取这些信息。
四、指定回调函数
Linux驱动包含了很多动作,也称为事件,如“读”“写”事件,触发相应事件时Linux系统会自动调用对于驱动程序的相应回调函数。一个驱动程序不一定要指定所以的回调函数。回调函数通过相关机制进行注册。如与设备文件相关的回调函数使用misc_register函数注册。
五、编写业务逻辑
没什么可说的,总不能注册一些空的回调函数,什么也不做吧。
六、编写Makefile文件
Linux内核源码的编译规则是通过Makefile文件定义的,每个Linux驱动程序必须要有一个Makefile文件。
七、编译Linux驱动程序
Linux驱动程序可直接编译进内核(使用obj-y编译),也可以作为模块单独编译(使用obj-m编译)。
八、安装和卸载Linux驱动
如果将驱动编译进内核,只要Linux使用该内核,驱动程序就会自动装载。如果Linux驱动程序以模块单独存在,需要使用insmod或modprobe命令装载Linux驱动模块,使用rmmod命令卸载该模块。
- 编写linux驱动程序步骤
- 编写Linux驱动程序的步骤
- 编写Linux驱动程序三步骤
- 在Linux下使用自己编写的驱动程序详细步骤
- linux驱动程序开发步骤
- linux驱动程序基本步骤
- Linux网卡驱动程序编写
- Linux网卡驱动程序编写
- linux驱动程序的编写
- Linux驱动程序编写
- Linux网络驱动程序编写
- Linux设备驱动程序编写
- 编写linux设备驱动程序
- Linux网络驱动程序编写
- Linux驱动程序编写
- Linux驱动程序编写
- Linux设备驱动程序编写
- Linux驱动程序编写
- 纯CSS制作三角形的原理
- Json对象与Json字符串互转(4种转换方式)
- EAS 客户端缓存清理
- swap分区
- 抽象工厂模式-Abstract Factory Pattern 工厂三兄弟之抽象工厂模式(二):产品等级结构与产品族
- 编写linux驱动程序步骤
- 段错误调试神器—Core Dump详解
- Eclipse Maven项目java resource 报错,有个红叉
- <meta http-equiv="X-UA-Compatible" content="IE=Edge">
- python 断点调试 pdb
- MBR分区
- 第一次来,多多关照
- 学习CSS3 3D转换,制作一个3D立方体
- AsyncTask源码分析