- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
周国运ARM讲义6.ppt
嵌入式系统讲义第6章 嵌入式Linux驱动程序开发 周国运 2010.5 本章各节内容 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请求的长度只能是设备要求的基本块长的倍数。 6.1.1 处理器与设备间数据交换方式 处理器与外设之间传输数据的控制方式通常有3种: 查询方式 中断方式 直接内存存取(DMA)方式 6.1.2 设备驱动程序的概念 一、驱动程序的特点与功能 1、驱动程序的特点 (1)对硬件控制,对寄存器进行操作,通常这些操作与设备直接相关; (2)对时序要求非常严格。 这些工作对应用程序员来说是复杂而困难。驱动程序的作用正是要屏蔽硬件的这些底层细节,从而简化应用程序的编写。 2、驱动程序的基本功能 (1)对硬件进行控制 (2)建立应用程序和设备之间的接口 3、驱动程序的特性 设备驱动程序实际是处理和操作硬件控制器的软件。 从本质上讲,驱动程序是OS内核中具有最高特权级的、驻留内存的、可共享的、底层硬件处理的例程。 4、驱动程序的基本操作 驱动程序是内核的一部分,是内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,完成以下操作: 对设备初始化和释放; 对设备进行管理,包括实时参数设置,以及提供对设备的操作接口; 读取应用程序传送给设备文件的数据,或者回送应用程序请求的数据;即在设备和应用程序间传送数据。 检测和处理设备出现的错误。 二、设备文件 Linux操作系统将所有的设备全部看成文件,都纳入文件系统的范畴,并通过文件的操作界面进行操作。 对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说,是把设备映射为一个特殊的设备文件,用户程序可以像对其他文件一样,对设备文件进行操作。 设备文件与设备对应 每一个设备都有一个“文件名” 每个设备文件惟一地确定一种设备 应用程序通过设备文件访问具体的设备 设备像普通文件一样,受到文件系统访问权限控制机制的保护。 三、对设备的操作方法 1、操作方法 对设备进行操作,与对文件的操作类似,主要包括:open()、read()、write()、ioctl()、close()等。 2、设备操作所在的状态 对设备文件的操作是在核心态 应用程序发出系统调用命令后,会从用户态转到核心态,通过内核将open()这样的系统调用转换成对物理设备的操作。 四、设备文件的属性 由三部分信息组成:文件的类型、主设备号、次设备号。 类型和主设备号:结合在一起,惟一地确定了设备文件驱动程序及其界面; 次设备号:说明目标设备是同类设备中的第几个。 6.1.3 驱动程序结构 一、设备驱动程序的组成(3部分) 1、配置和初始化子程序 (1)检测所驱动的硬件设备是否工作正常 (2)对设备及其相关驱动程序进行初始化。这部分驱动程序在设备初始化时被调用。 2、服务于I/O请求的子程序 该子程序称为驱动程序的上半部。 运行的进程与状态:系统认为这部分程序的运行,与调用它的进程属于同一个进程;只是由用户态变成了核心态。 在该子程序中,可以调用sleep()等,与进程运行环境有关的函数。 3、中断服务程序 中断服务程序又称为驱动程序的下半部 由Linux来接收硬件中断请求,再由OS调用中断服务子程序。 中断服务程序所属进程和状态: 不依赖于任何进程和状态 由于中断可以在任何一个进程运行时产生,因而在中断服务程序被调用
文档评论(0)