比较RTOS系统:rtthread、FreeRTOS和uC/OS

在上一篇《嵌入式操作系统浅谈》中,大概介绍了我自己再工作中使用到的如rt-thread,freeRTOS,uCOS,luatos等系统,在这一篇文章中,我简单说一下这些操作系统一些特点,还有就是我们平时的工作中什么场景下用哪种系统比较好。

csdn里面很多大神对上面的一些系统都做过了一些对比和总结:
比如:
1.[RTOS]uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点
2.嵌入式操作系统RT-Thread和Freertos资源对比总结
3.rtthread-ucosii-freertos三系统学习总结
等等文章还是很多的,如果你是刚入门的开发者,建议不要去看,因为你目前没有经验;如果你使用过其中某一个操作系统,想了解一下其他的系统不妨认真的看一下。

1.使用(移植)上的流程对比

1.1 uCOS的使用(移植)流程

可以参考一下uCOS系统移植(hal库)这篇文章,我自己以前也是大概的流程,或者就是直接下载别人做好的一些工程模板,因为uCOS使用的人非常多,往往你使用的mcu一般都会得到支持。

1.2 freeRTOS的使用(移植)流程

这边csdn上也有很多参考,但是我一般都是通过cubemx来直接移植和使用freertos的,这样非常方便快捷,只要够选中间件中的freeRTOS就可以了
我们常用的mcu只要选cmsis_v1的涵盖了m0,m0+,m3,m4等等

1.3 rt-thread的使用(移植)流程

因为rt-thread是国内开发的,官网也是中文的,大部分资料也是中文的,所以这一块对国人的支持是最友好的。

目前rt-thread 大致的开源版本大类有三种rt-thread标准版,rt-thread-nano版,还有rt-thread smart版,可以通过官网资料看一下三个版本的区别

三个版本的区别
标准版 目前是使用最多的版本,涵盖了rt-thread内核,组件,软件包等等
nano版 只有rt-thread内核,没有组件和软件包,当然可以自己移植,可以看做就是freertos
smart版 这个版本我自己还有身边的人都只是根据实际的教程走过,没有出来过产品,可以简单的当做是Linux,但是api接口等风格还都是rt-thread的

不同的版本有都有自己不同的使用流程,以标准版为例,以新手为例rt-thread要比freeRTOS和uCOS难上手很多,因为他不光要移植内核,还需要移植设备框架,而且还需要用到env工具,好在后来rt-thread自己出了他们的IDE(rt thread studio),这个IDE类似eclipse,对于只熟悉keil或者IAR的嵌入式工程师来说,学习成本有点高,所以很多初学者或者入门的人都会在这边劝退。但是如果熟悉了他的流程,在开发过程当中使用rt-thread还是相当有趣的,所以如果你正好也卡在移植BSP的阶段,不妨多尝试几次,移植不通过多到rt-thread社区问一下小伙伴,那边的社区还是挺活跃的。

一般情况下,如果是使用stm32直接看官方的BSP制作流程就可以简单的把rt-thread跑起来,后面再根据教程添加对应的驱动或者软件包等。

1.4 luatos使用教程

目前luatos主要支持的还是他们自家的芯片或者是产品,所以使用上跟着教程走就可以了,非常方便,开发其实也挺简单的,但是要掌握lua,lua我大概前后花了1个月时间去学习,现在也能够大概写一些简单的脚本。

小结

使用freeRTOS是比较简单的,使用rt-thread标准版是最复杂的,简单有简单的好处,复杂也有复杂的特点,最好的情况就是都自己动手尝试一遍。

2. 开发过程中的一些对比

2.1 freeRTOS和uCOS

这两个系统都只是提供了实时内核,所以相对来说会简单一点,一般的情况就是把以前while(1)中的1个任务,分成多个任务task来执行,配合一些系统提供的任务间通信的API来实现,数据传递,同步等等功能。

一般使用freeRTOS的都喜欢用他提供的Tickless来做低功耗功能,有兴趣的朋友可以自己动手尝试一下,但是先说明低功耗是一个比较复杂的开发过程,一般情况都是裸机开发先通过后,再转向系统的开发,因为不光是涉及软件的问题,同样也涉及到硬件,外设,电源,使用环境场景等等因素。

2.2 rt-thread

前面也提到了,rt-thread想要真正跑起来,为自己所用,有一定的难度,好在目前资料都是中文的,认真看完,再参考一些案例,应该没什么太大的问题。
使用rt-thread的大致流程一般是:
1.BSP制作
2.添加外设驱动
3.系统配置和裁剪
4.添加和配置软件包

2.3 LuatOS

LuatOS当然是最简单的了,所有自带的外设都有对应的demo程序可以做参考,需要添加的其他常见外设或者通信其他的芯片也会找到官方提供的demo,作为开发者还是挺舒服的,但是里面难免会有一些bug,建议要是自己做产品的话,一定要一步一步验证好。

小结

虽然freeRTOS和uCOS使用起来很方便,但是他们只提供了实时内核。
而像rt-thread和luatOS的话,已经提供了十分丰富外设和软件包,让你在开发的过程中避免了重复造轮子。

3.系统维护上的区别

3.1 freeRTOS

从目前使用下来的情况,在选定好系统版本,并且开发认证完成后,一般情况下不需要对内核进行升级,还是比较稳定的。

3.2 uCOS

因为一些情况下经常使用的是别人制作好的模板,往往达不到自己要求的效果,搭建demo和简单的多任务开发还可以,但是对于比较复杂的应用来说往往修改的地方还是挺多的,维护起来还是有点吃力的。

3.3 rt-thread

rt-thread的话其实是经常需要对系统进行维护的,还好因为其特性,小版本之前的维护还是比较方便的,但是大版本的升级,或者代码迁移还是挺麻烦的比方最近把一年前做的(4.0.3的版本升级到4.1.1)就比较麻烦,很多源码结构和目录都变了,需要一个模块一个模块来迁移。迁移完成后,还需要大量的时间和精力来测试,当然如果之前使用的版本没有特殊的问题,而且产品是稳定的,就不要去升级。

3.4 LuatOS

LuatOS 维护起来是最方便的,因为他本身提供了远程升级的功能,而且还设计的时候已经设计好了升级底层和用户层脚本的方式,而且更好的是支持了差分升级,有兴趣的朋友可以看一下官网的远程升级教程

小结

在维护的层面来看LuatOS又是维护起来最方便的,其次是freeRTOS和uCOS这样的内核级的系统,而像是rt-thread这样比较庞大的系统维护起来还是挺麻烦的,既要会维护系统内核,又要会维护一些软件包的更新,如果有一些软件本身有一些小的问题,修改起来也许是会比较费时间的。

4. 总结

根据上面简单写的从系统的使用,开发到后续的维护过程的简单分析

使用(移植) 开发过程 维护过程
freeRTOS 简单 复杂 简单
uCOS 简单 复杂 简单
rt-thread 入门后简单 简单 复杂
LuatOS 简单 简单 简单
物联沃分享整理
物联沃-IOTWORD物联网 » 比较RTOS系统:rtthread、FreeRTOS和uC/OS

发表评论