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

本文详细介绍了软件RTC设备的实现方式,包括其在设备驱动框架层和设备IO管理层的构造过程,强调了其作为硬件无关的特性。同时概述了内部调用流程和应用程序使用流程,以及与OOPC实现的关系。
摘要由CSDN通过智能技术生成

目录

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

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

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

1.软件rtc设备实现类

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

在/ components / drivers / rtc / soft_rtc.c实例化了软件rtc设备类static struct rt_device soft_rtc_dev。

软件rtc设备类可以认为继承自设备基类,只是没有任何自己的私有方法而已。
这就类似c++中一个类继承一个抽象类,这个类重写纯虚方法。
对象图如下:
请添加图片描述
设备基类是抽象类,继承它的软件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设备对象放到对象容器里管理。

详细参见io设备管理层。https://blog.csdn.net/yhb1206/article/details/136440373

4.总结

参见rtt的oopc实现特点

5.内部调用流程

参见内部调用流程

6.应用程序使用流程

参见官方文档等路径

  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值