浅析Linux字符设备驱动2013要点详解.pptVIP

  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字符设备驱动 应用程序、库、内核、驱动程序的关系 Linux驱动程序的分类和开发步骤 Linux异常处理体系结构 Linux中断处理体系结构 4x4按键测试 经验总结 应用程序、库、内核、驱动程序的关系 从上到下,一个软件系统可以分为:应用程序、库、内核、驱动程序。 对于相邻层,只需要了解它的接口,无需关注它的实现细节。 应用程序、库、内核、驱动程序的关系 一般来说,当应用程序调用open, read, write, ioctl等函数后,将会使用驱动程序中open, read, write, ioctl等函数来执行相关操作,比如初始化,读,写等。 内核和驱动程序之间并没有界线,因为驱动程序最终是要编进内核去的:通过静态链接或动态加载。 Linux驱动程序的分类和开发步骤 Linux的外设可以分为:字符设备、块设备和网络接口三大类。 字符设备 字节流访问设备,读写以字节为单位 块设备 数据以块的形式存放 网络接口 同时具有以上两者特点,有结构、成 块,但又不是固定大小。 Linux驱动程序的分类和开发步骤 1.查看原理图、数据手册,了解设备的操作方法 2.在内核找到相近的驱动程序,以它为模板进行开发 3.实现驱动程序的初始化:注册驱动程序 4.设计所要实现的操作,比如open、close等 5.实现中断服务 6.编译该驱动程序到内核,或者用insmod命令加载 7.测试驱动程序 Linux异常处理体系结构 异常,可以打断CPU正常运行流程的一些事情,如外部中断、未定义指令、试图修改只读的数据、执行swi指令等。 内核通过调用trap_init,init_IRQ两个函数来设置异常的处理函数。 trap_init 设置各种异常的处理向量 init_IRQ 初始化中断的处理框架,设置各种 中断的默认处理函数。 Linux异常处理体系结构 Linux中断处理体系结构 Linux内核将所有的中断统一编号,使用一个irq_desc结构数组来描述这些中断:每个数组项对应一个中断,记录了中断名称、中断状态、中断标记,并提供了中断的底层硬件访问函数,提供了这个中断的处理函数入口,通过它可以调用用户注册的中断处理函数。 Linux中断处理体系结构 中断的处理流程如下: 1.发生中断时,CPU执行异常向量vector_irq的代码 2.在vector_irq里面,最终会调用中断处理的总入口函数asm_do_IRQ 3.asm_do_IRQ根据中断号调用irq_desc数组项中的handle_irq 4.handle_irq会使用chip成员中的函数来设置硬件,比如清除中断、禁止中断、重新使能等。 5.handle_irq逐个调用用户在action链表中注册的处理函数 经验总结 看书 理解框架、整体掌握 调试 多读代码、移植驱动 谢谢! * * 主讲人:林恺迪 中断体系结构的初始化就是构造这些数据结构,比如irq_desc数组项中的handle_irq、chip等成员; 用户注册中断就是构造action链表;用户卸载中断时就是从action链表中去除不需要的项。

文档评论(0)

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

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

1亿VIP精品文档

相关文档