嵌入式实时操作系统RT-Thread原理与应用第11章 RT-Thread IO设备和软件包.docVIP

嵌入式实时操作系统RT-Thread原理与应用第11章 RT-Thread IO设备和软件包.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE16

PAGE17

第11章RT-ThreadI/O设备和软件包

11.1I/O设备介绍

嵌入式系统包含多种I/O设备,如显示屏、串口通信、存储卡和以太网接口,广泛应用于仪器、工业和网络设备中。

(1)嵌入式系统包含多种输入输出(I/O)设备。

(2)常见I/O设备包括仪器上的数据显示屏、工业设备的串口通信接口。

(3)此外还有数据采集设备的Flash或SD卡存储,以及网络设备的以太网接口。

11.1.1I/O设备模型框架

RT-Thread提供了一套简单的I/O设备模型框架,如图11-1所示。

位于硬件和应用程序之间,共分成三层,从上到下分别是I/O设备管理层、设备驱动框架层、设备驱动层。

图11-1I/O设备模型框架

应用程序通过I/O设备管理接口获得正确的设备驱动,然后通过这个设备驱动与底层I/O硬件设备进行数据(或控制)交互。

I/O设备模型框架从下往上共分为设备驱动层、设备驱动框架层和IO设备管理层三层。

1.IO设备管理层

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

2.设备驱动框架层

设备驱动框架层是对同类硬件设备驱动的再次抽象,提取了不同厂家同类硬件设备驱动中的相同部分,不同部分留出接口,由设备驱动层实现。设备驱动框架层的源码位于rt-thread/components/drivers目录中。

3.IO设备管理层

IO设备管理层抽象设备驱动,提供标准接口,隔离硬件与应用。驱动升级不影响应用,降低耦合复杂度,提升系统可靠性。

简单I/O设备使用序列图如图11-2所示,主要有以下2点:

(1)设备驱动根据设备模型定义,创建出具备硬件访问能力的设备实例,将该设备通过rt_device_register()接口注册到I/O设备管理器中。

(2)应用程序通过rt_device_find()接口查找到设备,然后使用I/O设备管理接口来访问硬件。

图11-2简单I/O设备使用序列图

看门狗设备使用序列图如图图11-3所示。主要有以下几点:

(1)看门狗设备驱动程序根据看门狗设备模型定义,创建出具备硬件访问能力的看门狗设备实例,并将该看门狗设备通过rt_hw_watchdog_register()接口注册到看门狗设备驱动框架中。

(2)看门狗设备驱动框架通过rt_device_register()接口将看门狗设备注册到I/O设备管理器中。

(3)应用程序通过I/O设备管理接口来访问看门狗设备硬件。

图11-3看门狗设备使用序列图

11.1.2I/O设备模型

RT-Thread设备模型基于内核对象,每个设备为对象管理器中的对象,继承父类属性并可派生私有属性。

设备继承关系图如图11-4所示。

图11-4设备继承关系图

设备对象具体定义如下所示:

structrt_device

{

structrt_objectparent;/*内核对象基类*/

enumrt_device_class_typetype;/*设备类型*/

rt_uint16_tflag;/*设备参数*/

rt_uint16_topen_flag;/*设备打开标志*/

rt_uint8_tref_count;/*设备被引用次数*/

rt_uint8_tdevice_id;/*设备ID,0-255*/

/*数据收发回调函数*/

rt_err_t(*rx_indicate)(rt_device_tdev,rt_size_tsize);

rt_err_t(*tx_complete)(rt_device_tdev,void*buffer);

conststructrt_device_ops*ops;/*设备操作方法*/

/*设备的私有数据*/

void*user_d

文档评论(0)

ning2021 + 关注
实名认证
文档贡献者

中医资格证持证人

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

领域认证该用户于2023年05月10日上传了中医资格证

1亿VIP精品文档

相关文档