- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux 设备驱动程序之读书笔记
说明
笔记适用于 Linux 的 2.6.10 以后的内核。
笔记以 Linux Device Driver3 提供的 scull 程序 (scull 目录中的 main.c 和
scull.h) 为记录主线,并以该驱动程序中的各种系统调用和函数调用流程为记录
顺序。比如, module_init( ) 和 module_exit( ) 为相对应的一对系统调用,一
般书籍中都会放在一起讨论, 但是本笔记却不会这样, 而是在需要调用的时候才
会涉及,因此 module_init( ) 会放在笔记开始时,也就是刚加载 module 时讨
论,而 module_exit( ) 则会放在笔记结束前,也就是要卸载 module 时再加以
讨论。
该笔记的的目的是为了对 Linux Device Drvier3 中提到的各个知识点作一下整
理,理清一下头绪, 从而能让我对 Linux 驱动程序加深整体或者全局上的理解。
注:个人理解,有误难免! —— 笔者:曹荣荣
*******************************************
驱动程序 module 的工作流程主要分为四个部分:
1 、 用 Linux 提供的命令加载驱动 module
2 、 驱动 module 的初始化(初始化结束后即进入 “潜伏 ”状态,直到有系统
调用)
3 、 当操作设备时, 即有系统调用时, 调用驱动 module 提供的各个服务函数
4 、 卸载驱动 module
一、 驱动程序的加载
Linux 驱动程序分为两种形式:一种是直接编译进内核,另一种是编译成
module 形式,然后在需要该驱动 module 时手动加载。对于前者,还有待学
习。
Module 形式的驱动,Linux 提供了两个命令用来加载: modprobe 和 insmod 。
其中 modprobe 可以解决驱动 module 的依赖性,即假如正加载的驱动
module 若引用了其他 module 提供的内核符号或者其他资源,则 modprobe
就会自动加载那些 module ,不过,使用 modprobe 时,必须把要加载的驱动
module 放在当前模块搜索路径中。而 insmod 命令不会考虑驱动 module 的
依赖性,但是它却可以加载任意目录下的驱动 module 。
一般来说,在驱动开发阶段, 使用 /sbin/insmod 比较方便,因为不用将 module
放入当前 module 搜索路径中。
一旦使用 insmod 加载模块,则 Linux 内核就会调用
module_init(scull_init_module) 特殊宏,其中 scull_init_module 是驱动初
始化函数,可自定义名称。
在用 insmod 加载 module 时,还可以给 module 提供模块参数,但是这需要
在驱动源代码中加入几条语句,让模块参数对 insmod 和驱动程序可见,如:
static char *whom= ”world;”
static int howmany=10;
module_param(howmany,int,S_IRUGO);
module_param(whom,charp,S_IRUGO);
这样,当使用 /sbin/insmod scull.ko whom= ”string
您可能关注的文档
- Linux与Windows的比较及课程感想扫描.pdf
- Linux与Windows的比较与课程感宣贯.pdf
- Linux中断处理过程浅析借鉴.pdf
- LINUX中软中断的实宣贯.pdf
- linux中硬件基础与软件基础定义.pdf
- Linux主机驱动与外设驱动分离思想借鉴.pdf
- Linux主要shell命令详实用.pdf
- Linux字符设备驱动程序实验收集.pdf
- linux字符设备驱动学习笔实用.pdf
- linux最常用命令参考.pdf
- 中国国家标准 GB 14287.5-2025电气火灾监控系统 第5部分:测量热解粒子式电气火灾监控探测器.pdf
- 《GB/T 42706.4-2025电子元器件 半导体器件长期贮存 第4部分:贮存》.pdf
- GB/T 42706.4-2025电子元器件 半导体器件长期贮存 第4部分:贮存.pdf
- 中国国家标准 GB/T 42706.4-2025电子元器件 半导体器件长期贮存 第4部分:贮存.pdf
- 中国国家标准 GB/T 19436.2-2025机械电气安全 电敏保护设备 第2部分:使用有源光电保护装置(AOPDs)设备的特殊要求.pdf
- 《GB/T 19436.2-2025机械电气安全 电敏保护设备 第2部分:使用有源光电保护装置(AOPDs)设备的特殊要求》.pdf
- 《GB 27898.4-2025固定消防给水设备 第4部分:消防气体顶压给水设备》.pdf
- GB 27898.4-2025固定消防给水设备 第4部分:消防气体顶压给水设备.pdf
- GB/T 31270.1-2025化学农药环境安全评价试验准则 第1部分:土壤代谢试验.pdf
- 中国国家标准 GB/T 31270.1-2025化学农药环境安全评价试验准则 第1部分:土壤代谢试验.pdf
最近下载
- 2025四川成都环境投资集团有限公司招聘笔试历年参考题库附带答案详解.docx
- 市政道路及雨污水工程施工组织设计.docx VIP
- 数列大题综合18种题型(讲练)-高考数学二轮复习.pdf VIP
- 10 北京故宫(课件)-浙美版初中美术七年级下册.pptx VIP
- DB54T 0342-2024 江达牦牛DB54T 0342-2024 江达牦牛.pdf VIP
- DB34_T 1267-2025 造林技术规程DB34_T 1267-2025 造林技术规程.docx VIP
- 某中学三年(2025年-2028年)发展规划.docx VIP
- 14449小学课程与教学设计-精讲.pdf VIP
- VD4真空断路器(New Design)(安装使用说明书).pdf
- DB22_T 3650-2024 柞蚕术语DB22_T 3650-2024 柞蚕术语.pdf VIP
原创力文档


文档评论(0)