- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式操作系统在arm上的移植
第6章 嵌入式操作系统及在ARM上的移植 本章主要内容 6.1 嵌入式Linux的设备管理 6.2 设备驱动程序的开发过程 6.1 嵌入式Linux的设备管理 块设备接口仅支持面向块的I/O操作,所有I/O操作都通过在内核地址空间中的I/O缓冲区进行,它可以支持随机存取的功能。文件系统通常都建立在块设备上。 字符设备接口支持面向字符的I/O操作,由于它们不经过系统的快速缓存,所以它们负责管理自己的缓冲区结构。字符设备接口只支持顺序存取的功能,一般不能进行任意长度的I/O请求,而是限制I/O请求的长度必须是设备要求的基本块长的倍数。 处理器与设备间数据交换方式 处理器与外设之间传输数据的控制方式通常有3种:查询方式、中断方式和直接内存存取(DMA)方式。 1.查询方式 设备驱动程序通过设备的I/O端口空间,以及存储器空间完成数据的交换。例如,网卡一般将自己的内部寄存器映射为设备的I/O端口,而显示卡则利用大量的存储器空间作为视频信息的存储空间。利用这些地址空间,驱动程序可以向外设发送指定的操作指令。通常来讲,由于外设的操作耗时较长,因此,当处理器实际执行了操作指令之后,驱动程序可采用查询方式等待外设完成操作。 驱动程序在提交命令之后,开始查询设备的状态寄存器,当状态寄存器表明操作完成时,驱动程序可继续后续处理。 查询方式的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,就只能循环等待,不能执行其他程序,这样就浪费了CPU的大量时间,降低了处理器的利用率。 CPU在满足一定条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后,CPU再返回并继续执行原来被中断的主程序。这样,CPU就避免了把大量时间耗费在等待、查询外设状态的操作上,使其工作效率得以大大提高。中断方式的原理示意图如图所示。 能够向CPU发出中断请求的设备或事件称为中断源。 中断源向CPU发出中断请求,若优先级别最高,则CPU在满足一定的条件时,可中断当前程序的运行,保护好被中断的主程序的断点及现场信息,然后根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段,这就是中断响应。 CPU响应中断是有条件的,如内部允许中断、中断未被屏蔽、当前指令执行完等。CPU响应中断以后,就会中止当前的程序,转去执行一个中断服务子程序,以完成为相应设备的服务。 系统引入中断机制后,CPU与外设处于“并行”工作状态,便于实现信息的实时处理和系统的故障处理。 设备驱动程序在利用DMA之前,需要选择DMA通道并定义相关寄存器,以及数据的传输方向,即读取或写入,然后将设备设定为利用该DMA通道传输数据。设备完成设置之后,可以立即利用该DMA通道在设备和系统的内存之间传输数据,传输完毕后产生中断以便通知驱动程序进行后续处理。 在利用DMA进行数据传输的同时,处理器仍然可以继续执行指令。 设备驱动程序的概念 完成以下功能: ? 对设备初始化和释放; ? 对设备进行管理,包括实时参数设置,以及提供对设备的操作接口; ? 读取应用程序传送给设备文件的数据或者回送应用程序请求的数据; ? 检测和处理设备出现的错误。 Linux操作系统将所有的设备全部看成文件,并通过文件的操作界面进行操作。对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说,是把设备映射为一个特殊的设备文件,用户程序可以像对其他文件一样对此设备文件进行操作。 这意味着: ? 由于每一个设备至少由文件系统的一个文件代表,因而都有一个“文件名”。 ? 应用程序通常可以通过系统调用open()打开设备文件,建立起与目标设备的连接。 ? 打开了代表着目标设备的文件,即建立起与设备的连接后,可以通过read()、write()、ioctl()等常规的文件操作对目标设备进行操作。 设备文件的属性由三部分信息组成:第一部分是文件的类型,第二部分是一个主设备号,第三部分是一个次设备号。其中类型和主设备号结合在一起惟一地确定了设备文件驱动程序及其界面,而次设备号则说明目标设备是同类设备中的第几个。 由于Linux 中将设备当做文件处理,所以对设备进行操作的调用格式与对文件的操作类似,主要包括open()、read()、write()、ioctl()、close()等。应用程序发出系统调用命令后,会从用户态转到核心态,通
您可能关注的文档
- 二轮三轮复习必备《名师一号》2011届高三物理二轮三轮总复习重点突破第7讲用能量的观点解题.ppt
- 中药学课件3收涩药、攻毒药.ppt
- 人机工程学第三版第9章人与环境的界面设计.ppt
- 人格心理学课件第九章认知论.ppt
- 传播学概论004.ppt
- 人教版高中生物必修三课件2-4免疫调节共61张2.ppt
- 作物栽培学小麦栽培5-6.ppt
- 作用于肾上腺素受体的药物jh.ppt
- 免疫性溶血性贫血检验输血学2.ppt
- 公疗参保政策培训1121.ppt
- 精品解析:北京市育英中学物理八年级下册期末考试专题测评试题(解析版).docx
- 精品解析:安徽无为县襄安中学物理八年级下册期末考试定向攻克试卷(附答案详解).docx
- DBJ_T 13-235-2024 磁测井法检测基桩钢筋笼长度技术标准.pdf
- DB3705_T 40-2024 野大豆空间分布无人机遥感监测技术规范.pdf
- DBJ_T 13-464-2024 福建省装配式建筑碳排放计算标准.pdf
- 【36】24秋新版一上语文课课贴.pdf
- 【135】一年级看图写拼音.pdf
- 【44】40篇短文记完小学1000核心词汇文章.pdf
- 【72】二上语文第一单元拔尖测试卷.pdf
- 【102】数学每日一练60页.pdf
文档评论(0)