选择正确的实时操作系统(RTOS)对于嵌入式系统开发的性能、可靠性和效率至关重要。本文将指导您了解 RTOS、其组成部分、优缺点和类型,以及如何为您的应用程序选择最佳的实时操作系统。
本文是一份指南,提供了您选择能够处理关键任务的操作系统所需的最基本信息。
什么是实时操作系统(RTOS)? #
定义 #
实时操作系统(RTOS)是一种专用的操作系统,旨在满足实时应用程序的严格时序要求。与优先考虑多种特性和功能的通用操作系统(GPOS)不同,RTOS 优先确保任务在特定时间范围内执行。这种确定性和可预测性对于航空交通管制系统、雷达系统和防御系统等非实时控制不可或缺的系统至关重要。
RTOS 与操作系统的区别 #
下表总结了实时操作系统(RTOS)与通用操作系统(GPOS)之间的区别:
特性 | RTOS | 操作系统 |
---|---|---|
时序保证 | 确定性,实时行为 | 尽力而为,非确定性 |
任务调度 | 基于优先级,抢占式 | 时间共享,公平导向 |
资源利用率 | 针对系统资源进行优化 | 专为通用工作负载设计 |
开销 | 最小 | 由于丰富的功能集而更高 |
实时操作系统的组成部分 #
RTOS 的架构围绕几个关键组件,这些组件可以实现实时性能和高效处理多任务和系统资源。以下是其组成部分:
组件 | 描述 |
---|---|
任务调度 | 通过根据任务的紧急性或重要性确定优先级来管理多个进程。 |
实时时钟管理 | 跟踪系统时间,实现精确执行严格的时序约束。 |
同步机制 | 包括信号量和互斥锁,以确保任务之间进行适当的协调。 |
内存管理 | 有效地分配系统资源,以确保稳定并避免内存泄漏。 |
任务间通信 | 提供消息队列和信号等机制,供任务交换数据或有效通信。 |
RTOS 的类型 #
实时操作系统(RTOS)可以根据其处理时序约束的方式以及错过截止日期的后果进行分类。RTOS 有三种类型:硬实时操作系统(Hard RTOS)、软实时操作系统(Soft RTOS)和固实时操作系统(Firm RTOS),每种都适用于特定的应用程序和性能要求。
硬实时操作系统(Hard RTOS) #
硬实时操作系统旨在严格执行截止日期,即使错过一个截止日期也可能造成灾难性后果。这些系统保证确定性行为,任务在需要时精确执行。硬实时操作系统用于人身安全或巨额经济投资岌岌可危的安全关键型应用中。
例如:
- 医疗设备,如起搏器,延迟响应可能会危及患者生命。
- 航空交通管制系统,精确的时序对于导航和安全至关重要。
- 用于核反应堆管理等过程的工业控制系统。
- 必须以近乎零延迟作出反应的防御系统。
在这些应用中,可预测性是不可协商的,系统必须设计为能够处理最坏情况而不会发生故障。
软实时操作系统(Soft RTOS) #
软实时操作系统的时序方法更为宽松。它旨在满足截止日期,但只要整体系统性能不受严重影响,偶尔的延迟是可以接受的。这些系统适用于时序重要但不危及生命的应用,允许更宽松的调度和资源管理。
例如:
- 视频和音频流服务,轻微的延迟可能会导致质量略有下降,但不会中断用户体验。
- 物联网应用,如智能家居设备,它们优先考虑响应能力,但可以容忍轻微的延迟而不会导致严重故障。
- 游戏机,实时响应可以增强体验,但并非严格要求。
软实时系统平衡了性能和资源使用,适用于要求不高或资源受限的环境。
固实时操作系统(Firm RTOS) #
固实时操作系统介于硬实时和软实时操作系统之间。它比软实时操作系统更严格地执行截止日期,但比硬实时操作系统更宽松。在固实时操作系统中错过截止日期不会导致灾难性故障,但会降低系统的效用或性能,这可能导致用户体验下降或经济损失。
例如:
- 银行系统,延迟的交易处理可能会让用户感到沮丧,但不会影响系统完整性。
- 电信系统,实时数据处理对于性能至关重要,但可以从轻微的延迟中恢复。
- 某些汽车系统,如信息娱乐或导航,必须具有响应能力,但与车辆安全没有直接关系。
固实时操作系统适用于性能下降可以容忍但应最小化以保持可靠性和可用性的应用。
在嵌入式系统中使用 RTOS 的优势 #
RTOS 为嵌入式系统提供了关键优势,特别是在需要精确时序和可靠性的应用中。其确定性行为确保了关键任务在严格的截止日期内执行,非常适合汽车安全或医疗设备等时间关键型应用。RTOS 还优化了资源利用率,并允许在嵌入式系统中有效利用有限的 CPU、内存和和功率。它还支持可扩展性,系统可以在保持性能和可靠性的同时增加复杂性。通过抽象化硬件管理和提供内置功能,RTOS 缩短了开发时间并简化了复杂功能的集成,使其在物联网、工业自动化和消费电子等行业中不可或缺。
优势 | 描述 |
---|---|
确定性行为 | 保证及时和可预测的任务执行,这对于关键任务至关重要。 |
高效的资源利用率 | 优化嵌入式应用的 CPU、内存和其他硬件资源等系统资源。 |
可扩展性 | 支持复杂应用的模块化和可扩展系统设计。 |
可靠性 | 增强嵌入式系统中时间关键型操作的稳定性。 |
嵌入式系统中使用 RTOS 的缺点 #
虽然 RTOS 有许多优点,但它也有一系列挑战。由于设计和调试时间敏感型系统的复杂性,其实现需要专门的专业知识。这会增加开发时间和成本。RTOS 还会带来一些资源开销,这对于超低功耗设备或内存和处理能力极小的系统可能是一个限制。像 VxWorks 或 QNX 等专有实时操作系统解决方案的许可成本对于小型项目来说也可能过高。尽管存在这些缺点,但在时序和可靠性至关重要的应用中,实时操作系统仍然是必不可少的。
缺点 | 描述 |
---|---|
复杂的开发 | 设计和调试基于 RTOS 的系统可能具有挑战性。 |
资源限制 | 需要针对嵌入式系统中有限的硬件资源进行仔细优化。 |
许可成本 | 一些 RTOS 解决方案很昂贵,尤其是像 VxWorks 这样的专有解决方案。 |
开销 | 与针对简单系统的裸机编程相比,增加了复杂性。 |
如何选择合适的 RTOS? #
- 评估系统要求 选择正确的操作系统和做出任何其他技术决策的第一步是评估系统的要求。通过确定应用程序是否需要硬实时、软实时或固实时功能来了解实时约束。例如,医疗设备等安全关键型系统需要严格的时序保证,而物联网应用可以容忍偶尔的延迟。此外,还要评估应用的复杂性、任务数量、任务优先级和进程间通信。将延迟、吞吐量和系统响应能力等性能指标考虑在内,以确保所选的实时操作系统满足应用程序的操作要求。
嵌入式系统的要求差异很大。不要选择性能过剩的系统,但也要注意不要选择能力太有限的系统。
-
确保硬件兼容性 硬件与目标平台的兼容性是选择 RTOS 时的关键考量因素。检查 RTOS 是否支持系统的处理器架构、内存限制和外围接口。例如,一些 RTOS 平台针对特定的微控制器或微处理器进行了优化,而另一些则更广泛。此外,还要检查 RTOS 提供的硬件抽象层(HAL),因为这些可以简化硬件集成,并允许在开发过程中硬件发生变化时更平稳地过渡。兼容性可减少开发时间和返工成本。
-
可扩展性和灵活性 嵌入式系统会随着时间的推移而发展,因此选择能够随着系统的复杂性而扩展并适应未来要求的 RTOS 很重要。检查实时操作系统是否支持模块化架构,或者是否可以集成网络、安全或高级任务管理等附加功能。灵活性也很重要;理想的 RTOS 应该允许自定义以满足特定应用的需要,而不会产生不必要的开销。可扩展性和灵活性确保 RTOS 在项目发展时仍然可行,而无需完全重新设计。
在构建 RTOS 系统时,一种相对流行的方法(在大型项目中)是以一种方式拆分功能,即并非所有组件都在实时操作系统上运行。例如,在汽车领域,将联网多媒体系统基于嵌入式 Linux 而不是 RTOS 会更合理。
-
许可和成本因素 财务方面是另一个重要的考量。RTOS 平台范围从开源(FreeRTOS 或 Zephyr)到专有(VxWorks 或 QNX),后者可能非常昂贵。开源 RTOS 具有成本效益和灵活性,但可能缺乏专有解决方案的支持和保修。商业 RTOS 附带了丰富的文档、技术支持和针对安全关键型应用的认证。开发人员需要权衡许可成本与功能、可靠性和支持的价值,以确保 RTOS 在不影响质量的情况下符合项目预算。
-
您的内部知识 我总是说,最好的技术是我们最了解的技术。假设我们已经在公司内部开发嵌入式系统,并且这不是我们第一次使用实时操作系统,那么最好将我们的项目基于一个不仅能满足我们需求,而且与我们拥有的硬件和软件组件构建知识相对应的操作系统。
例如,假设我们要在 FreeRTOS 和 Zephyr 之间进行选择。两者都是开源的、无错误的,并且都提供了您的关键系统所需的可靠实时性能。我们还假设我们想使用 Qt Framework 开发一个应用程序。我会说,因此最好选择 FreeRTOS,因为 Qt 尚不支持 Zephyr(尽管他们正在努力)。所有这些都是为了坚持我们了解的技术,而不是需要更改我们喜欢的框架。
RTOS 比较 #
RTOS 市场有许多平台,每种都适用于不同的用例和行业。一些 RTOS 解决方案是针对预算有限的项目的开源解决方案,而另一些则是针对高性能、安全关键型任务的专有解决方案。选择实时操作系统时,您需要考虑许可、硬件兼容性和功能。以下是流行 RTOS 平台的比较、其主要功能和用例。
RTOS | 主要功能 | 用例 | 许可证 | 支持和生态系统 |
---|---|---|---|---|
FreeRTOS | 轻量级,开源,支持许多 MCU,模块化设计。 | 物联网,低功耗应用,可穿戴设备。 | 开源(MIT) | 大型社区,AWS 集成。 |
VxWorks | 可靠的性能,强大的调试工具和安全认证。 | 航空航天,汽车和医疗设备。 | 商业许可证 | 全面支持,强大的行业采用。 |
QNX | 微内核架构,符合 POSIX 标准,实时确定性行为。 | 医疗设备,工业系统。 | 商业许可证 | 企业级支持,以汽车为重点。 |
Zephyr | 模块化,安全,支持物联网和云集成,广泛的硬件支持。 | 可穿戴设备,物联网设备,智能家居系统。 | 开源(Apache) | 强大的社区,厂商支持(例如,英特尔)。 |
ThreadX | 内存占用小,经过安全关键型应用的预认证,高性能。 | 医疗,工业自动化,汽车。 | 商业许可证 | 出色的文档和客户支持。 |
RTOS 在实时应用中的示例 #
RTOS 存在于世界各地的许多产品和嵌入式系统中,为需要精确时序、可靠性和效率的应用提供动力。从生命攸关的医疗设备到高性能汽车系统,RTOS 是现代嵌入式技术的骨干。以下是使用实时操作系统及其处理时间敏感型任务能力的行业和应用。
行业 | 用例 |
---|---|
工业自动化 | 机器人技术,数控机床,实时监控系统和自动化输送系统。 |
医疗设备 | 起搏器,输液泵,MRI 等实时成像系统和呼吸机系统。 |
汽车系统 | ABS,发动机控制单元(ECU),高级驾驶辅助系统(ADAS)和车载信息娱乐系统。 |
消费电子产品 | 智能电视,家庭自动化系统,健身追踪器等可穿戴设备和游戏机。 |
物联网 | 智能电表,连接传感器,工业物联网网关,边缘计算节点和智能农业系统。 |
航空和防御系统 | 自动驾驶车辆和无人机,雷达信号处理系统,任务关键型系统,空中交通管制系统和实时仿真系统。 |
实时操作系统在嵌入式系统中的应用 #
RTOS 在需要精确执行和可靠性的应用中实现了实时控制和用户交互。通过管理多个任务、系统资源和调度算法,它在严格的时序约束下保持确定性性能。它与机器学习集成等新兴技术兼容,从而能够开发创新和动态的系统。从高精度地执行任务到协调组件之间的复杂操作,RTOS 是现代嵌入式系统众多和多变挑战的答案。