Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Devices
rtt面向对象的IO设备对象初始化理解
发布于 2020-05-23 09:57:41 浏览:1446
订阅该版
先上官网的关系图。 官图 一、从上往下看其层次: 第5层.rtt基对象层,对应上面官图的最上层——基类,object.c 第4层.rtt设备层,对应上面官图的第2层——设备基类,device.c 第3层.rtt设备子类层,对应上面官图的最下层——各子类设备对象,比如adc.c 第2层.rtt子类设备对接层,上面官图没给出,属于黑户。比如drv_adc.c 第1层.sdk层。比如stm32的HAL库。 第0层.硬件。比如stm32芯片。 其中第0-1层是芯片厂家所提供。 第2层对接rtt的IO框架的——需要客户以第1层为基础写出对接接口,这部分有些芯片平台的rtt已写好,比如stm32。 第3-5层是rtt的IO框架层——不需要客户动手,rtt已写好,只需写好第2层。 二、rtt的设备子类对象初始化过程 rtt设备子类对象的初始化过程是从底层向高层流动的过程。从第2-5层,初始化是往高处走。 第2层,rtt子类设备对接层:调用第1层接口对驱动进行初始化并传递驱动的属性和方法到第3层 第3层,具体设备对象层:初始化具体设备对象的属性和方法,以及初始化具体设备对象的父类的属性和方法——对父类方法的重新映射——这也是多态的体现(子类调用同一父类的方法表现不同)。 第4层,设备对象层:对具体设备对象的父类的属性进行初始化,并调用基类对象初始化。 第5层,基类对象层:初始化具体设备对象的父类的父类——即基类对象——并放到内核对象容器对应类型的链表中去进行管理。 三、rtt面向对象分析 第3-6层是rtt具体设备对象初始化过程(比如串口设备对象初始化过程等),体现了面向对象的三大特性: (1)封装性:把属性和方法封装到各自的类中。 (2)继承的特性:子类继承了父类的属性与方法 (3)多态的特性:子类继承父类的方法是通过指针实现了对父类方法的重映射或者说修改,从而实现了多态的特性——子类调用同一父类的方法而表现不同。 从而可以看出c面向对象与面向对象的语言不同的点: c面向对象: (1)不管子类还是父类的方法都是在外部实现的,通过指针来“继承”过来。 (2)对父类方法的继承是对父类方法的重写:正是因为c面向对象的方法是在外部实现的,子类对父类方法的继承实质是通过指针指向不同的函数——不同子类给其父类链接的函数不同,所以只存在对父类方法的重写,不存在对父类方法的拓展这一说。 面向对象的语言: (1)子类、父类方法的实现都是封装在类的内部,在内部实现的。 (2)子类可以对父类的方法进行重写或者拓展以实现多态的特性——正是因为它们的方法是在类的内部实现而不是在外部实现的,所以可以拓展。 所以给我的感觉c面向对象和面向对象的语言最大不同是方法的实现不同,一个在外部实现,一个在内部实现,这就是本质的不同了。 ![Screenshot_20200501_132646.jpg](https://oss-club.rt-thread.org/uploads/202005/23/095700jch6ps1jiiif4a1a.jpg)
查看更多
3
个回答
默认排序
按发布时间排序
Linux
2020-05-25
这家伙很懒,什么也没写!
基本上都是参考linux做法,mark
yhb1206
2020-05-25
https://blog.csdn.net/yhb1206
我没看过linux的内核源码,我是先接触rtt的,所以你说的这个是真的么?那和linux是相通的了?
yhb1206
2020-05-25
https://blog.csdn.net/yhb1206
面向对象是对面向过程的封装。 理由:因为面向对象方法内部的实现依然是面向过程的,只是把面向过程的方法放到类中,所以我说面向对象是对面向过程的封装。 如果说面向过程是摆放杂乱无章的杂货店或图书馆,面向对象就是井井有条分类管理的杂货店或图书馆。 如果说面向过程是一盘散沙的国家,那么面向对象就是诸侯国国家或者说联邦制国家,各诸侯国或联邦都有自己的势力范围(属性)和军队(方法)。
撰写答案
登录
注册新账号
关注者
1
被浏览
1.4k
关于作者
yhb1206
https://blog.csdn.net/yhb1206
提问
9
回答
69
被采纳
0
关注TA
发私信
相关问题
1
问个问题,ili9320驱动里面rt_hw_lcd_draw_blit_line 这个函数是干什么用的
2
LCD双缓冲有什么好的办法实现
3
LCD NT35510 驱动代码
4
io设备驱动的疑惑与建议
5
液晶屏驱动 U8g2 移植
6
求助:在模板上添加LCD模块出现L6406E错误
7
hwtimer硬件定时器驱动和使用经验
8
硬件定时器超时时间计算问题
9
请教spi驱动lcd显示屏问题
10
rtt-master(3.1.1)bsp—armfly中drv_lcd.c中是不是错了啊?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread 全球电子设计大赛】基于vision board 的巡检除冰机器人
2
新手教程-Pin设备使用
3
基于嵌入式的智能关怀系统#24嵌入式设计大赛
4
基于机器视觉识别自动跟踪器
5
[24嵌入式设计大赛]基于Vision-Board的智能应急环境监测控制小车
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
文件系统
DMA
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
ota在线升级
WIZnet_W5500
UART
flash
packages_软件包
cubemx
PWM
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
中断
flashDB
socket
Debug
GD32
编译报错
msh
keil_MDK
at_device
MicroPython
rt_mq_消息队列_msg_queue
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
5
个答案
2
次被采纳
用户名由3_15位
6
个答案
1
次被采纳
rv666
6
个答案
1
次被采纳
xiaorui
2
个答案
1
次被采纳
张世争
2
个答案
1
次被采纳
本月文章贡献
jaffer
1
篇文章
5
次点赞
rtt_dmx
1
篇文章
4
次点赞
flytianya2010
1
篇文章
2
次点赞
BRICK PORTER
1
篇文章
2
次点赞
不灬忘初心
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部