linux字符设备开发详解知识.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

您可能关注的文档

文档评论(0)

cy65918457 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档