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设备管理接口来该问看门狗硬件。

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

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

    关注

    52

    文章

    8228

    浏览量

    146271
  • 看门狗
    +关注

    关注

    10

    文章

    560

    浏览量

    70792
  • RT-Thread
    +关注

    关注

    31

    文章

    1285

    浏览量

    40095
收藏 人收藏

    评论

    相关推荐

    RT-Thread记录(十、全面认识 I/O 设备模型)

    学完 RT-Thread 内核,从本文开始熟悉了解 RT-Thread I/O 设备管理相关知识。
    的头像 发表于 06-30 10:38 4160次阅读
    <b class='flag-5'>RT-Thread</b>记录(十、全面认识 <b class='flag-5'>I</b>/<b class='flag-5'>O</b> <b class='flag-5'>设备</b>模型)

    RT-Thread记录(十四、I/O 设备模型之ADC设备

    我曾经考虑过把 RT-Thread 常用的设备都写完,其实通过前面的《全面认识 RT-Thread I/O
    的头像 发表于 07-04 12:28 4401次阅读
    <b class='flag-5'>RT-Thread</b>记录(十四、<b class='flag-5'>I</b>/<b class='flag-5'>O</b> <b class='flag-5'>设备</b>模型之ADC<b class='flag-5'>设备</b>)

    RT-Thread记录(十二、UART设备—使用测试)

    从 UART 设备开始学会使用 RT-Thread I/O 设备模型
    的头像 发表于 07-02 12:42 5000次阅读
    <b class='flag-5'>RT-Thread</b>记录(十二、UART<b class='flag-5'>设备</b>—使用测试)

    RT-Thread记录(十三、I/O 设备模型之PIN设备

    讲完UART设备之后,我们已经熟悉RT-Thread I/O 设备模型了,回头看看基本的 PIN 设备
    的头像 发表于 07-03 11:28 4731次阅读
    <b class='flag-5'>RT-Thread</b>记录(十三、<b class='flag-5'>I</b>/<b class='flag-5'>O</b> <b class='flag-5'>设备</b>模型之PIN<b class='flag-5'>设备</b>)

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

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

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

    RT-Thread设备驱动开发指南》书籍是RT-thread官方出品撰写,系统讲解RT-thread
    的头像 发表于 02-20 16:01 1686次阅读
    <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 I2C设备驱动框架及相关函数

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

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

    本应用笔记以驱动I2C接口的6轴传感器MPU6050为例,说明了如何使用I2C设备驱动接口开发
    的头像 发表于 03-29 10:52 2.1w次阅读
    详细讲解<b class='flag-5'>RT-Thread</b> <b class='flag-5'>I</b>2C<b class='flag-5'>设备</b><b class='flag-5'>驱动</b><b class='flag-5'>框架</b>及相关函数

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

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

    RT-Thread文档_I/O 设备模型

    RT-Thread文档_I/O 设备模型
    发表于 02-22 18:31 0次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>I</b>/<b class='flag-5'>O</b> <b class='flag-5'>设备</b>模型

    浅析RT-Thread设备驱动框架

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

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

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

    基于RT-Thread的RoboMaster电控框架

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

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

    一、概述(一)RT-Thread设备驱动RT-Thread设备驱动
    的头像 发表于 02-24 08:16 1637次阅读
    《<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>为例