2020.5.14
经过一个项目基于rt-thread的深入熟悉,对rt-thread的印象总结如下。
不足:
1、千万装机量应该是对最小内核说的,这部分确实还没有发现很严重的问题,但也有些接口异常处理不足。
2、component里面的组建稳定性是不足的,特别是pthread的资源回收,dfs的非常用接口也遇到过好些问题,对posix的支持完善度要求高的话要慎重考虑。
3、ramfs功能不全,不支持目录。
4、自带的jffs2和Linux内核中的有很大的差别,主要是提供给上层调用的封装接口完全不一样,同时对底层的调用接口也不一样,协议层的结构基本一致,和pthread一样,封装层有较大的问题。
5、C++支持不完善,明确不支持多态,具体见相应的readme。
6、动态加载性能、功能偏弱。
7、最小内核在异常处理上也存在不足,到过一个问题,应用设计:子线程主动退出,在父任务中del销毁资源。
问题原因是idle线程会对僵尸线程(主动退出,而自身调用销毁函数)进行资源回收,但是thread_del接口的异常处理不足,当子线程主动退出,在执行父任务执行del之前,先执行了idle,
idle里先释放了线程资源,父线程在del时,内部没有判断导致内存访问异常,系统崩溃。
8、minilib对posix支撑不够,使用newlib,因为冲突太多,选用的是裸机配置,对posix接口也存在些不足,选用OS版本会和rtt自身定义的结构体冲突较多,需要对libc进行改造。
优点:
1、生态做的不错,开放的心态,有向linux看齐的的感觉,开发过程中需要支持lua脚本,需要支持ini等通过软件包很方便的实现。
2、通用驱动最好对接component中的drivers中的抽象设备层,方便使用生态中的软件包。例如mavell-8801开发包