嵌入式技术论坛
直播中

郝埃连

7年用户 1377经验值
私信 关注
[问答]

在rtthread smart上可以使用device框架吗

rtthread smart发布出来很久了,一直没时间玩,最近在rtthread上开发使用device框架感觉太爽太省心了。
然后突然想到,如果在rt smart上跑同样这套代码,device框架还有用吗?
因为smart是跑在有mmu芯片的系统,有内核态和用户态之分。
如果我一个device注册在内核态,在用户态使用 rt_device_find 查找到的 设备对象也是内核态的,用户态肯定不能直接操作内核态的数据呀,再说还有虚拟地址之分。
希望大佬能解答我的疑惑

回帖(7)

张龙祥

2022-5-5 14:15:28
rtt 没有“内核态和用户态之分”吧
举报

HCPcry

2022-5-5 14:15:42
肯定可以,rt smart的目的之一就是设备框架,感兴趣可以试试哦。不过rtt之前的软件肯定没有用户态之分。不过rt smart上的新软件可以区分用户态和内核态。不知道这么回答是否明了?
举报

郝埃连

2022-5-5 14:15:51
所以之前的rtt软件包最好是运行在内核态了。因为很多rtt api调用返回的都是结构体之类的,虽然不知直接操作结构体的数据。比如rt_device_find 返回的肯定是目标设备的结构体,这个结构体对象肯定在内核的内存中,如果用户太的进程要操作,那要涉及内存共享啥的。
举报

贾大林

2022-5-5 14:16:11
RRT的deveice框架参考了“Linux下一切皆文件”的设计思想,
在linux下用户也可以实用open/read/write/close对内核态下的设备驱动进行访问,
我想RT-Thread Smart在学习这一点上,应该是要支持的,
只不过这里肯定会发生系统调用,开销会大一点。
举报

郝埃连

2022-5-5 14:16:26
open/read/write/close应该是posix接口的
举报

杨万富

2022-5-5 14:16:36
rt-smart上把rt_device_* API穿越了,都有对应的系统调用。
举报

郝埃连

2022-5-5 14:16:52
感谢大佬抽空回答,我觉得rt_device_是个很省心的设计。rt-smart还得多研究下代码,代码能解释出。 rt-smart代码比rt thread的代码复杂好多,学习难度大呀
举报

更多回帖

发帖
×
20
完善资料,
赚取积分