主流国产RTOS
物联网的时代突然爆发,催生了很多优秀的国产RTOS,十年磨一剑,然后华山论剑,下面以我本人的一点见解简单对比一下,以小白的开发视角。
腾讯tiny OS
TencentOS tiny是腾讯面向物联网领域开发的实时终端操作系统,具有低功耗,低资源占用,模块化,可裁剪等特性。
TencentOS tiny提供最精简的RTOS内核,内核组件可裁剪可配置,可灵活移植到多种终端MCU上。而且,基于RTOS内核,提供了COAP/MQTT/TLS/DTLS等常用物联网协议栈及组件,方便用户快速接入腾讯云IoT Hub。
TencentOS tiny为物联网终端厂家提供一站式软件解决方案,方便各种物联网设备快速接入腾讯云,可支撑智慧城市、智能水表、智能家居、智能穿戴、车联网等多种行业应用。
rtt 和rtt nano
它具体包括以下部分:
内核层:RT-Thread 内核,是 RT-Thread 的核心部分,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件 / 板级支持包)与硬件密切相关,由外设驱动和 CPU 移植构成。
组件与服务层:组件是基于 RT-Thread 内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合。
RT-Thread 软件包:运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。RT-Thread 提供了开放的软件包平台,这里存放了官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择,这也是 RT-Thread 生态的重要组成部分。软件包生态对于一个操作系统的选择至关重要,因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内,打造出自己想要的系统。RT-Thread 已经支持的软件包数量已经达到 60+,如下举例:
物联网相关的软件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
脚本语言相关的软件包:目前支持 JerryScript、MicroPython。
多媒体相关的软件包:Openmv、mupdf。
工具类软件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
系统相关的软件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
外设库与驱动类软件包:RealTek RTL8710BN SDK。
其他。
freertos
作为宇宙第一占有率的rtos,它也只是个内核。单片机中ST是主流,主流推了ST cubemx开发工具,开发工具带有freertos,不要太爽。
MS-RTOS
MS-RTOS 简介
MS-RTOS(Micro Safe RTOS)是翼辉信息全新设计的一款面向未来物联网需求的新一代小型物联网操作系统,其显著的特点是开创性地在没有 MMU 和资源受限的 MCU(如Cortex-M3)上也能支持多进程与动态装载技术,使得应用与系统能分离开发、独立升级;MS-RTOS 支持内核空间内存保护(应用程序通过 syscall 访问内核),使得内核有着非常高的安全性。MS-RTOS 在提供足够丰富功能的同时,保持了高效简洁的实现,对 ROM、RAM 消耗极低,特别适用于对硬件成本敏感、安全性要求特别高的产品。与此同时翼辉信息提供了一套功能强大的集成开发环境 IDE,给开发者在各种开发阶段提供了强而有力的支撑。
OneOS
OneOS概述
OneOS 是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M、MIPS、RISC-V等主流芯片架构,兼容POSIX、CMSIS等标准接口,支持MicroPython语言开发,提供图形化开发工具,能够有效提升开发效率并降低开发成本,帮助用户开发稳定可靠、安全易用的物联网应用。
one os和rtt 非常像,我倒是怀疑是rtt的定制版本,只是里面函数名字改了一下而已。当然,既然差不多,说明这个方向是没问题的。
移植对比
名称 | keil/iar | studio | 说明 |
---|---|---|---|
tiny os | ★★ | – | 移植简单,按照文档一定是没问题,最主要的是选择CPU汇编文件,选择正确就可以,复制文件需要一些耐心,整体依然是很简单。 |
rtt | ★★★★ | ★ | 移植难,使用也比较难,但是,习惯之后会比较好用,问题在于门槛高一些,需要多看官网文档,如果使用rtt studio,难度★,就会变得十分简单,但是,驱动依然是很难的。 |
rtt nano | ★★ | ★ | 移植偏简单,在使用cubemx的情况下,难度★,是需要改动一些函数位置的,这些还是很考验耐心的,很多小白都是不能理解改动函数,这也导致了变得更难 |
freertos | ★ | – | 在cubemx下,移植只需要打一个勾,没有比这个更爽的事情了。 |
MS-RTOS | – | – | 现在是靠其官网的云平台进行构建,再下载,再。。。还是有些复杂的,大部分源码还是藏起来的(官方已确认),bsp很少,没人用就没人写博客,没人写博客就入门到放弃 |
oneos | ★★★★★ | ★★ | 和rtt几乎是一致的,想法步骤,就是比rtt更多了一点点东西,在使用oneos studio情况下 难度★★ |
使用对比
名称 | 难度 | 优点 | 缺点 |
---|---|---|---|
tiny os | ★★ | 源码十分简短,对想学习rtos的人非常友好,不改变和影响原有的开发方式 | 组件需要自己移植 |
rtt | ★★★ | 习惯之后还是方便很多,最重要的是组件很方便,配置比自己移植快得多 | 想要理解rtt源码,没点硬实力还是不行的,光是使用来说,学习成本还是很陡峭的 |
rtt nano | ★★ | 只是内核没有什么组件,只是初始化外设函数位置改变,其他不影响原有的开发方式 | 没有组件 |
freertos | ★ | 在cubemx下,使用标准的CMSIS接口,需要直接去keil看文档,不改变原有开发方式 | 但是没组件用很难受 |
MS-RTOS | – | 有点类似于rtt,把驱动抽象,app和内核分离单独升级(rtt tiny也支持) | 但是生态还不完善,组件很少,需要从云平台构建、下载、编译、配置 |
oneos | ★★★ | 组件和rtt一样多,还能变成rtt封装 | 部分和rtt有区别,现在使用属于第一个吃螃蟹的人 |
遇见问题时解决方式对比
名称 | 说明 |
---|---|
tiny os | 文档说明较少,不是没有,问题只能通过交流群解决,其实内核是什么问题的,组件虽然都有移植例子,怕是要自求多福了 |
rtt | 文档丰富,切记多看细看文档,论坛也能解决大部分问题,交流群也会解决问题,难在有些组件多多少少还是缺点文档的,或者说是使用的人不看就直接用 |
rtt nano | 文档和rtt完整版在一起,问题解决方式rtt完整版一样的 |
freertos | CMSIS文档只看这个就差不多够了 |
MS-RTOS | 文档较少,解决不了问题 |
oneos | 文档偏多,可在交流群,论坛暂时冷清 |
推荐指数
名称 | 指数 | 说明 |
---|---|---|
tiny os | ★★★★ | 十分适合作为第一个上手的os进行深入学习,组件也有,不过需要动动小手 |
rtt | ★★★★★ | 组件十分丰富,还有很多开发者再不停的开发组件,这分明是it的模式,虽然有一定学习成本,但是学会之后可是坐上了火箭开发速度,比以前的蜗牛快很多 |
rtt nano | ★★★★★ | 只是内核,第一次学习os非常适合,可以无缝学习升级完整版 |
freertos | ★★★★ | 打个勾就能用了,使用也是很好的选择 |
MS-RTOS | – | 暂时还不能用 |
oneos | ★★ | 和rtt很像,还是可以试试看 |