嵌入式操作系统FreeRTOS原理实现

大家好,我叫小舒。 在对单片机进行编程时,我们都知道有两个基本操作:裸奔和操作系统。 所谓裸奔,就是一个来回执行的大循环。 今天我就来说说几种常用的操作系统。

 

实时操作系统(RTOS)又称实时操作系统,按顺序运行,管理系统资源,为开发应用程序提供一致的基础。

与一般操作系统相比,RTOS最大的特点就是“实时”。 如果有任务需要执行,RTOS会立即执行该任务,不会有长时间的延迟。 此功能可确保各个任务的及时执行。

今天给大家介绍14款主流RTOS,分别是μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、Vxworks、QNX、NuttX; 国产嵌入式操作系统有都江堰操作系统(djyos)、Alios Things、Huawei LiteOS、RT-Thread、SylixOS。

这14个嵌入式操作系统的特点如下:

1.μClinux

μClinux是一个优秀的嵌入式Linux版本。 它的全称是微控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是一个不错的选择。

d343a8e2-2a4e-11ed-ba43-dac502259ad0.png/

JTAG和SWD在微控制器上下载程序和在线调试时经常使用。 常用的设备有J-LINK和ST-LINK,有版权,价格较贵。 DAP-LINK是一个开源的烧录工具。 适用于Cotex-M系列内核的MCU,无版权限制。 我实现了这个开源项目,无聊成本是27元+4元运费。 点击下方小程序即可查看:

2.μC/OS-II

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

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

在硬件支持方面,μC/OS-II可以支持目前流行的大部分CPU。 由于μC/OS-II内核较小,裁剪后的代码最小可以为2KB,所需数据RAM空间最小为4KB,因此μC/OS-II的移植比较简单,只需要修改代码即可与处理器有关。

综上所述,μC/OS-II是一种结构简单、功能齐全、实时性强的嵌入式操作系统内核。 非常适合没有MMU功能的CPU。 它需要很少的内核代码空间和数据存储空间,具有良好的实时性、良好的可扩展性,并且是开源的。 网上有很多资料和例子,非常适合移植到stm32f103 CPU上。

d3738e22-2a4e-11ed-ba43-dac502259ad0.png/

3.eCos

eCos(embedded Configurable Operating System),即嵌入式可配置操作系统。 它是一个可配置、可移植、深度嵌入式、面向应用的实时操作系统,具有开源代码。 其最大特点是配置灵活、模块化设计。 核心部分由类似的组件组成,包括内核、C语言库和底层运行时包等。

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

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

由于eCos的核心很小,修剪后的最小代码可以是10KB,所需的最小数据RAM空间是10KB。 另外,在系统移植方面,eCos操作系统具有良好的可移植性,比μC/OS-II和μClinux更容易。

综上所述,eCos最大的特点就是配置灵活,支持无MMU的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操作系统

作为开源嵌入式操作系统,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个服务,即进程调度、进程间通信、底层网络通信和中断处理,进程运行在独立的地址空间。 所有其他操作系统服务均作为协作用户进程来实现,因此 QNX 内核非常小(QNX4.x 约为 12Kb)并且速度极快。

d421c4ec-2a4e-11ed-ba43-dac502259ad0.png/

9. 纳特X

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操作系统以事件为核心进行调度。 这种调度策略可以让程序员按照人类认知事物的习惯而不是计算机的习惯来编程。

d44e8446-2a4e-11ed-ba43-dac502259ad0.png/

11. 阿里奥斯事物

据知名媒体嵌入式操作系统RTOS介绍,AliOS Things是AliOS家族旗下一款面向物联网领域的高度可扩展的物联网操作系统。 AliOS Things将致力于打造具有极致性能、极简开发、云集成、丰富组件、安全防护等关键能力的云集成物联网基础设施。 还支持终端设备连接阿里云Link,可广泛应用于智能家居、智慧城市、新出行等领域。

点评:阿里巴巴家族背靠阿里巴巴资源,大举进军物联网市场,与芯片+模组厂商合作。 它是一个非常强大的玩家,但这也是它最大的劣势!

12.华为LiteOS

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

点评:华为系列,但是其开源程度比较低。 主要用于华为自家的产品,被一棵大树覆盖。

d4be468c-2a4e-11ed-ba43-dac502259ad0.png/

13.RT-线程

嵌入式操作系统RTOS简介。 RT-Thread是一个集成了实时操作系统(RTOS)内核、中间件组件和开发者社区的技术平台。 它由熊朴祥先生开发,集合了开源社区的力量。 RT-Thread也是一个组件齐全、扩展性高、开发简单、超低功耗、安全性高的物联网操作系统。

RT-Thread拥有物联网操作系统平台所需的所有关键组件,如GUI、网络协议栈、安全传输、低功耗组件等。经过11年的累积发展,RT-Thread已经成为全球最大的嵌入式操作系统之一。中国的开源社区。 还广泛应用于能源、汽车、医疗、消费电子等行业,累计安装量超过2000万台,成为国内自主研发、最成熟、最稳定、规模最大的开源RTOS。安装基地。

点评:极有可能成为中国Top 1。 它的优势就在于成分丰富,立场中立! 它抓住了机遇,得到了众多芯片厂商的支持,颇受开发者欢迎。 缺点是它自己的教程文档相比freertos之类的还是很弱。

14.Sylix操作系统

嵌入式操作系统RTOS简介。 SylixOS是一个开源、跨平台、大规模实时操作系统(RTOS)。 SylixOS诞生于2006年,经过十多年的不断发展,SylixOS已经成为最全面的国产操作系统之一。 目前已有众多产品和项目应用案例,涵盖航空航天、军事国防、轨道交通、智能电网、工业自动化等众多领域。 SylixOS完全遵循POSIX规范,来自开源社区的丰富免费软件的移植非常方便。

点评:这家餐厅也蛮有趣的。 它始于 2006 年,作为军工服务。 它是近一两年才出现的。 其实力不容小觑!

当然RTOS不仅仅只有以上这些,欢迎您留言补充!