rtt设备io框架面向对象学习-软件模拟rtc设备

目录

        • 1.软件rtc设备实现类
        • 2.软件rtc设备类的子类
        • 3.初始化/构造流程
          • 3.1 设备驱动框架层
          • 3.3 设备io管理层
        • 4.总结
        • 5.使用

硬件rtc和软件rtc设备是互斥的。因为它们的名字都叫"rtc",在对象容器中不允许重名。

软件rtc设备比较特殊,不依赖于任何硬件,所以它是硬件无关的,所以不需要各个bsp去实现的所以它没有驱动层,只在设备驱动框架层就完成了。

1.软件rtc设备实现类

软件rtc设备比较特殊,直接设备驱动框架层实现了。

在/ components / drivers / rtc / soft_rtc.c实例化了软件rtc设备类

static struct rt_device soft_rtc_dev;

软件rtc设备类可以认为继承自设备基类,只是没有任何自己的私有方法而已。

2.软件rtc设备类的子类

无。

因为软件rtc设备比较特殊,不依赖于任何硬件,所以它是硬件无关的,所以不需要各个bsp去实现的所以它没有驱动层,只在设备驱动框架层就完成了。

3.初始化/构造流程

软件rtc设备对象的构造流程是通用的,且只是从设备驱动框架层到设备io管理层的构造。

3.1 设备驱动框架层

/ components / drivers /rtc/soft_rtc.c实现了实例化了软件rtc设备对象,

rt_soft_rtc_init开启软件rtc设备对象的构造流程:

先重写了rtc设备基类的父类------设备基类------的方法:

#ifdef RT_USING_DEVICE_OPS

soft_rtc_dev.ops = &soft_rtc_ops;

#else

soft_rtc_dev.init = RT_NULL;

soft_rtc_dev.open = RT_NULL;

soft_rtc_dev.close = RT_NULL;

soft_rtc_dev.read = RT_NULL;

soft_rtc_dev.write = RT_NULL;

soft_rtc_dev.control = soft_rtc_control;

#endif

然后调用设备基类的构造函rt_device_register开启设备基类的构造流程。

3.3 设备io管理层

在/ components / drivers / core 下的device.c中实现了rt_device_register,它是io管理层的入口。

它将软件rtc设备对象放到对象容器里管理。

4.总结

整个设备对象的构造/初始化流程其实是对具体设备对象也就是结构体 进行初始化赋值------它这个结构体是包含一个个的结构体 ------模拟的是面向对象的继承机制 。跟套娃似的,层层进行初始化。这样的好处是什么?每层有每层的初始化(构造)函数,就模拟了面向对象的构造函数------按照先调用子类构造/初始化函数,再调用父类的构造/初始化函数方式------其实也是子类构造/初始化函数调用父类构造/初始化函数的流程,来完成设备对象的初始化/构造。最终放到对象容器里来管理。

这样的好处是可扩展,如搭积木似的,也是对内封闭,对外开放,扩展性好,模拟的是面向对象的继承多态机制。

其实每个类的注册函数模拟的是面向对象的构造函数。

5.使用

文档

相关推荐
sealaugh321 小时前
AI(学习笔记第十二课) 使用langsmith的agents
人工智能·笔记·学习
QZ_orz_freedom1 小时前
学习笔记--事务管理
笔记·学习
im_AMBER2 小时前
Web 开发 30
前端·笔记·后端·学习·web
试试勇气3 小时前
Linux学习笔记(八)--环境变量与进程地址空间
linux·笔记·学习
蒙奇D索大3 小时前
【数据结构】考研数据结构核心考点:平衡二叉树(AVL树)详解——平衡因子与4大旋转操作入门指南
数据结构·笔记·学习·考研·改行学it
andwhataboutit?3 小时前
Docker Compose学习
学习·docker·容器
im_AMBER4 小时前
数据结构 04 栈和队列
数据结构·笔记·学习
尘似鹤4 小时前
微信小程序学习(六)--多媒体操作
学习·微信小程序·小程序
UpYoung!5 小时前
无广技术贴!【PDF编辑器】Solid Converter PDF保姆级图文下载安装指南——实用推荐之PDF编辑软件
学习·数学建模·pdf·编辑器·运维开发·个人开发
达瓦里氏1235 小时前
重排反应是什么?从分子变化到四大关键特征解析
数据库·学习·化学