I/O设备管理

绝大部分的嵌入式系统都包括一些输入输出(I/O)设备,例如仪器上的数据显示,工业设备上的串口通信,数据采集设备上用于保存数据的flash或SD卡,以及网络设备的以太网接口都是嵌入式系统中容易找到的I/O设备例子。嵌入式系统通常都是针对具有专有特殊需求的设备而设计的,例如移动电话、MP3播放器就是典型地为处理I/O设备而建造的嵌入式系统例子。

在RT-Thread实时操作系统中,RT-Thread提供了一套简单的I/O设备管理框架,如图 RT-Thread I/O 设备结构 所示,它把I/O设备分成了三层进行处理:

RT-Thread I/O 设备结构

应用程序通过RT-Thread的设备操作接口获得正确的设备驱动,然后通过这个设备驱动与底层I/O硬件设备进行数据(或控制)交互。RT-Thread提供给上层应用的是一个抽象的设备接口,给下层设备提供的是底层驱动框架。从系统整体位置来说I/O设备模块相当于设备驱动程序和上层应用之间的一个中间层。

I/O设备模块实现了对设备驱动程序的封装。应用程序通过I/O设备模块提供的标准接口访问底层设备,设备驱动程序的升级、更替不会对上层应用产生影响。这种方式使得设备的硬件操作相关的代码能够独立于应用程序而存在,双方只需关注各自的功能实现,从而降低了代码的耦合性、复杂性,提高了系统的可靠性。

RT-Thread的设备模型是建立在内核对象模型基础之上的,设备被认为是一类对象,被纳入对象管理器的范畴。每个设备对象都是由基对象派生而来,每个具体设备都可以继承其父类对象的属性,并派生出其私有属性。 设备继承关系图 是设备对象的继承和派生关系示意图。

设备继承关系图

原文: https://www.rt-thread.org/document/site/submodules/rtthread-manual-doc/zh/1chapters/06-chapter_device/