- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统及应用 第八章 I/O管理 主要内容 I/O管理概述 一种I/O系统实现方法 体系结构 实现考虑 I/O管理概述 在通用操作系统中,I/O管理采用层次结构的思想(如四个层次的结构:中断处理程序,设备驱动程序,与设备无关的操作系统软件,用户层软件): 较低层的软件要使较高层的软件独立于硬件的特性, 较高层软件则要向用户提供一个友好、清晰、规范的接口。 I/O管理概述 在I/O管理的层次结构中,主要通过设备独立的I/O系统和设备驱动程序来共同完成I/O操作。 设备驱动程序通过一组例程来提供比较低级的I/O功能,比如把字节序列输入或输出到面向字符的设备中。 高级协议(如面向字符设备的通信协议)则由与设备无关的I/O系统来实现。 I/O管理概述 在一些实时内核的I/O系统中,用户I/O请求在到达设备驱动程序之前,通常都只进行非常少量的处理。 实时内核的I/O系统的作用就像一个转换表,把用户对I/O的请求转换到相应的驱动程序例程。 驱动程序就能够获得最原始的用户I/O请求,并对设备进行操作。 I/O管理概述 为满足标准设备处理的需要,I/O系统通常也提供一些高级的例程库,便于实现设备的标准通信协议。 I/O系统既便于实现能够满足大多数设备要求的、标准的驱动程序; 在需要时,方便地实现非标准的设备驱动程序,以满足实时性或是其他的特殊需要。 一种I/O系统实现方法 在不同CPU和I/O设备之间的可移植性就成为嵌入式操作系统设计时需要重点考虑的内容 可移植性有助于增强操作系统和应用的重用,以保护应用投资 如何有助于提高编写驱动程序的便利性,通常也是应用开发人员非常关注的特性 降低驱动程序的开发难度,则能有效提高系统的开发效率 体系结构 体系结构 硬件抽象层 是硬件功能模块的集合,是对硬设备功能的第一层抽象,实现基本的IO操作。 所关心的是如何实现硬件功能的软件接口,而不是设备的管理逻辑。 每个硬件可能有多个端口(设备),对应的硬件抽象层是对这些端口(设备)操作的基本抽象,为驱动程序管理这些设备提供接口。上层驱动程序在不需要了解具体设备硬件信息的情况下,就可以操作这些设备。 体系结构 驱动逻辑层 存放系统中的所有驱动程序 实现设备的管理逻辑 通过硬件抽象层来管理设备 每个驱动程序管理一类设备,例如所有串口都由串口驱动程序来管理,所有中断控制器都由中断控制器驱动程序管理。 体系结构 设备管理层 管理系统中的设备,并向上提高统一的接口。 设备管理层不直接操作设备,它只能通过驱动程序来间接操作设备。 体系结构 采用这种体系结构的好处: 便于硬设备驱动的编写 便于移植 提供硬件的多种使用模式:应用程序(包括用户程序、操作系统及其组件等程序)可以根据实际需要从驱动程序的不同层次直接调用 ,可以满足实时性或其它一些应用设计方面的具体考虑。 体系结构 提供硬件的多种使用模式 实现考虑 设备管理 为了实现设备管理,可以提供三张表: 驱动程序地址表 设备名表 文件表 设备管理 驱动程序地址表:管理系统中的驱动程序,表项为各个驱动程序的功能函数 设备管理 驱动程序地址表 设备管理 设备名表:管理系统中所有设备,通过设备名来区分各设备 主设备号是驱动程序在驱动地址表中的位置,次设备号用来在驱动程序内部区分不同的设备 设备管理 设备名表 设备管理 文件表:用于记录当前打开的设备 设备管理 文件表 驱动逻辑 驱动逻辑层实现系统中所有驱动程序。 每个驱动程序管理一类设备,为了实现设备管理,在每个驱动程序中维护一张设备信息表。 驱动逻辑 驱动逻辑 驱动逻辑 驱动逻辑 驱动逻辑 驱动逻辑 驱动逻辑 硬件抽象 每个设备的硬件抽象分两部分: 硬件抽象部分,实现对硬件的抽象。该部分写好之后,不会随应用而改变; 初始化部分,对设备进行初始化,实现设备注册。 工作过程 工作过程 驱动程序注册 工作过程 设备注册 工作过程 打开设备 工作过程 关闭设备 系统调用close( )关闭一个不再使用的设备,关闭一个设备时,I/O系统的内部运作过程和写一个设备大致相同,不同的是I/O系统根据设备名表中的主设备号在驱动程序地址表中定位并调用驱动程序的xxx_close( )函数,然后释放文件表中的记录,返回。在此之后对该文件描述符的任何引用都将返回错误。但是随后的open( )系统调用将仍然返回该文件描述符。 工作过程 写设备 读设备、控制设备操作与写设备操作流程类似 谢谢! I/O系统的初始化 设备打开 设备关闭 设备读 设备写 设备控制 设备管理初始化 驱动逻辑初始化 硬件抽象初始化 完成设备管理相关信息的初始化,如创建驱动程序地址表、设备名表、文件记录表等 实现系统中各驱动程序的注册,即把系
文档评论(0)