- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.网络设备驱动程序注册 注册函数:register_netdev(struct device *) 卸载设备: unregister_netdev(struct device *) 函数 * 8.2.5 设备驱动程序的编译 在Linux下要运行驱动程序需要用Makefile文件进行编译,Makefile 文件定义了一系列的编译规则。 * 8.2.6驱动程序的加载 动态加载: 动态加载在系统启动后,用insmod命令把驱动程序添加上去,在不需要的时候用rmmod命令来卸载 。 静态加载: 静态加载就是把驱动程序直接编译到内核里,系统启动后可以直接调用。 * 8.2.7 驱动程序的调用 在嵌入式系统中应用程序对驱动程序的调用实质就是使用数据结构struct file_operations中成员函数的指针 。这个结构的每一个成员函数的名字都对应着一个系统调用 。用户进程利用系统调用在对设备文件进行诸如读写read/write操作时,首先通过设备文件的主设备号找到相应的设备驱动程序,然后再读取这个数据结构相应的函数指针,接着把控制权交给该函数。 * 8.3 驱动程序开发的常见问题 驱动程序开发过程中主要考虑三个方面。 提供尽量多的选项给用户; 提高驱动程序的速度和效率; 尽量使驱动程序简单,使之易于维护。 * 比较常见的问题有 阻塞型IO的处理: read函数调用时会出现当前没有数据可读,但马上就会有数据到达的情况,这时采用睡眠并等待数据的方式,这就是阻塞型IO。 解决阻塞型IO ,一般采用进程睡眠、唤醒,在阻塞的情况查看是否有数据等方式。 * 并发访问与数据保护 当应用程序使用多线程操作时,需要数据共享使用,在驱动程序中可以使用循环缓冲区并且避免使用共享变量。 中断处理 在使用请求中断函数时,如果有几个设备共享同一个中断的话,申请时要指明共享方式 。 网络驱动程序中对硬件发送忙时的处理 在Linux系统中网络设备驱动程序一般不做数据缓存,不能发送的数据都要通知系统发送不成功,所以必须要有一个机制在硬件不忙时及时通知系统接着发送后续剩余的数据。 * * 第8章 设备驱动程序开发 驱动激励硬件设备开启, 赋予硬件设备能量 * 本章内容 * 8.1 设备驱动概述 1 8.2 设备驱动程序的开发过程 2 8.3 驱动程序开发的常见问题 3 目的和要求 了解驱动程序的功能 理解驱动程序开发过程 掌握各类设备驱动程序设计方法 掌握驱动程序开发过程中的常见问题 掌握直流电机驱动程序设计实例 * 8.1 设备驱动概述 主要完成以下的功能: (1)对设备初始化和释放; (2)把操作数据从内核传送到硬件和从硬 件读取数据; (3)读取应用程序传送给硬件设备的数据 和回送应用程序请求的数据; (4)检测和处理硬件设备出现的错误。 * 8.1.1 驱动程序和应用程序的区别 设备驱动程序就工作在“内核空间” ;应用程序则是在“用户空间”中运行 。 驱动程序的优先级高于应用程序。 驱动程序可以对硬件进行直接访问和对内存的访问。应用程序则不能。 * 应用程序与驱动程序的关系图 * Linux的设备管理 字符设备(Character Device) 块设备(Block Device) 网络设备驱动(Network interface) * 字符设备 Linux下的字符设备接口支持面向字符的I/O操作,是以字节为单位顺序读写; 字符设备无需缓存且被直接读写 ; 字符设备可以访问/dev目录下的文件系统节点 * 字符设备驱动程序示意图 * 块设备 Linux系统下的块设备是指对信息存取以“块”为单位 ; 块设备对于I/O请求有对应的缓冲区,块设备具有随机访问特性; 块设备和字符设备一样也是通过/dev目录下的文件系统节点被访问的; 块驱动程序除了给内核提供和字符设备驱动程序一样的接口以外,还提供了专门面向块设备的接口 ; 块设备的接口还必须支持挂装(mount)文件系统。 * 块设备驱动程序数据结构示意图 * 网络设备驱动 网络驱动的体系结构包括网络协议接口层、网络设备接口层、网络驱动接口层和设备媒介层。 * 网络驱动的体系结构 * 8.2 设备驱动程序的开发过程 8.2.1 字符设备驱动程序的设计 驱动程序的接口流程图 * Linux为所有的设备文件都提供了统一的操作函数接口,具体操作方法是使用数据结构struct file_operations。 struct file_operations { struct module *owner; loff_t (*l
您可能关注的文档
- 嵌入式Linux系统开发与应用 教学课件 作者 康维新 第6章 Qt图形编程.ppt
- 嵌入式Linux系统开发与应用 教学课件 作者 康维新 第7章 嵌入式Linux综合设计项目实例.ppt
- 嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 1习题答案.doc
- 嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 39684 习题答案.pdf
- 嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第2章.ppt
- 嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第4章_嵌入式Linux开发基础.ppt
- 嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第5章_嵌入式Linux启动程序_内核_根文件系统.ppt
- 嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第6章_字符型驱动.ppt
- 嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第7章_GPIO接口控制LED灯.ppt
- 嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第8章_远程温度采集与曲线的生成综合实例.ppt
文档评论(0)