满足实时控制要求的嵌入式操作系统(RTOS)操作系统,以下介绍 14 种主流的 RTOS,分别为μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、Vxworks、QNX、NuttX,而国产的嵌入式操作系统包括都江堰操作系统(djyos)、Alios Things、Huawei LiteOS、RT-Thread、SylixOS。

 

下面分别介绍这十四种种嵌入式操作系统的特点。

 

1、μClinux

μClinux 是一种优秀的嵌入式 Linux 版本,其全称为 micro-control Linux,从字面意思看是指微控制 Linux。同标准的 Linux 相比,μClinux 的内核非常小,但是它仍然继承了 Linux 操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的 API,以及 TCP/IP 网络协议等。因为没有 MMU 内存管理单元,所以其多任务的实现需要一定技巧。

 

μClinux 在结构上继承了标准 Linux 的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式 CPU 特点进行改良,且不支持内核抢占,实时性一般。

 

综上可知,μClinux 最大特点在于针对无 MMU 处理器设计,这对于没有 MMU 功能的 stm32f103 来说是合适的,但移植此系统需要至少 512KB 的 RAM 空间,1MB 的 ROM/FLASH 空间,而 stmf103 拥有 256K 的 FLASH,需要外接存储器,这就增加了硬件设计的成本。

 

μClinux 结构复杂,移植相对困难,内核也较大,其实时性也差一些,若开发的嵌入式产品注重文件系统和与网络应用则μClinux 是一个不错的选择。

 

 

2、μC/OS-II
μC/OS-II 是在μC/OS 的基础上发展起来的,是用 C 语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-II 能管理 64 个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和扩展性强等特点。


在文件系统的支持方面,由于μC/OS-II 是面向中小型嵌入式系统的,即使包含全部功能,编译后内核也不到 10 KB,所以系统本身并没有提供对文件系统的支持。但是μC/OS-II 具有良好的扩展性能,如果需要也可自行加入文件系统的内容。


在对硬件的支持上,μC/OS-II 能够支持当前流行的大部分 CPU,μC/OS-II 由于本身内核就很小,经过裁剪后的代码最小可以为 2KB,所需的最小数据 RAM 空间为 4 KB,μC/OS-II 的移植相对比较简单,只需要修改与处理器相关的代码就可以。


综上可知,μC/OS-II 是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核,针对于没有 MMU 功能的 CPU,它是非常合适的。它需要很少的内核代码空间和数据存储空间,拥有良好的实时性,良好的可扩展性能,并且是开源的,网上拥有很多的资料和实例,所以很适合向 stm32f103 这款 CPU 上移植。

 


3、eCos
eCos(embedded Configurable operating system),即嵌入式可配置操作系统。


它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。


最大特点是配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C 语言库和底层运行包等。


每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用 eCos 提供的配置工具可以很方便地配置,并通过不同的配置使得 eCos 能够满足不同的嵌入式应用要求。


eCos 操作系统的可配置性非常强大,用户可以自己加入所需的文件系统。eCos 操作系统同样支持当前流行的大部分嵌入式 CPU,eCos 操作系统可以在 16 位、32 位和 64 位等不同体系结构之间移植。


eCos 由于本身内核就很小,经过裁剪后的代码最小可以为 10 KB,所需的最小数据 RAM 空间为 10 KB。


在系统移植方面 eCos 操作系统的可移植性很好,要比μC/OS-II 和μClinux 容易。


综上所述,eCos 最大特点是配置灵活,并且支持无 MMU 的 CPU 的移植,开源且具有很好的移植性,也比较合适于移植到 stm32 平台的 CPU 上。但 eCOS 的应用还不是太广泛,还没有像μC/OS-II 那样普遍,并且资料也没有μC/OS-II 多。eCos 适合用于一些商业级或工业级对成本敏感的嵌入式系统,例如消费电子领域中的一些应用。

 


4、FreeRTOS
由于 RTOS 需占用一定的系统资源(尤其是 RAM 资源),只有μC/OS-II、embOS、salvo、FreeRTOS 等少数实时操作系统能在小 RAM 单片机上运行。


相对于 C/OS-II、 embOS 等商业操作系统,FreeRTOS 操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为 6.0 版。


作为一个轻量级的操作系统,FreeRTOS 提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。
 
FreeRTOS 内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU 总是让处于就绪态的、优先级最高的任务先运行。 


FreeRT0S 内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享 CPU 的使用时间。


FreeRTOS 的不足:


相对于常见的μC/OS—II 操作系统,FreeRTOS 操作系统既有优点也存在不足。


其不足之处, 一方面体现在系统的服务功能上,如 FreeRTOS 只提供了消息队列和信号量的实现,无法以后进先出的顺序向消息队列发送消息;另一方 面,FreeRTOS 只是一个操作系统内核,需外扩第三方的 GUI(图形用户界面)、TCP/IP 协议栈、FS(文件系统)等才能实现一个较复杂的系统, 不像μC/OS-II 可以和μC/GUI、μC/FS、μC/TCP-IP 等无缝结合。

 

 

5、mbed OS
开源嵌入式操作系统,ARM 公司将 mbed OS 免费提供给所有厂商使用,mbed 提供了一个相对更加系统和更加全面的智能硬件开发环境。


主要功能:
提供用于开发物联网设备的通用操作系统基础,以解决嵌入式设计的碎片化问题。支持所有重要的连接性与设备管理开放标准,以实现面向未来的设计。使安全可升级的边缘设备支持新增处理能力与功能。通过自动电源管理解决复杂的能耗问题。


主要特点:
开发速度快,功能强大,安全性高,为了量产化而设计,可离线开发,也可以在网页上编辑。

 

 

6、RTX
是 ARM 公司的一款嵌入式实时操作系统,使用标准的 C 结构编写,运用 RealView 编译器进行编译。不仅仅是一个实时内核,还具备丰富的中间层组件,不但免费,而且代码也是开放的。


主要功能:
开始和停止任务(进程),除此之外还支持进程通信,例如任务的同步、共享资源(外设或内存)的管理、任务之间消息的传递。开发者可以使用基本函数去开启实时运行器,去开始和终结任务,以及去传递任务间的控制(轮转调度)。开发者可以赋予任务优先级。


主要特点:
支持时间片,抢占式和合作式调度。不限制数量的任务,每个任务都具有 254 的优先级。不限制数量的信号量,互斥信号量,消息邮箱和软定时器。支持多线程和线程安全操作。使用 MDK 基于对话框的配置向导,可以很方便的完成 MDK 的配置。


7、VxWorks
美国 WindRiver 公司于 1983 年设计开发的一种嵌入式实时操作系(RTOS),具有硬实时、确定性与稳定性,也具备航空与国防、工业、医疗、汽车、消费电子产品、网络及其他行业要求的可伸缩性与安全性。


主要功能:
支持可预测的任务同步机制、支持多任务间的通信、存储器优化管理、操作系统的(中断延迟、任务切换、驱动程序延迟等)行为是可知的和可预测的。实时时钟服务+中断管理服务。


主要特点:
具有一个高性能的操作系统内核 Wind(实时性好、可裁减)友好的开发调试环境、较好的兼容性、支持多种开发和运行环境

 


8、QNX
诞生于 1980 年,是一种商用的遵从 POSIX 规范的类 Unix 嵌入式实时操作系统。


主要功能:
支持在同一台计算机上同时调度执行多个任务;也可以让多个用户共享一台计算机,这些用户可以通过多个终端向系统提交任务,与 QNX 进行交互操作。
主要特点:


核心仅提供 4 种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它 OS 服务,都实现为协作的用户进程,因此 QNX 核心非常小巧(QNX4.x 大约为 12Kb)而且运行速度极快。

 


9、NuttX
NuttX 是一个实时嵌入式操作系统(Embedded RTOS),第一个版本由 Gregory Nutt 于 2007 年在宽松的 BSD 许可证下发布。


主要功能:
可以构建为开放的、平面的嵌入式 RTOS,或单独构建为具有系统调用接口的微内核。容易扩展到新的处理器架构、 SoC 架构或板级架构。实时的、确定性的、支持优先级继承。BSD 套接字接口。优先级管理的扩展。可选的具有地址环境的任务(进程)。


主要特点:
配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C 语言库和底层运行包等。每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用 eCos 提供的配置工具可以很方便地配置,并通过不同的配置使得 eCos 能够满足不同的嵌入式应用要求。


10、都江堰操作系统(djyos)
(注意:网友提示都江堰操作系统官网提示,stm32 的 f4 和 f7 没调通)


都江堰操作系统,简称 djyos,得名于一个伟大的水利工程:都江堰。


与传统操作系统不同,djyos 不是以线程而是以事件为调度核心,这种调度算法使程序员摆脱模拟计算机执行过程编写程序的思维方式,而是按人类认知世界的方式编写应用程序,就如同在嵌入式编程中引入了 VC 似的。


djyos 的调度算法使程序员可以摆脱线程和进程的束缚,djyos 没有有关线程的 api,一个完全不懂线程知识的程序员也可以顺利地在 djyos 下编写应用程序。


djyos 操作系统是以事件为核心进行调度的,这种调度策略使程序员可以按人类认知事物的习惯而不是计算机的习惯来编程。

 

 

11、Alios Things
据著名媒体嵌入式操作系统 RTOS 介绍,AliOS Things 是 AliOS 家族旗下、面向 IoT 领域的、高可伸缩的物联网操作系统。AliOS Things 将致力于搭建云端一体化 IoT 基础设施,具备极致性能、极简开发、云端一体、丰富组件、安全防护等关键能力,并支持终端设备连接到阿里云 Link,可广泛应用在智能家居、智慧城市、新出行等领域。


点评:阿里系,背靠阿里资源来势汹汹杀入物联网市场,芯片+模组厂商合作,是非常有力的一个玩家,但这也是其最大的劣势!

 


12、Huawei LiteOS
嵌入式操作系统 RTOS 介绍,Huawei LiteOS 是华为面向 IoT 领域,构建的轻量级物联网操作系统,以轻量级低功耗、快速启动、互联互通、安全等关键能力,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。


点评:华为系,不过其开源程度比较低,其主要用于华为自己的产品,有大树罩着。

 

 

13、RT-Thread

嵌入式操作系统 RTOS 介绍,RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread 也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread 具备一个 IoT OS 平台所需的所有关键组件,例如 GUI、网络协议栈、安全传输、低功耗组件等等。经过 11 年的累积发展,RT-Thread 已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过两千万台,成为国人自主开发、国内最成熟稳定和装机量最大的开源 RTOS。

 

点评:国内最有可能成为 Top 1,优势在于丰富的组件,中立立场!赶上了时机,得到诸多芯片厂商的支持,也挺受开发者喜欢的。缺点在于本身的教程文档和 freertos 等之类的比还是很弱。


嵌入式操作系统 RTOS 推荐的学习资源:

1. 文档:https://www.rt-thread.org/document/site/
2. 书籍:《 嵌入式实时操作系统:RT-Thread 设计与实现 》《 RT-Thread 内核实现与应用开发实战指南 基于 STM32 》

 


14、SylixOS
嵌入式操作系统 RTOS 介绍,SylixOS 是一个开源的跨平台的大型实时操作系统(RTOS),SylixOS 诞生于 2006 年,经过十多年的持续开发,SylixOS 已成为功能最为全面的国产操作系统之一。目前已有众多产品和项目应用案例,行业涉及航空航天、军事防务、轨道交通、智能电网、工业自动化等诸多领域。SylixOS 完全符合 POSIX 规范,开源社区丰富的自由软件移植非常方便。


点评:这家也是挺有意思的,2006 年就开始了,吃军工饭,最近一两年才露头角。其实力不容小觑!


参考网站:http://www.sylixos.com/

当然,RTOS 并不仅上面这些,如有相关信息,会为大家继续推送。。

 

参考资料:

【1】嵌入式操作系统 RTOS . 《国产嵌入式操作系统行不行就看这 5 家了!》
【2】国讯芯微     . 《盘点那些实时高效的物联网操作系统》
【3】百度百科