rtthread smart发布出来很久了,一直没时间玩,最近在rtthread上开发使用device框架感觉太爽太省心了。
然后突然想到,如果在rt smart上跑同样这套代码,device框架还有用吗?
因为smart是跑在有mmu芯片的系统,有内核态和用户态之分。
如果我一个device注册在内核态,在用户态使用 rt_device_find 查找到的 设备对象也是内核态的,用户态肯定不能直接操作内核态的数据呀,再说还有虚拟地址之分。
希望大佬能解答我的疑惑
rtt 没有“内核态和用户态之分”吧,https://zhuanlan.zhihu.com/p/340515820
可以参考下RT-Thread Smart的说明文档,
RRT的deveice框架参考了“Linux下一切皆文件”的设计思想,
在linux下用户也可以实用open/read/write/close对内核态下的设备驱动进行访问,
我想RT-Thread Smart在学习这一点上,应该是要支持的,
只不过这里肯定会发生系统调用,开销会大一点。
所以之前的rtt软件包最好是运行在内核态了。因为很多rtt api调用返回的都是结构体之类的,虽然不知直接操作结构体的数据。比如rt_device_find 返回的肯定是目标设备的结构体,这个结构体对象肯定在内核的内存中,如果用户太的进程要操作,那要涉及内存共享啥的。
嗯😊多试试,多了解一下就都知道了