RT-Thread的设备模型

2023-10-27

 RTT内核对象——设备

RT-Thread有多种内核对象,其中设备device就是其中一种。

内核继承关系图如下:

设备继承关系图如下:

I/O 设备模型框架

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

I/O 设备管理层:实现了对设备驱动程序的封装。设备驱动程序的升级、更替不会对上层应用产生影响, 从而降低了代码的耦合性、复杂性,提高了系统的可靠性。

设备驱动框架层:对同类硬件设备驱动的抽象, 将不同厂家的同类硬件设备驱动中相同的部分抽取出来。

设备驱动层:是一组驱使硬件设备工作的程序,实现访问硬件设备的功能。这一层是与硬件有关的,不同的芯片的同种外设驱动是不同的,STM32的GPIO驱动与NXP的GPIO驱动是不同的。这一层负责创建与注册I/O设备,对于操作逻辑简单的设备,可以不经过设备驱动框架层。

设备的两种注册方式

1、 对于操作逻辑简单的设备,可以不经过设备驱动框架层,直接将设备注册到 I/O 设备管理器中:

2、 对于另一些设备,如看门狗等,则会将创建的设备实例先注册到对应的设备驱动框架中,再由设备驱动框架向 I/O 设备管理器进行注册 :

I/O 设备模型框架补充图

IO设备模型

访问IO设备

 应用程序通过 I/O 设备管理接口来访问硬件设备,当设备驱动实现后,应用程序就可以访问该硬件。I/O 设备管理接口与 I/O 设备的操作方法的映射关系下图所示:

设备对象的管理

RT-Thread中有那么多种内核对象,它是怎么管理这些内核对象呢?其使用对象容器来管理这些对象。这个对象容器给每一类内核对象分配一个链表,每当创建一个对象实体,这个对象实体就被链接到对应的链表上,如:

这个对象容器对应到代码中是一个struct rt_object_information类型的结构体数组rt_object_container[RT_Object_Info_Unknown]

初始化对象列表节点头里面的nextprev两个节点指针分别指向自身,如:

 

若创建两个线程对象,则对象容器里变为:

rt-thread中内核对象的组织形式如下:
在这里插入图片描述

 

参考资料:

I/O 设备模型

RT-Thread 文档中心

  

【RT-Thread笔记】IO设备模型及PIN设备

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RT-Thread的设备模型 的相关文章

  • 常见Web安全漏洞

    常见Web安全漏洞 1 越权漏洞 不同权限账户之间的存在越权访问 检测 抓去a用户功能链接 然后登录b用户对此链接进行访问 抓去a用户功能链接 修改id为b的id 查看是否能看b的相关数据 替换不同的cookie进行测试查看 防范 1服务器
  • gin框架29--自定义验证器

    gin框架29 自定义验证器 介绍 案例 说明 介绍 本文介绍了如何在gin框架中自定义验证器 并加以案例说明 案例 源码 package main import net http time github com gin gonic gin
  • JetBrains:推出“新一代 IDE ”!VS Code 对手来了

    近期 JetBrains 在官方博客宣布 推出一款有点不一样的轻量级编辑器 Fleet 并称其为 下一代 IDE 官方地址 https www jetbrains com zh cn fleet 官网介绍中说明 以 20 年的 IDE 开发

随机推荐

  • flink-python的安装

    一 下载flink flink flink python at master apache flink GitHub 二 安装pyflink yum install maven 安装maven 3 1 1以上版本 https ci apac
  • 小程序授权登陆流程

    小程序授权登陆流程 1 当用户进入微信小程序时 首先我们先判断用户是否授权过此小程序 wx getSetting wx getSetting方法获取用户的当前设置 查看是否授权 sucsess res gt 调用成功的回调函数 if res
  • 影视剪辑,PR剪辑软件两个转场教程

    一 古风渐变擦除转场 拖入视频1和视频2 将视频2放到视频1上面的轨道 2者重叠部分就是转场部分 效果 渐变擦除 拖到视频2 在开头K关键帧 效果控件 渐变擦除 过渡完成 K帧调到100 在2段视频交接处 K帧 过渡完成调到0 为了使效果更
  • 数据中台-让数据用起来-8

    文章目录 第八章 数据资产管理 8 1 数据资产的定义和3个特征 8 2 数字资产管理现状和调整 8 3 数据资产管理的4个目标 8 4 数据资产管理在数据中台架构中的位置 8 5 数据治理 8 5 1 数据治理的6个目标 8 5 2 数据
  • 【无人机路径规划】基于IRM和RRTstar进行无人机路径规划(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 文章详细讲解 1 概述 本文将无人机路径规划这一非线性规
  • 2021年最新,解决xgboost安装问题:xgboost.core.XGBoostError: XGBoost Library (xgboost.dll) could not be loaded.

    1 环境 python 3 7版本 64位的 原来 python3 8版本的安装不了 平台不支持 2 直接pip3 install xgboost 3 然后有出错提示xgboost core XGBoostError XGBoost Lib
  • 2020-09-26

    package main 本文通过golang 实现msgpack字节流 参见 https github com hashicorp memberlist git util go decode encode import bytes fmt
  • 打印准考证服务器异常显示,注意了!打印准考证时,你可能遇到这些问题!

    原标题 注意了 打印准考证时 你可能遇到这些问题 2019年研究生准考证下载打印开放时间为 12月14日 12月24日 考生们一定要留心 不要错过打印时间 准考证打印流程 第一步 登录中国研究生招生信息网 并填写用户名和密码 第二步 登录完
  • Docker启动提示:Cannot connect to the Docker daemon...

    执行docker image导入时 提示 Cannot connect to the Docker daemon at unix var run docker sock Is the docker daemon running 执行dock
  • 实战:如何修改vscode作为git默认的编辑器-20211108

    目录 文章目录 目录 实验环境 实验软件 无 1 问题 如何修改vscode作为git默认的编辑器 2 配置方法 1 查看当前环境 2 开始配置 3 验证 关于我 最后 实验环境 win10 git version 2 17 0 windo
  • 硬盘的读写原理

    硬盘的种类主要是SCSI IDE 以及现在流行的SATA等 任何一种硬盘的生产都要一定的标准 随着相应的标准的升级 硬盘生产技术也在升级 比如 SCSI标准已经经历了SCSI 1 SCSI 2 SCSI 3 其中目前咱们经常在服务器网站看到
  • el-date-picker 限制固定开始时间与结束日期,用户只能在此范围内选择

    今天拿到的需求是 开始时间与结束时间是固定的 用户只能在这个范围内选择 为了用户体验好点 我选择了把不能选的日期直接置灰这种实现效果 效果如下 能清楚的看到 2023 01 04 之前的日期都不能选择 当前时间限制 开始范围是2023 01
  • handler机制的原理面试,技术水平真的很重要!真香

    面试如作战 我们看战争影视剧的时候 经常看到这些剧作往往主要聚焦于作战过程 战场战略 对战前准备给的篇幅往往很少 实际上 战前准备也是关键的一环 没有充足的粮草 车马 兵器的准备 别说赢得战争 投入战斗都不可能 这个道理在面试中也是一样 如
  • Linux环境项目以jar包形式启动,指定环境配置文件

    nohup java jar xxx jar spring profiles active DEV gt xxx logs txt
  • 选择排序和冒泡排序算法

    冒泡排序算法 Test public void sort2 int array 1 34 4 56 67 7 89 for int i 0 i lt array length 1 i for int j 0 j lt array lengt
  • 7-16 求符合给定条件的整数集 (15分)

    7 16 求符合给定条件的整数集 15分 给定不超过6的正整数A 考虑从A开始的连续4个数字 请输出所有由它们组成的无重复数字的3位数 输入格式 输入在一行中给出A 输出格式 输出满足条件的的3位数 要求从小到大 每行6个整数 整数间以空格
  • 基于CRNN的中文车牌识别

    1 概述 目前HyperLRP是一个开源的 基于深度学习高性能中文车牌识别库 本文主要在其基础上进行改动 自己训练一个crnn车牌识别模型 2 可识别的车牌类型 单行蓝牌 单行黄牌 新能源车牌 白色警用车牌 使馆 港澳车牌 教练车牌 3 可
  • 在windows上配置VScode支持ARM GCC开发环境

    简单有效的在windows上 配置VS Code 以支持GCC开发环境 没有什么花里胡哨的 需要用到的工具 Visual Studio Code 编辑工具 ARM GCC 交叉编译工具链 Msys2 命令行开发环境 mingw window
  • DDIM模型代码解析(一)

    目录 预备知识 main py 解析命令行参数 解析配置文件 预备知识 由于代码中除了一些必要的对模型 数据进行操作的PyTorch函数外 还有一些辅助显示训练等过程有关信息的 或辅助对文件目录进行操作的库 因此 建议读者先对这些库进行了解
  • RT-Thread的设备模型

    RTT内核对象 设备 RT Thread有多种内核对象 其中设备device就是其中一种 内核继承关系图如下 设备继承关系图如下 I O 设备模型框架 应用程序通过 I O 设备管理接口获得正确的设备驱动 然后通过这个设备驱动与底层 I O