完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
按照我的理解,rt原本的构想是统一驱动接口,最终通过I/O驱动管理层的rt_device_read()等函数统一操作底层硬件,使驱动和应用分开。但是现在在学习和使用中发现这些函数只有rt_device_find()被使用到。 以iic为例,官方通过设备管理层-驱动框架层-设备驱动层写好了代码,如果要增加一个新的i2c设备比如aht10传感器,我从网上拉取的软件包是属于应用呢还是驱动呢,如果是驱动(按照网上的说法,设备和总线是分开的,那么aht10 就是设备),那么这个设备驱动继承i2c总线,但是最终出来的函数并非注册到rt-device,也没有适配rt_device_read()这样的统一接口。这样写的话,那么就完全起不到驱动与应用开发人员分开编写代码的初衷。 后来看到ds3231这个RTC软件包,觉得似乎这个软件包才是正确的想法,首先它继承于rtc设备类,然后像官方的写法一样,用自己的都是rt_ds3231_open()与rt_device_open()这些函数一一对应,有些控制的相关函数用输入rt_device_contrl()的cmd参数操作。 本人小白一枚,因为需要实习而公司在用rt系统所以最近在学习,学着学着就对该系统内核缠产生了兴趣,但是因为水平有限,源码很多看不太懂,现在的我感觉玩家包括官方似乎并没有按照原有的构想使用rt的驱动设备,这个只是我的想法,实际情况肯定不是这样,只是我理解不到位,所以才在此请教,希望大佬能指点一二。 |
|
相关推荐
4个回答
|
|
I2C的接口和RTC的接口并不是一样的,也是有区别的,不过用rt_device_read也是可以操作的。RTT把很多常用的外设统一了一下接口。有些特别的就需要rt_device_read等函数来统一。
当然软件包是每个作者自己维护的,所以有没有按照官方严格来做,其实很难有强制约束。 |
|
|
|
I2C的接口和RTC的接口并不是一样的,也是有区别的,不过用rt_device_read也是可以操作的。RTT把很多常用的外设统一了一下接口。有些特别的就需要rt_device_read等函数来统一。
当然软件包是每个作者自己维护的,所以有没有按照官方严格来做,其实很难有强制约束。 |
|
|
|
差不多,特殊的归为统一,常用的既可以用统一的,也可以用定好的API
|
|
|
|
官方没有强求一定,必须,强行使用一些方式。RT-Thread是一个开源的社区,靠大家自发的方式,一些点上也只是一份参考,建议的方式。
所以从这个角度,RTT存在设备驱动框架,但一定就需要这样使用吗?也不是。如果有更好的方式也可以PR到RTT的upstream上,如果这样的方式和RTT的风格、原则一致也就可能被合并进来,推荐给更多人使用。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
590 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2241 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1233 浏览 0 评论
1788 浏览 0 评论
1464 浏览 0 评论
74851 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 11:25 , Processed in 1.531593 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号