1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM讲义6

嵌入式系统讲义 第6章 嵌入式Linux 驱动程序开发 周国运 2008.8 本章各节内容 1、嵌入式Linux设备管理 2、设备驱动程序的开发过程 3、LED驱动程序设计 4、按键驱动程序设计 本章主要内容: 本章将学习嵌入式设备驱动程序的开发,通过本章学习: 了解嵌入式Linux对设备的管理方式和驱动程序的结构 掌握字符设备驱动程序的开发方法 掌握通过Linux通用I/O口设备的控制 掌握通过Linux外部中断的控制 6.1 嵌入式Linux的设备管理 Linux将设备分成两大类: 一类是块设备,类似磁盘以记录块或扇区为单位,成块进行输入,输出的设备; 另一类是字符设备,类似键盘以字符为单位,逐个进行输入/输出的设备 网络设备是介于块设备和字符设备之间的一种特殊设备。 块设备: 块设备接口仅支持面向块的I/O操作; 所有I/O操作都通过在内核地址空间中的I/O缓冲区进行; 块设备支持随机存取的功能。 文件系统通常都建立在块设备上。 字符设备: 字符设备接口支持面向字符的I/O操作 字符设备的I/O操作不经过系统的快速缓存,所以它们负责管理自己的缓冲区结构。 字符设备接口只支持顺序存取的功能 一般不能进行任意长度的I/O请求,而是限制I/O请求的长度必须是设备要求的基本块长的倍数。 6.1.1 处理器与设备间数据交换方式 处理器与外设之间传输数据的控制方式通常有3种: 查询方式 中断方式 直接内存存取(DMA)方式 6.1.2 设备驱动程序的概念 一、驱动程序的概念 1、驱动程序的特点 对硬件的控制涉及寄存器中各位的操作,通常这些操作与设备直接相关并且对时序的要求非常严格,如果这些工作都交由应用程序员来负责,那么对硬件设备的编程将变得异常复杂而困难。 驱动程序的作用正是要屏蔽硬件的这些底层细节,从而简化应用程序的编写。 2、驱动程序的基本功能 (1)操作系统一般提供设备驱动程序来完成对特定硬件的控制,(2)并建立应用程序和设备之间的抽象接口,而不是应用程序直接操作硬件。 3、驱动程序的特性 设备驱动程序实际是处理和操作硬件控制器的软件,从本质上讲,是内核中具有最高特权级的、驻留内存的、可共享的底层硬件处理例程。 3、驱动程序的基本操作 驱动程序是内核的一部分,是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,完成以下操作: 对设备初始化和释放; 对设备进行管理,包括实时参数设置,以及提供对设备的操作接口; 读取应用程序传送给设备文件的数据或者回送应用程序请求的数据; 检测和处理设备出现的错误。 二、设备文件 Linux操作系统将所有的设备全部看成文件,都纳入文件系统的范畴,并通过文件的操作界面进行操作。 对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说,是把设备映射为一个特殊的设备文件,用户程序可以像对其他文件一样对此设备文件进行操作。 设备文件与设备对应 每一个设备至少由一个文件代表,都有一个“文件名”。每个设备文件惟一地确定了系统中的一种设备。应用程序通过设备文件访问具体的设备;设备像普通文件一样,受到文件系统访问权限控制机制的保护。 三、对设备的操作方法 (1)应用程序与设备建立连接的方法 通常通过系统调用open()打开设备文件,建立起与目标设备的连接。这就要求该设备的文件节点中,记载着建立这种连接所需的信息。对于执行某应用程序的进程而言,建立起的连接表现为一个已经打开的文件。 (2)对设备的操作方法 打开了代表着目标设备的文件,即建立起与设备的连接后,可以通过read()、write()、ioctl()等常规的文件操作对目标设备进行操作。 由于Linux中将设备当做文件处理,所以对设备进行操作的调用格式与对文件的操作类似,主要包括open()、read()、write()、ioctl()、close()等。 应用程序发出系统调用命令后,会从用户态转到核心态,通过内核将open()这样的系统调用转换成对物理设备的操作。 四、设备文件的属性 由三部分信息组成:文件的类型、主设备号、次设备号。 其中类型和主设备号结合在一起惟一地确定了设备文件驱动程序及其界面,而次设备号则说明目标设备是同类设备中的第几个。 6.1.3 驱动程序结构 一般Linux设备驱动程序可以分为3个主要组成部分。 一、自动配置和初始化子程序 自动配置和初始化子程序:(1)用来检测所需驱动的硬件设备是否工作正

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档