首页 > 其他分享 >嵌入式实时操作系统(RT-Thread、FreeRTOS、UCOSIII)

嵌入式实时操作系统(RT-Thread、FreeRTOS、UCOSIII)

时间:2024-08-08 08:59:23浏览次数:14  
标签:RT UCOSIII FreeRTOS Thread 支持 嵌入式 实时操作系统 OS

实时操作系统(RT-Thread、FreeRTOS、UCOSIII)

文章目录


专有名词概念


1、什么是嵌入式

嵌入式系统是一种专门设计用于执行特定任务的计算机系统
被设计成执行一个或几个特定的任务
通常被嵌入到其他设备或系统中的硬件和软件组合中,作为更大系统的一部分
它们不同于通用计算机,如个人电脑,后者可以运行各种各样的应用程序。

嵌入式系统的特点
  1. 专用性
    • 嵌入式系统针对特定应用或任务进行设计,这意味着它们不是通用的计算平台
    • 例如,一个嵌入式系统可能专门用于监控工厂生产线的运行状态,而另一个可能专门用于飞行器导航
  2. 实时性
    • 实时性要求嵌入式系统能够在确定的时间限制内处理和响应外部事件
    • 硬实时系统必须保证在规定的时间内完成任务,否则可能会造成严重的后果
    • 如自动驾驶汽车的安全控制系统。
  3. 可靠性
    • 嵌入式系统往往需要在各种恶劣条件下稳定运行,包括极端的温度、湿度、振动和电磁干扰等
    • 在特定环境下的关键作用,嵌入式系统需要很高的稳定性和可靠性,以减少故障和停机时间
  4. 资源受限
    • 嵌入式系统通常受到成本、尺寸、重量和功耗的限制
    • 因此它们必须高效地使用有限的计算资源、内存和存储空间。
    • 这要求开发者优化软件和硬件以适应这些限制。
  5. 实时约束
    • 实时约束是指嵌入式系统在设计时必须遵守的一系列时间限制。
    • 这些限制可能包括任务的执行时间、系统的响应时间、数据处理的延迟等。
    • 违反这些约束可能导致系统性能下降或功能失效。
  6. 封闭性
    • 嵌入式系统通常是不可编程的,或者编程接口不对外开放,用户通常不直接与嵌入式系统交互

2、什么是实时

实时(Real-time)是指系统或组件在 特定的时间 限制内对外部事件 做出响应 的能力。
在实时系统中,正确响应的时间约束是至关重要的

响应时间
- 实时系统必须在规定的时间限制内处理输入并产生输出。
- 这个时间限制可以是固定的,也可以是可变的,但无论如何,它必须是可预测的。

硬实时(Hard real-time)
- 系统必须绝对保证在规定的截止时间内完成所有任务。
- 任何超出截止时间的任务完成都会被认为是系统失败,可能导致严重后果
- 如飞机导航系统或医疗监控系统。

软实时(Soft real-time)
- 虽然也有时间限制,但偶尔的超时不会导致系统失败,只会影响系统的服务质量
- 如视频流服务或在线游戏。


3、什么是操作系统

操作系统(Operating System,简称OS)是一种系统软件
操作系统管理计算机硬件和软件资源,并为计算机用户提供交互界面
是计算机系统的 核心组件 ,负责 协调和控制计算机系统的所有操作

操作系统主要功能和特性
  1. 资源管理
    操作系统负责分配和调度计算机的硬件资源,以确保高效和公平的使用。
    如处理器时间、内存空间、输入/输出设备等
  2. 进程管理
    操作系统管理进程的创建、执行、暂停和终止,以及进程之间的通信和同步
  3. 内存管理
    操作系统管理主存储器(RAM)
    包括内存的分配、回收和保护,以及虚拟内存的实现
  4. 文件系统管理
    操作系统提供文件和目录的管理
    包括存储、检索、更新和删除文件的能力。
  5. 设备管理
    操作系统通过设备驱动程序管理各种硬件设备
    如硬盘、打印机、网络适配器等。
  6. 用户接口
    操作系统提供用户接口,以便用户能够与计算机系统交互
    如命令行界面(CLI)或图形用户界面(GUI)
  7. 安全性和保护
    操作系统确保系统的安全性,防止未授权访问和数据泄露,并提供用户和数据的安全保护机制。
常见的操作系统类型包括
  • 桌面操作系统:如Microsoft Windows、macOS、Linux发行版。
  • 服务器操作系统:如Windows Server、Linux服务器发行版、Unix。
  • 移动操作系统:如Android、iOS。
  • 嵌入式操作系统:如RTOS(实时操作系统)、嵌入式Linux。
  • 实时操作系统:用于需要精确时间响应的系统和设备。

4、嵌入式实时操作系统

嵌入式实时操作系统(Real-Time Operating System for Embedded Systems,简称RTOS)
一种专门为嵌入式系统设计的操作系统
具备 实时处理 能力,能够在 特定的时间完成特定的任务,确保实时性和可靠性

关键特点和功能
  1. 实时性:RTOS的最核心特性是实时性,能够在确定的时间内响应外部事件和内部任务
    • 硬实时:任务必须在严格的截止时间内完成,任何超时都可能造成系统失败或不可接受的结果。
    • 软实时:虽然也有时间限制,但偶尔的超时不会导致灾难性后果。
  2. 任务调度:RTOS通常采用 优先级为基础的抢占式调度算法 ,确保高优先级任务能够及时执行。
  3. 确定性:RTOS的行为和性能是 可预测的 ,这意味着系统的响应时间和任务执行时间是可以预知的。
  4. 资源管理:RTOS高效地管理CPU时间、内存和其他硬件资源,以 *支持多个并发任务 *。
  5. 小型化和优化:RTOS通常 针对特定的硬件平台进行优化 ,以减少内存占用和提高执行效率。
  6. 模块化和可配置性:RTOS通常设计为模块化,允许开发者按需选择和配置系统组件。
  7. 可靠性:RTOS注重系统的 稳定性和可靠性 ,以适应在 多种环境 下的 长期 运行需求。
常见的RTOS
  1. FreeRTOS:一个流行的开源RTOS,广泛用于微控制器和小型嵌入式系统。
  2. RT-Thread:一个开源、中立的RTOS,由中国的软件开发者社区维护,适用于资源丰富的嵌入式设备。
  3. uc/OS(μC/OS):由Micrium(现属于Silicon Labs)开发,适用于微控制器和嵌入式应用。
  4. uc/OS-III:μC/OS的第三个版本,提供更多功能和改进。
  5. ThreadX:由Microsoft Azure Sphere支持,适用于深度嵌入式应用。
  6. FreeRTOS+:FreeRTOS的扩展版本,提供额外的中间件和功能。
  7. Amazon FreeRTOS:基于FreeRTOS,加入了云连接和安全功能。
  8. VxWorks:由Wind River Systems开发,用于高性能、硬实时的应用,如航空航天和军事领域。
  9. QNX:由BlackBerry Limited开发,主要应用于汽车和工业控制系统。
  10. RTLinux:基于Linux的硬实时操作系统,适用于需要Linux功能和硬实时性能的场合。
  11. Windows Embedded Compact(原名Windows CE):微软提供的嵌入式RTOS,适用于各种嵌入式设备。
  12. eCos(Embedded Configurable Operating System):一个开源的RTOS,可以根据需求进行配置。
  13. VRTX:由 Mentor Graphics(现属于Siemens)开发,用于高可靠性要求的嵌入式系统。
  14. Nucleus RTOS:由 Mentor Graphics(现属于Siemens)提供,用于各种嵌入式系统。
  15. OSE(Operating System Embedded):由Enea AB开发,适用于网络和通信设备。
  16. Integrity:由Green Hills Software开发,提供一个安全的实时操作系统环境。

FreeRTOS

FreeRTOS是目前嵌入式开发者最广泛使用的RTOS之一
FreeRTOS是一个轻量级、开源的实时操作系统(RTOS)
广泛用于嵌入式系统和微控制器,提供任务调度、通信机制和定时器等核心功能,支持多种处理器架构
因其易用性、可移植性和免费特性而深受开发者喜爱。

特性及流行

流行特性
开源FreeRTOS是开源的,这意味着免费使用,包括在商业产品中,降低了进入门槛。
社区FreeRTOS有一个活跃的社区,提供论坛、文档、教程和示例代码
跨平台支持多种处理器架构,各平台之间具有很高的可移植性,包括ARM, MIPS, x86, Xtensa等
轻量级FreeRTOS设计轻量级,适合运行在资源受限的微控制器(MCU)上
易于使用FreeRTOSAPI设计简洁,易于理解和使用,适合初学者和经验丰富的开发者
功能丰富FreeRTOS提供任务调度、队列、信号量、定时器等核心RTOS功能
安全性和可靠性FreeRTOS广泛应用于各种行业,稳定性和可靠性经过时间考验
可扩展性FreeRTOS允许根据需要添加或删除功能,以适应特定应用需求

包括 意法半导体公司 的软件 S T M 32 C U B E I D E STM32CUBEIDE STM32CUBEIDE 使用的也是 F R E E R T O S FREERTOS FREERTOS
可见其流行程度之高
在这里插入图片描述


RT-Thread

RT-Thread在嵌入式系统领域的十分流行,国内外众多嵌入式开发者的首选RTOS之一。
RT-Thread 是一款完全由国内团队开发维护的集实时操作系统(RTOS)内核,文件系统、网络框架、设备框架等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接等能力的物联网操作系统,具有完全的自主知识产权。

特性及流行

流行特性
开源RT-Thread是一个开源项目,意味着免费试用
社区支持RT-Thread拥有活跃的社区和丰富的开发者资源,提供大量文档、教程和论坛讨论
跨平台RT-Thread支持多种处理器架构,包括ARM、MIPS、RISC-V等,具有良好的可移植性。
本土化RT-Thread由中国开发者社区维护,贴近中国市场的需求,支持中文文档和本地化支持。
组件丰富RT-Thread提供丰富的中间件组件,简化嵌入式系统的开发过程,如文件系统、网络协议栈等
易用性RT-Thread具有友好的用户界面和简单的API,使得即使是初学者也能快速上手。
可伸缩性RT-Thread支持中小型的各种硬件平台,根据不同的硬件资源进行配置,适应不同需求。
实时性能RT-Thread具备硬实时性能,能够满足严格的实时性要求,适用于对时间敏感的应用。
安全性RT-Thread注重系统的安全性,提供了一系列安全特性,如内存保护、任务隔离等。

RT-Thread因顺应物联网兴起、支持中国制造2025、顺应开源趋势、兼容RISC-V架构、满足实时系统需求增长及强调安全性,成功赶上了时代发展,成为中国嵌入式系统开发的重要RTOS选项。


UCOS

UCOS(uC/OS)是一款由Micrium公司开发的商业实时操作系统,专为微控制器和嵌入式系统设计。
μC/OS 最初是开源的,后发展为商业产品提供商业支持 ,是一款商业实时操作系统(RTOS)
提供了多任务调度、内存管理、中断管理、定时器、以及一系列的设备驱动和中间件支持。
UCOS 高效的性能、可预测的实时处理能力易于移植性 受人青睐
适用于多种嵌入式应用,如工业控制、航空电子和医疗设备等。
随着版本的迭代,如uCOS-III,提供增强的功能和改进,适应不断发展的嵌入式系统需求。

特性及流行

流行特性
开源与商业支持μC/OS最初开源,后发展为商业产品,提供商业支持
商业支持μC/OS作为商业产品,提供专业的技术支持和咨询服务
商业级品质μC/OS商业级的实时操作系统,以其稳定性和可靠性著称,适用于关键性应用
跨平台支持μC/OS支持多种处理器架构,易于在不同硬件平台上移植
成熟社区μC/OS成熟社区,提供技术支持和交流平台 ,活跃社区,提供详尽文档和示例代码
轻量级设计μC/OS设计轻量级,适合运行在资源受限的微控制器上,这使得它非常适合各种嵌入式应用
丰富的功能μC/OS提供全面的实时操作系统功能,包括任务管理、时间管理、内存管理、通信和同步等
可配置性μC/OS具有高度可配置性,允许开发者根据具体需求定制系统特性
安全性μC/OS注重系统安全性,提供了一系列安全特性,如任务隔离、内存保护等
可扩展性μC/OS允许开发者根据需要添加或删除功能,以适应特定的应用需求
历史沉淀UCOSIII作为μC/OS家族的一员,UCOSIII继承了其多年积累的声誉和经验。

FreeRTOS、Thread和UCOS


组件支持

×:表示原生不支持,部分可通过三方实现
√:表示原生支持,支持部分

组件FreeRTOSuC/OS-II/IIIRT-Thread
文件系统 (FAT)√ FAT (FatFS)√ (支持FAT, LittleFS等)
文件系统 (NAND)××√ (支持NAND Flash)
文件系统(NorFlash)×××
TCP/IPv4
TCP/IPv6×
GUI×
Web服务器/客户端××
POSIX兼容性× (部分API支持)× (不支持)√ (部分兼容)
USB Host/Device× (原生不支持,需三方)× (有限支持,需三方)
实时数据库× (原生不支持,需三方)× (有限支持,需三方)
多媒体支持× (原生不支持,需三方)× (有限支持,需三方)
蓝牙/低功耗蓝牙× (原生不支持,需三方)× (有限支持,需三方)√ )
Wi-Fi支持× (原生不支持,需三方)× (有限支持,需三方)
CAN通信× (原生不支持,需三方)× (有限支持,需三方)
安全性× (原生不支持,需三方)× (有限支持,需三方)
调试和分析工具× (需第三方调试工具)

OS内核比较

√:表示有
×:表示无

内核项目FreeRTOSuC/OS-II/IIIRT-Thread
内核大小5k ROM,2k RAM4k ROM,1.5k RAM3k ROM,1k RAM
开源性和授权开源,MIT许可uC/OS-II 开源,Proprietary许可Apache License 2.0许可
内核机制抢占式,最简单抢占式,最实时,并发性能较弱抢占式多线程,最强
内存使用较高较低较高
优先级范围32/2562568/32/256
轮转调度II× III √
互斥量II× III √
消息队列II× III √
事件×
开发工具多种主流工具,工具链完善多种主流工具,工具链完善多种主流工具,工具链完善
Shell控制台××支持Finish\Msh命令行调试
POSIX不支持不支持支持,兼容linux应用
设备框架××√,上层应用与硬件接口无关
低功耗支持部分支持部分支持DVFS、外设低功耗等

轮转调度:√(相同优先级线程时间片轮转调度),×(不允许相同优先级任务存在)

另外还有可扩展性,社区和生态

项目FreeRTOSuC/OS-II/IIIRT-Thread
可扩展性具备一定的可扩展性,提供了一些额外的可选组件和特性提供了较为简化的功能集,适用于资源受限的系统灵活的组件化设计,可以选择性地加载和配置功能模块,提供了丰富的组件库和可选的文件系统、网络协议栈等扩展
社区和生态非常活跃和庞大的社区支持,具有丰富的开发文档、示例代码和第三方扩展社区支持相对较少,文档和示例资源相对较少具有活跃的社区,但相对较小

应用场景

RT-Thread、uC/OS-II和FreeRTOS都是流行的实时操作系统(RTOS),它们各自有不同的特点和优势,适用于不同的应用场景。

操作系统场景
FreeRTOSFreeRTOS适用于广泛的嵌入式应用,从低端、资源受限的系统到高端、功能丰富的系统
FreeRTOS提供了丰富的组件库和可选功能模块,如文件系统、网络协议栈和设备驱动等
商业产品: FreeRTOS被亚马逊收购后,提供了商业支持和认证,适合商业产品开发。
大型生态系统: FreeRTOS有广泛的社区支持和丰富的中间件,适用于大型生态系统。
移动设备: FreeRTOS可以用于需要实时操作系统的移动设备。
物联网: FreeRTOS与Amazon Web Services (AWS)紧密集成,非常适合物联网应用。
资源受限的设备: FreeRTOS有Micro版本,适用于资源非常有限的设备。
uC/OS-II/IIIuC/OS-II适用于资源有限的嵌入式系统,特别是那些对实时性要求较高且轻量级的应用
uC/OS-II具有较低的内存和运行开销,适合小型的嵌入式系统
uC/OS-II在实时性能和响应性方面表现良好,适用于时间敏感的应用
实时控制 : 由于其高可靠性,uC/OS-II常用于需要 硬实时 控制的场合。
教育与研究: 由于其源代码开放,uC/OS-II常用于操作系统教学和研究。
航空航天: uC/OS-II在航空航天领域有广泛应用,因为它的高稳定性和可认证性。
军事应用: 类似于航空航天,uC/OS-II的稳定性使其适用于军事应用。
RT-ThreadRT-Thread适用于中等到高端的嵌入式系统,特别是那些需要丰富功能和可扩展性的应用
RT-Thread具有较高的实时性能和响应性,适用于对实时性要求较高的应用
它支持动态组件加载和热插拔,以及多线程并发执行
物联网设备: RT-Thread提供了丰富的组件和网络协议栈,非常适合物联网设备的开发。
智能家居: 需要丰富的中间件和用户界面支持,RT-Thread能够提供这些功能。
工业自动化: RT-Thread支持多种工业通讯协议,适用于工业控制领域。
消费电子: RT-Thread具有良好的可移植性和丰富的硬件支持,适合消费电子产品的开发。
资源受限的设备: RT-Thread有Nano版本,适用于资源非常有限的嵌入式设备。
总结RT-Thread: 适合需要丰富组件支持和高度可扩展性的应用,特别是在物联网和消费电子领域。
uC/OS-II: 适合对实时性要求极高且资源受限的场合,如航空航天和工业控制。
FreeRTOS: 适合商业产品开发,特别是与AWS集成的物联网应用,以及需要广泛生态系统支持的项目。

常见API

在这里插入图片描述

PS:让出处理器

让出处理器(Yield the processor)是指在多任务操作系统中,一个正在运行的任务主动或被动地放弃处理器控制权,使得其他任务有机会运行。

  1. 主动让出
    任务在执行一段时间后,或者在等待某个事件(如I/O操作完成、定时器到期等)时
    会主动调用让出处理器的指令,将控制权交给操作系统,以便其他任务可以运行。

  2. 被动让出
    当正在运行的任务遇到了阻塞条件
    如等待资源时,它会自动放弃处理器,让其他任务有机会运行。

在操作系统中,让出处理器是通过任务调度器来实现的,它负责在多个任务之间进行切换,以模拟并发执行的效果。
在某些实时操作系统中,让出处理器的策略对于保证实时任务的截止期限至关重要。
例如,在硬实时系统中,如果一个任务在截止日期前无法完成,它可能会主动让出处理器,以确保其他任务能够及时运行。




┈┈┈┈▕▔╲┈┈┈┈┈┈┈ ┈┈┈┈▕▔╲┈┈┈┈┈┈┈ ┈┈┈┈▕▔╲┈┈┈┈┈┈┈┈
┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈
┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈
▂▂▂▂╱┈┈▕▂▂▂▂▏┈ ▂▂▂▂╱┈┈▕▂▂▂▂▏┈ ▂▂▂▂╱┈┈▕▂▂▂▂▏┈┈
▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈
▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈
▔▔▔▔╲▂▂▕▂▂▂▂▏┈ ▔▔▔▔╲▂▂▕▂▂▂▂▏┈ ▔▔▔▔╲▂▂▕▂▂▂▂▏┈┈

如果对你有帮助,就点赞收藏吧!(。・ω・。)ノ♡

标签:RT,UCOSIII,FreeRTOS,Thread,支持,嵌入式,实时操作系统,OS
From: https://blog.csdn.net/a13126099303/article/details/140762101

相关文章

  • 基于STM32F103的FreeRTOS系列(七)·任务创建·列表的使用超详细解析
    目录1. 列表和列表项1.1 列表和列表项简介1.1.1  列表1.1.2  列表项1.1.3  迷你列表项1.1.4 列表与列表项关系图1.2 列表初始化1.3 列表项的初始化1.4 列表项的插入函数1.5 列表项的末尾插入1.6 列表项的删除1.7 列表的遍历1. 列表......
  • Pylance reportArgumentType 与 Pydantic 的 BeforeValidator
    我正在编写一个类似于pydantic叫ImportString的ImportPlugin类型,它导入并可选择调用对象并返回调用结果。例如:fromtypingimportAnnotated,TypeVarfrompydanticimportBaseModel,BeforeValidatorclassMyModel(BaseModel):length:Im......
  • ImportError:无法从“jwt.algorithms”导入名称“RSAAlgorithm”
    RSAAlgorithmPyJWT算法方法无法导入,但我确实安装了PyJWT错误:ImportError:cannotimportname'RSAAlgorithm'from'jwt.algorithms'我通过运行以下命令检查了该包是否可用:poetryshow|grep-ipyjwtpyjwt2.9.0J......
  • QuickSort之C#实现
    ///<summary>///快速排序中的切分///lIndex已经是基准值,i记录基准值的大小值的边界,j记录目前遍历的边界;///i值必须从lIndex+1开始,因为基准值已经在lIndex位置了,///i位置的值必须大于基准值,因为发现比基准值小的值,需要和i位置的值交换,///交换结束后,i++,变更基准边......
  • Free-RTOS任务删除函数vTaskDelete()解析
    目录函数vTaskDelete()函数prvDeleteTCB()总结函数vTaskDelete()此函数用于删除已被创建的任务,被删除的任务将从就绪态任务列表、阻塞态任务列表、挂起态任务列表和事件列表中移除,要注意的是,空闲任务会负责释放被删除任务中由系统分配的内存,但是由用户在任务删除前申请的内存,......
  • 虚拟显卡 display port
    1.虚拟显卡DisplayPort介绍1.基本概念:  DisplayPort是一种高带宽的数字音视频接口,支持高分辨率和高刷新率的显示输出。2.驱动支持:  -Windows操作系统通常会自动识别并安装基本的DisplayPort驱动。  -然而,为了获得最佳性能和全部功能,建议安装显卡制造商......
  • STM32F407 UART
    //串口(UART)------------------------://1.同步:      步调一致,两个设备之间的通信速度相同//2.异步:      步调不一致,两个设备之间的通信速度不相同//总结:      同步通信:有时钟线连接,并且时钟线可以控制两个设备之间的速度,让速度保持一致    ......
  • FreeRTOS中任务创建函数xTaskCreate()的解析
    目录函数xTaskCreate()函数prvInitialiseNewTask()函数pxPortInitialiseStack()函数prvAddNewTaskToReadyList()总结函数xTaskCreate()此函数用于使用动态的方式创建任务,任务的任务控制块以及任务的栈空间所需的内存,均由FreeRTOS从FreeRTOS管理的堆中分配,若使用此函数,......
  • Linux 环境下为VirtualBox安装增强功能
    csdn搬家VirtualBox安装CentOS后,再安装增强功能就可以共享文件夹、粘贴板以及鼠标无缝移动,主要步骤如下:1、yum-yupdate2、yum-yinstallg++gccgcc-c++makekernel-*#主要是在安装增强工具提示没有安装这些软件3、yum-yinstallbzip2*......
  • 将iap的接收升级数据部分移植到freertos系统中
    目录前言二、移植过程1.在任务中添加代码三、遇到的问题1.boot跳转卡死在TIM6的中断使能2.代码进入app后却卡死在boot的.s文件的B.处总结前言        在完成基于TCP服务器的iap裸机程序后得到一个新的任务,该任务让我把iap中通过TCP接收数据的代码移植......