选择FreeRTOS, 还是RT-Thread。

发布于 2014-06-23 12:55:53
以为不会有人回复的, [s:154]
重新编辑下我自己的错误, 免得误导人.
-------
首先声明,我不是来砸场子的。
只是简单描述下一个普通用户选择RTOS的过程,希望给RT-Thread的发展提供的参考。

最近工作上需要导入RTOS到SMT32F103芯片上。
备选的有:RT-Thread,FreeRTOS, RTX@Keil.

选择过程:
#1. 第一个被排除的是RTX,因为不知道怎么找到源代码(好像只有头文件就好),而且这也是一个学习过程。
我们不想被束缚在一个平台或芯片上。

#2. 其实最开始选中的是RT-Thread。
原因:哇..全中文教材和手册,移植很方便,不用改动。
准备导入了:为什么有这么多文件,我只需要有个核心而已。打开源文件一看,这个注释....
GPL2,可以接受,但同时说FreeRTOS更好,是修改版的GPL2,不需要公开自己的代码。
----
关于文件多的问题,其实把RTOS独立放置,不要包含到每个工程中,还是可以的。

#3. 最终选择了FreeRTOS
原因: 修改版的GPL2协议,核心很小,移植也非常简单。
源文件的注释很容易理解。
需要的组件可以自己加上去。

--------------
中休前胡乱说一通,看的明白就看看,看不懂就算了。 [s:154]

最终给RT-Thread的建议。
- 把核心和组件和Drivers严格的分开,很多时候,别人只需要一个RTOS核心而已。
- 减少核心文件数量,注释丰富点。
-
    建议:核心的授权可以参考FreeRTOS。(商业使用不用公开自己的源代码。)
RT-Thread也是有免费的商业授权的.
--------------
重新删除了所有不需要的文件, 确实也不大. 附件包含KEIL工程,STM32官方库和RT-Thread核心和一些必要文件, 有需要的可以参考下.
下载附件[STM32_RT-T_Demo_20140605.7z]
--------------
正在重新看RT-Thread的相关文档.
目前有自己疑问还没有找到答案:
#1. API函数没有注明是否可以在中断服务程序中使用, 是否所有IPC API都可以在中断中使用呢?
----> IPC的发送和释放,在IRQ函数中使用没有遇到问题。
#2. Systick使用的中断优先级是多少? ~貌似最低优先级。
#3. 是否与FreeRTOS类似, 有个RTOS 最大优先级设置, 及低于的,可以调用RTOS的API函数, 高于的,着完全不会被打断, 也不可调用API函数.
#4. 很多.C文件居然没有对应的头文件, 很奇怪的做法.还是我又漏看了什么东西.
#5. Finsh shell 错误代码-04
#6. Finsh使用dummy()出现usage fault:SCB_CFSR_UFSR:0x02 INVSTATE,并死机。
------
导入基本OK,进一步验证中。
20140624124415282.png

查看更多

关注者
0
被浏览
23k
24 个回答
bernard
bernard 2014-06-23
没看过RT-Thread的发布说明?
RT-Thread的开源许可和FreeRTOS的一样:
都需要在使用的同时,保留LOGO,或者在网站上给出指向链接。
geniusgogo
geniusgogo 认证专家 2014-06-23
准备导入了:为什么有这么多文件,我只需要有个核心而已。打开源文件一看,这个注释....
GPL2,可以接受,但同时说FreeRTOS更好,是修改版的GPL2,不需要公开自己的代码。

一切源自于你不懂RT-Thread,更不懂scons。 [s:154]
0_0广广
0_0广广 2014-06-23
看了一晚上手册, 越看觉的越有搞头. [s:154]
明天和已有的工程文件合并后, 再实测下中断部分的疑问先.
dlts200466
dlts200466 2015-07-12
现在的商业授权好像有点麻烦吧,还要写用于什么项目什么的。
fighter
fighter 2015-07-14
个人觉得在硬件资源宽裕的情况下用RT-Thread开发应用是比较方便的
lanmanck
lanmanck 2018-08-22
这个家伙没听过ucos?
拖杀猪刀的
拖杀猪刀的 2018-08-24
rt-thread nano版本是很小的,在nano版本中如果只选择kernel的话,跟freeRTOS大小是差不多的。
bernard
bernard 2018-08-24
有些门槛,我们也在反思,,,这次过去研电赛也有很多的收获。希望大家看到后续RT-Thread的调整
ou513
ou513 2018-08-28
bernard 发表于 2018-8-24 14:11
有些门槛,我们也在反思,,,这次过去研电赛也有很多的收获。希望大家看到后续RT-Thread的调整 ...


RTT各资料相对还是少一些,业余电工发的相关资料和参考也不多,所以很多看着介绍是不错,但是就是不知道如何入手。如各组件如何用,驱动设计等资料相对比较少,做好一些应该还是很不错的,这我也是从一个新手试用了角度来说,当然了这个也是很水平有关,水平比较低,就希望各种资料多一些。
toli
toli 2018-09-14
3个都用过,有一段时间在用RTT,对于RTT我都是自动忽略它提供的构建工具,用eclipse自建自己的模板工程,说实在的了解RTT的目录结构后,那些构建工具对我来说太繁琐。

现在主要是RTX(公司主流,方便沟通和交流),FreeRTOS玩得少,用RTX几乎没有什么负担,全程下来就是一个字,爽,MDK里点点就可以了,至于源码...也是点点就可以看到了,什么usb驱动,sd卡驱动,点点也就可以了...再加上自己积累的代码,一个新的项目新写的代码量很少的。
另外你说只想要一个核心,我的感觉是现在已经不关心我用的什么系统了,项目中系统绝对是很小到可以忽略的一部分,系统自带的组件才是真正需要考虑的地方,你不知道把finsh移植到RTX里面可以让RTX用着有多爽....
Jack
Jack 2018-09-14
toli 发表于 2018-9-14 18:25
3个都用过,有一段时间在用RTT,对于RTT我都是自动忽略它提供的构建工具,用eclipse自建自己的模板工程,说 ...


你有用 eclipse 建rtt的模板吗?我用 eclipse 做rtt的项目一直都好多问题
bernard
bernard 2018-09-14
搞了半天只是把finsh shell代码拆出来了
toli
toli 2018-09-15
bernard 发表于 2018-9-14 22:54
搞了半天只是把finsh shell代码拆出来了


如果RTT里面的组件要评选那个好用,那我一定是投给finsh的。现在项目主要是物联网的,基本都是ARM系列的芯片,所以基本都是用MDK,所以用RTX也就没跑了,至于我从RTT里把finsh拆出来,本着提高生产效率的想法做的,我没有用RTT的调度系统,但是用finsh也在用RTT,它是RTT的一部分。我的基本选择策略是什么平台方便用什么,好用的组件不分平台,都用。
这里请熊大放心,我从来没有吝啬向身边的人推广RTT, 将来有机会也希望自己能向RTT贡献好用的组件。
toli
toli 2018-09-15
Jack 发表于 2018-9-14 21:00
你有用 eclipse 建rtt的模板吗?我用 eclipse 做rtt的项目一直都好多问题


一年多前了,基于eclipse代码编辑,定位问题会高效很多
cxelove
cxelove 2018-10-24
想用RTT 可以能力有限,他的设备树驱动总线什么的和linux太像了 总是感觉绕来绕去。。。像i2c,有个bus,bus下面再挂设备,,串口又没有bus。。搞着搞着就晕了。
现在freertos结合cubemx用在stm芯片上还是挺方便的,设备都不用自己初始化的,工程生成出来就字节写逻辑业务代码了,设备直接用句柄调用。。。
yqiu
yqiu 2018-10-24
设备这块很快就有改进了;使用上面,直接使用句柄调用,不需要关心底层。
heimareed
heimareed 2019-01-21
toli 发表于 2018-9-14 18:25
3个都用过,有一段时间在用RTT,对于RTT我都是自动忽略它提供的构建工具,用eclipse自建自己的模板工程,说 ...


老铁,能不能分享一个RTX + Finsh的工程模板?
公司也是要求使用RTX(某些历史原因,具体不表),但是Finsh确实太让人着迷了~
gpfrank
gpfrank 2019-01-29
现在FREERTOS也支持POSIX了。除了动态加载外,其他包也是很丰富。

而且内核使用的BASEPRI不是用的全局开关中断。这一点内核上RT已经落后很多了。
moneng
moneng 2019-06-25
gpfrank 发表于 2019-1-29 12:19
现在FREERTOS也支持POSIX了。除了动态加载外,其他包也是很丰富。

而且内核使用的BASEPRI不是用的全局开关 ...


你好,有办法让RT-Thread也用BASEPRI么?
353896039
353896039 2019-06-27
RTT的注释有点少,而且在追到函数时,注释里面没有函数参数的选择,需要凭着记忆或者查看手册。
gpfrank
gpfrank 2019-07-01
moneng 发表于 2019-6-25 14:03
你好,有办法让RT-Thread也用BASEPRI么?


你搜索,我有个同事已经做好了。并且发布在论坛里了。
bear1
bear1 2019-07-02
gpfrank 发表于 2019-1-29 12:19
现在FREERTOS也支持POSIX了。除了动态加载外,其他包也是很丰富。

而且内核使用的BASEPRI不是用的全局开关 ...


BASEPRI 厉害啊!
恋人心
恋人心 2019-10-12
rtt其实很好用的,比起ucos这些rtos,他的内核代码更加简约,清爽,只不过用起来可能需要点基础,最好能够看懂一些内核,

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友