博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第六章
阅读量:6233 次
发布时间:2019-06-21

本文共 1148 字,大约阅读时间需要 3 分钟。

编写Linux驱动程序步骤如下:

一、建立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命令卸载该模块。

http://i.cnblogs.com/EditPosts.aspx?opt=1

 

转载于:https://www.cnblogs.com/wstone/p/5560700.html

你可能感兴趣的文章
怎样修复“Windows/System32/Config/System中文件丢失或损坏”故障
查看>>
C#:控制台程序调用中间库创建窗体
查看>>
运用Android ROM Manager应用安装ClockworkMod Recovery的详细教程
查看>>
selenium-Locating Elements
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单...
查看>>
如何定时备份远程mysql数据库
查看>>
【行业翘楚】井田云:化解线上线下冲突让鱼与熊掌皆得
查看>>
System.currentTimeMillis();
查看>>
keil中的存储模式
查看>>
jQuery EasyUI API 中文文档 - Panel面板
查看>>
egrep 查找IP
查看>>
从子集和问题的动态规划解看判断问题与优化问题的区别与联系
查看>>
Effective C++:条款28:避免返回 handles 指向对象内部成员
查看>>
gulp-notify处理报错----gulp系列(二)
查看>>
浅谈OCR之Onenote 2010
查看>>
Android SDK打包
查看>>
yii url美化 urlManager组件
查看>>
数据库(表)的逻辑备份与恢复
查看>>
SQL SERVER 2005允许自定义聚合函数-表中字符串分组连接
查看>>
linux內核輸出soft lockup
查看>>