- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
arm嵌入式原理技术及应用ch-12.ppt
;◆ 理解设备驱动程序的概念、分类、处理器与设备间数据交换方法
◆ 熟悉驱动程序结构
◆ 熟悉驱动程序开发方法 ;12.1.1 设备驱动程序概述
1. 驱动程序定义及功能
设备驱动程序实际是处理和操作硬件控制器的软件,从本质上讲,是内核中具有最高特权级的、驻留内存的、可共享的底层硬件处理例程。驱动程序是内核的一部分,是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节. ; 完成以下功能:
(1) 对设备初始化和释放;
(2) 对设备进行管理,包括实时参数设置,以及提供对设备的操作接口;
(3) 读取应用程序传送给设备文件的数据或者回送应用程序请求的数据;
(4) 检测和处理设备出现的错误。
简单来说可以概括为:管理I/O设备,上层软件的抽象操作与设备操作的转换。;2. 设备驱动程序的概念
Linux操作系统将所有的设备全部看成文件,并通过文件的操作界面进行操作。对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说,是把设备映射为一个特殊的设备文件,用户程序可以像对其他文件一样对此设备文件进行操作。
由于每一个设备至少由文件系统的一个文件代表,因而都有一个“文件名”。; 应用程序通常可以通过系统调用open()打开设备文件,建立起与目标设备的连接。
打开了代表着目标设备的文件,即建立起与设备的连接后,可以通过read()、write()、ioctl()等常规的文件操作对目标设备进行操作。
;
设备文件的属性由三部分信息组成:
第一部分是文件的类型
第二部分是一个主设备号
第三部分是一个次设备号。
其中类型和主设备号结合在一起惟一地确定了设备文件驱动程序及其界面,而次设备号则说明目标设备是同类设备中的第几个。; 由于Linux 中将设备当做文件处理,所以对设备进行操作的调用格式与对文件的操作类似,主要包括open()、read()、write()、ioctl()、close()等。应用程序发出系统调用命令后,会从用户态转到核心态,通过内核将open()这样的系统调用转换成对物理设备的操作。 ;3. 驱动层次结构
Linux 下的设备驱动???序是内核的一部分,运行在内核模式,也就是说设备驱动程序为内核提供了一个 I/O 接口,用户使用这个接口实现对设备的操作。
下图所示,显示了典型的Linux 输入/输出系统中各层次结构和功能。;Date; Linux 设备驱动程序包含中断处理程序和设备服务子程序两部分。
设备服务子程序包含了所有与设备操作相关的处理代码。它从面向用户进程的设备文件系统中接受用户命令,并对设备控制器执行操作。这样,设备驱动程序屏蔽了设备的特殊性,使用户可以像对待文件一样操作设备。 ; 设备控制器需要获得系统服务时有两种方式:
查询
中断
因为 Linux 下的设备驱动程序是内核的一部分,在设备查询期间系统不能运行其他代码,查询方式的工作效率比较低,所以只有少数设备如软盘驱动程序采取这种方式,大多设备以中断方式向设备驱动程序发出输入/输出请求。;4. 设备驱动程序与外界的接口
每种类型的驱动程序,不管是字符设备还是块设备都为内核提供相同的调用接口,因此内核能以相同的方式处理不同的设备。Linux 为每种不同类型的设备驱动程序维护相应的数据结构,以便定义统一的接口并实现驱动程序的可装载性和动态性。Linux 设备驱动程序与外界的接口可以分为如下三个部分。 ;驱动程序与操作系统内核的接口:
这是通过数据结构 file_operations来完成的。
驱动程序与系统引导的接口:
这部分利用驱动程序对设备进行初始化。
驱动程序与设备的接口:
这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。
它们之间的相互关系如下图所示。 ;Date; 5.设备驱动程序的特点
综上所述,Linux 中的设备驱动程序有如下特点。
(1)内核代码:设备驱动程序是内核的一部分,如果驱动程序出错,则可能导致系统崩溃。
;
(2)内核接口:设备驱动程序必须为内核或者其子系统提供一个标准接口。比如,一个终端驱动程序必须为内核提供一个文件 I/O 接口;一个 SCSI设备驱动程序应该为 SCSI子系统提供一个SCSI设备接口,同时SCSI子系统也必须为内核提供文件的 I/O 接口及缓冲区。 ;
文档评论(0)