IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> rtt面向对象oopc——3.对官方IO设备模型框架图的补充绘图 -> 正文阅读

[嵌入式]rtt面向对象oopc——3.对官方IO设备模型框架图的补充绘图

阅读官方IO设备模型框架图后,有个疑惑:它具体指的是什么呢?如何对应到代码中去?这始终是一个困惑——让我感觉空落落的,悬在半空中。——近日,为了自我解惑,参照rtt源码和官方的IO设备模型框架图绘制了另一个图来解释和剖析官方的IO设备模型框图,姑且称之为IO设备模型框架补充图——端详良久,比较满意,终于自我解惑了。于是分享出来,希望给更多的人解惑。——对照该图,再看官方IO设备模型框图就能看懂了——感觉终于落地了,不再悬在半空中了——就像装了个望远镜,转了下按钮从而加深了景深。

1.官方IO设备模型框架图
rtt官方文档链接——《IO设备模型》
rtt官方IO设备框架图

2.我绘的IO设备模型框架补充图
在这里插入图片描述
该图可以作为官方I/O设备模型框架图的补充图,两图对照看,就能很好理解官方的IO设备模型框架了。

2.1 补充图绘图要点
(1)类图结构(后续画图补上)。
类名(struct结构体名字)
中文类名
该类管理接口所在c文件

(2)类图里.c文件说明。
(a)IO设备管理层和设备驱动框架层的c文件名没有带路径,因为是rtt自己写好的。
IO设备管理层的c文件在rtt源码根目录src下,设备驱动框架层的c文件在rtt源码根目录components下找寻。
(b)设备驱动层的各类下面的c文件路径和名字只是个示意而已,不要当真——只是说“有”这个文件。——具体名字和路径由各BSP开发维护者自己定的。比如图中stm32的drv_usart.c所在路径是bsp/stm32/drv_usart.c,但实际路径(当前)是在rtt源码下的bsp/stm32/libraries/HAL_Drivers/drv_usart.c。比如有的bsp下起的名字不叫drv_usart.c而叫drv_uart.c等等——我建议最好大家遵循统一的命名规则,这样不会像现在这么混乱
随着rtt源码的版本的变化,各bsp的驱动路径和名字可能会发生变化(一般很稳定)。所以如果按照图中的路径找不到就不要奇怪了。
(2)类图中的“xxx”说明。
(a)设备驱动框架层的“xxx”,是代表省略的rtt已经写好的各类,不再一一列出了——可以去rtt源码的components目录下找寻,比如components/drivers下有serial/i2c/spi/sensor/can等等。
(b)设备驱动层的“xxx”,第一个是代表省略的各BSP平台,不再一一列出了——可以去rtt源码的bsp目录下找寻,比如stm32/gd32/at32/avr32/k210等等。第二个代表的是省略的硬件模块,比如CAN/SPI/I2C等等。比如图中最后的类名叫“xxx xxx”,意思是说前一个“xxx
”代表bsp平台,后一个“xxx”代表硬件模块。

2.2 补充图解说官方IO设备模型框架图
该补充绘图,帮助你看懂并理解rtt官方的IO设备模型框架图
(1)看补充图就能知道官方图的各层里面文字的背后代表了什么。
(2)各类继承和派生关系清楚明了。
(3)能看到面向接口编程的思想。子类受到父类接口的约束,子类想办法各自实现父类提供的统一接口。
(4)每类只有一套管理接口。
(5)从下往上不断抽象、统一和屏蔽硬件差异。
(6)OOPC的思想贯穿其中,细细品味。
(7)该补充图,横向看能看到分层思想,纵向看能看到各类派生继承关系。纵向看的话,每个类都实现该类的管理接口。比如从驱动层看起,stm32有的stm32串口设备类(stm32_uart),那么该类就有驱动管理接口在stm32_usart.c中,同理gd32也一样。同理CAN、ADC等设备根据各个厂家都有其驱动的管理接口。在往上走,驱动框架层,那么这个就厉害了,不管下层是stm32、gd32还是别的平台的,把他们属于同一类的统一对接到上层。比如不管硬件是啥,stm32也好,gd32也罢,还是其他,只要都是串口设备的,都对接到rtt写好的serial.c(串口设备类rt_serial_device)——如图所绘,屏蔽了底层差异,体现了面向对象的抽象的威力。从驱动层到驱动框架层,由不同厂商的相同硬件模块创建了很多子类对象,然后对接到同一个父类接口上,多对一,体现面向对象的抽象的威力。再往上,从设备驱动框架层到IO设备管理接口这一层,又是多对一,又是再一次的屏蔽差异,再一次的抽象,最后统一操作了。

tips:
(1)给BSP新增设备驱动对接到rtt框架时,BSP开发者所做的工作就只是开发驱动层就行了。上面2层(驱动框架层和IO设备管理层)rtt都写好了,无需改动,除非发现BUG,或者新增设备类型(但这块就应该是rtt官方来实现了)。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:42:39  更:2022-03-08 22:44:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:20:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码