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.使用

文档

相关推荐
执笔论英雄2 小时前
【大模型学习cuda】入们第一个例子-向量和
学习
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
Gary Studio5 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice5 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
lingggggaaaa5 小时前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
PP东5 小时前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
学电子她就能回来吗5 小时前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
AI视觉网奇7 小时前
ue 角色驱动衣服 绑定衣服
笔记·学习·ue5
wdfk_prog8 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
ZH154558913110 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter