0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-Thread设备驱动开发之二I/O设备框架

冬至子 来源:Lu_盼盼 作者:Lu_盼盼 2023-10-12 10:26 次阅读

之前没有接触过驱动开发的人,看到“设备框架”这个名词可能会感到迷茫。大家不妨先思考这样一个问题:“为什么不同厂家、不同价格、不同形状的鼠标,插到电脑上之后都能正常工作?“这是因为各家生产的鼠标者遵循同一套标准,操作系统只要按照这个标准去操作鼠标就可以得到它想要的效果。

“设备框架”就是针对某一类外设,抽象出来一套统一的操作方法以及接入标准。有了这一层抽象,框架上层的应用要访问外设(比如摄像头)是,就不用关具体的厂家或者产地了。只要按照框架提供的操作方法,就可以控制摄像头拍照、摄像了。这套设备框架也为生产厂家提供了方便,他们不需要关心应用具体会怎么使用,只要按照设备框架提供的接入标准设计产品,生产出来就可以在市面上销售了。

嵌入式领域,RT- Thread了提供了这样的一层抽象,用于屏蔽嵌入式上的硬件差异,为应用层提供统一的操作方法,也为底层提供统一的接入标准。

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

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

设备驱动框架层是对同类硬件设备驱动的抽象,将不同厂家的同类硬件设备驱动中相同的部分抽取出来,将不同部分留出接口,由驱动程序实现。

设备驱动层是一组驱使硬件设备工作的程序,实现了访问硬件设备的功能,它负责创建和注册I/O设备。设备驱动层注册设备有以下两种方式。

第一种方式,

使用I/O设备管理层接口直接注册,在设备驱动文件中通过rt_device_register()接口注册到I/O设备管理器中。这种方式是针对操作逻辑简单的设备,可以不经过设备驱动框架层,直接将设备注册到I/O设备管理器中。

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

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

第二种方式

通过设备驱动框架层提供的注册函数进行注册,注册函数一般命名为rt_hw_xx_register(),设备驱动框架层的注册函数又调用了I/O设备管理接口的注册函数rt_device_register(),从而进行设备注册。此种注册方式是针对一些不能使用I/O设备管理接口完成操作的设备,如看门狗等。看门狗设备注册的主要步骤如下。

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

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

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

看门狗设备注册与使用序.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动器
    +关注

    关注

    51

    文章

    7692

    浏览量

    143976
  • 看门狗
    +关注

    关注

    10

    文章

    546

    浏览量

    70415
  • RT-Thread
    +关注

    关注

    31

    文章

    1196

    浏览量

    39053
收藏 人收藏

    评论

    相关推荐

    基于RT-Thread的RoboMaster电控框架设计

    由于 RT-Thread 稳定高效的内核,丰富的文档教程,积极活跃的社区氛围,以及设备驱动框架、Kconfig、Scons、日志系统、海量的软件包……很难不选择
    发表于 09-06 15:21 476次阅读

    RT-Thread设备驱动开发指南基础篇—以先楫bsp的hwtimer设备为例

    RT-Thread设备驱动开发指南》书籍是RT-thread官方出品撰写,系统讲解RT-thread
    的头像 发表于 02-20 16:01 1139次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>设备</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>指南基础篇—以先楫bsp的hwtimer<b class='flag-5'>设备</b>为例

    RT-Thread 的 IO 设备模型框架是由哪些部分组成的呢

    RT-ThreadI/O 设备模型框架是由哪些部分组成的呢?接下来由小编给大家详细介绍一下。1、R
    发表于 03-11 18:17

    【资料】RT-Thread设备框架使用指南

    了 WLAN 设备管理框架。这套框架具备控制和管理 WIFI 的众多功能,为开发者使用 WIFI 设备提供许多便利。  WLAN
    发表于 03-22 16:07

    RT-ThreadI2C设备驱动框架对接如何实现

    GPIO模拟的方式实现I2C通讯。RT-Thread 提供了一套 I/O 设备管理框架,它把
    发表于 05-19 17:11

    【原创精选】RT-Thread征文精选技术文章合集

    、理解RT-Thread内存管理)RT-Thread记录(九、RTT中断处理与阶段小结)RT-Thread记录(十、全面认识 I/O
    发表于 07-26 14:56

    如何使用RT-Thread的串口设备

    STM32F4 探索者开发板上验证。接着分析了示例代码的实现,最后深入地描述了 RT-Thread 设备管理框架与串口的联系。问题阐述RT-Thr
    发表于 10-25 11:05

    详解RT-Thread I2C设备驱动框架及相关函数

    摘要本应用笔记以驱动 I2C 接口的 6 轴传感器 MPU6050 为例,说明了如何使用 I2C 设备驱动接口
    发表于 10-25 12:02

    如何使用RT-Thread SPI设备驱动

    RT-Thread中引入了SPI设备驱动框架。本文说明了如何使用RT-Thread SPI设备
    发表于 10-25 14:20

    RT-Tread设备驱动开发I/O设备框架简析

    _device_find()找到设备,然后使用I/O设备管理接口来该问硬件。第种方式 通过设备
    发表于 03-15 14:44

    RT-Thread设备模型框架及创建注册设备的实现

    RT-Thread设备模型框架及创建注册设备的实现方式介绍如下:
    的头像 发表于 05-28 10:38 1901次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>设备</b>模型<b class='flag-5'>框架</b>及创建注册<b class='flag-5'>设备</b>的实现

    送《RT-Thread设备驱动开发指南》,手慢无!

    过程中的第一选择!本书 也是RT-Thread第8本相关书籍了,本期我们将抽奖送给大家! 抽奖请移步文末↓↓↓ 随着RT-Thread被更广泛地应用于行业中,开发者对嵌入式驱动
    的头像 发表于 03-19 23:00 1145次阅读

    浅析RT-Thread设备驱动框架

    RT-Thread 设备框架属于组件和服务层,是基于 RT-Thread 内核之上的上层软件。设备框架
    的头像 发表于 08-07 15:39 1488次阅读

    基于 RT-Thread 的 RoboMaster 电控框架(一)

    由于 RT-Thread 稳定高效的内核,丰富的文档教程,积极活跃的社区氛围,以及设备驱动框架、Kconfig、Scons、日志系统、海量的软件包……很难不选择
    的头像 发表于 09-19 19:55 504次阅读

    RT-Thread设备驱动开发指南》基础篇--以先楫bsp的hwtimer设备为例

    一、概述(一)RT-Thread设备驱动RT-Thread设备驱动
    的头像 发表于 02-24 08:16 548次阅读
    《<b class='flag-5'>RT-Thread</b><b class='flag-5'>设备</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>指南》基础篇--以先楫bsp的hwtimer<b class='flag-5'>设备</b>为例