第一章 设备驱动概述 Linux设备驱动程序 教学课件.pptVIP

第一章 设备驱动概述 Linux设备驱动程序 教学课件.ppt

  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设备驱动 设备驱动的作用 任何一个计算机系统的运行都是系统中软硬件协作的结果。 硬件是底层基础,是所有软件得以运行的平台,代码最终会落实为硬件上的组合逻辑与时序逻辑。 软件则实现了具体应用,它按照各种不同的业务需求而设计,满足了用户的需求。 可以说,计算机系统的软硬件互相成就了对方。 设备驱动的作用 但是,软硬件之间同样存在着悖论,那就是软件和硬件不应该互相渗透到对方的领地。 也就是说,应用软件工程师需要看到一个没有硬件的纯粹的软件世界,硬件必须被透明地呈现给他们。 谁来实现硬件对应用软件工程师的隐形? 设备驱动的作用 设备驱动即“驱使硬件设备行为”。设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、DMA通信、进行物理内存向虚拟内存的映射。 设备驱动最终使通信设备能够收发数据,使显示设备能够显示文字和画面,使存储设备能够记录文件和数据。 设备驱动的作用 由此可见,驱动程序是连接硬件设备和设备文件的纽带,是操作系统内核和硬件设备之间的接口。 设备驱动充当了硬件和应用软件之间的纽带,使得应用软件只需要调用系统软件的API就可让硬件去完成要求的工作。 设备驱动的作用 当有操作系统时,设备驱动的架构则由相应的操作系统定义,驱动工程师必须按照相应的架构设计设备驱动,这样,设备才能很好地整合到操作系统的内核中。 目录 设备驱动的作用 无操作系统和有操作系统的设备驱动 Linux设备驱动 无操作系统时的设备驱动 并不是任何一个计算机系统都一定要运行操作系统。 对于功能比较单一、控制并不复杂的系统,如公交车刷卡机、电冰箱、微波炉、简单的手机和小灵通等,并不需要多任务调度、文件系统、内存管理等复杂功能,用单任务构架完全可以很好地支持他们的工作。 无操作系统时的设备驱动 单任务软件典型架构: 无操作系统时的设备驱动 在这样的系统中,虽然不存在操作系统,但是设备驱动是必须存在存在的。 当系统中没有操作系统时,工程师可以根据硬件设备的特点自行定义接口。 一般情况下,对每种设备驱动都会定义为一个软件模块,包含.h和.c文件,前者定义该设备驱动的数据结构并声明外部函数;后者进行设备驱动的具体实现。(串口示例) 其它模块需要使用这个设备的时候,只需要包含设备驱动的头文件serial.h,然后调用其中的接口函数即可。 如:我们要从串口上发送字符串“hello world”,使用函数serialsend(“hello world”,11)即可。 无操作系统时的设备驱动 无操作系统情况下的串口驱动: 无操作系统时的设备驱动 在没有操作系统的情况下,设备驱动的接口被直接提交给了应用软件工程师,应用软件没有跨越任何层次就直接访问了设备驱动的接口。 设备驱动包含的接口函数 也与硬件的功能直接吻合, 没有任何附加功能。 如图所示 无操作系统时的设备驱动 不合理的设计: 直接在应用中操作硬件的寄存器,而不是单独设计驱动模块 有操作系统时的设备驱动 当有操作系统时,设备驱动的架构则由相应的操作系统定义,驱动工程师必须按照相应的架构设计设备驱动,这样,设备才能很好地整合到操作系统的内核中。 或者说,为了实现设备驱动融入到内核中,必须在所有的设备驱动中设计面向操作系统内核的接口,这样的接口由操作系统规定,独立于具体的设备. 有操作系统时的设备驱动 当系统中存在操作系统时,设备驱动变成了连接硬件和内核的桥梁。如图所示。 操作系统的存在势必要求 设备驱动附加更多的代码 和功能,把单一的“驱使 硬件设备行动”变成了 操作系统内与硬件交互 的模块,它对外呈现为 操作系统的API,不再 给应用软件工程师直接 提供接口。 有操作系统时的设备驱动 有了操作系统之后,设备驱动程序反而变得复杂,那要操作系统干什么? 一个复杂的软件系统需要处理多个并发任务,没有操作系统,想完成多任务并发是很困难的 操作系统提供给我们内存管理机制。 如果设备驱动都按照操作系统给出的独立于设备的接口而设计,应用将可使用统一的调用接口来访问各种设备。 简而言之,操作系统通过给设备驱动制造麻烦来达到给上层应用提供便利的目的。 目录 设备驱动的作用 无操作系统和有操作系统的设备驱动 Linux设备驱动 设备的分类及特点 Linux将所有的设备都当作文件进行处理,这异类特殊文件就是设备文件,它们可以使用文件、I/O相关函数进行操作。设备通常在/dev下面存在一个对应的逻辑设备节点,这个节点以文件的形式存在。 字符设备 串口,终端,触摸屏 以串行顺序依次进行访问的设备

文档评论(0)

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

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

1亿VIP精品文档

相关文档