基于 STM 平台且满足实时控制要求操作系统,有以下 5 种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS 和都江堰操作系统(djyos)。
下面分别介绍这五种嵌入式操作系统的特点及不足。
![1a1ed3d05317e831eec104252f9dfd3e.png](https://img-blog.csdnimg.cn/img_convert/1a1ed3d05317e831eec104252f9dfd3e.png)
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、都江堰操作系统(djyos)
都江堰操作系统,简称 djyos,得名于一个伟大的水利工程:都江堰。
与传统操作系统不同,djyos 不是以线程而是以事件为调度核心,这种调度算法使程序员摆脱模拟计算机执行过程编写程序的思维方式,而是按人类认知世界的方式编写应用程序,就如同在嵌入式编程中引入了 VC 似的。
djyos 的调度算法使程序员可以摆脱线程和进程的束缚,djyos 没有有关线程的 api,一个完全不懂线程知识的程序员也可以顺利地在 djyos 下编写应用程序。
djyos 操作系统是以事件为核心进行调度的,这种调度策略使程序员可以按人类认知事物的习惯而不是计算机的习惯来编程。
由上所述,对于 stm32f103 来说,移植μC/OS-II、eCos、FreeRTOS、都江堰操作系统是合适的。