概述

本文主要介绍实时系统的概念。实时系统概述:分为硬实时和软实时两类。还介绍了两个经典实时操作FreeRTOS和ZephyrOS的相关内容。

1 实时系统的概念

实时系统是一个能够及时的正确计算值的系统。它有两种类型:硬实时系统和软实时系统.

1.1 硬实时系统

硬实时系统(Hard Real-Time System) 是指必须在严格时间限制内完成任务的计算系统。如果系统未能按时响应,会导致灾难性后果(如系统崩溃、设备损坏或人员伤亡)。

硬实时系统是对时间约束极其严格的计算系统,其核心目标是保证在最坏情况下仍能按时响应。它广泛应用于航空航天、医疗设备、汽车电子等领域,任何超时都可能导致严重后果。设计这类系统需要确定性的调度算法、可靠的硬件支持和严格的验证流程。

1)关键特征

  • 严格的时间约束:必须在确定的截止时间(Deadline)前完成任务。

  • 零容错性:超时响应视为系统失效。

  • 确定性(Deterministic):任务执行时间必须可预测。

 2)硬实时系统的关键要求

(1) 确定性(Determinism)

  • 任务的最坏执行时间(WCET, Worst-Case Execution Time)必须可预测。

  • 系统必须保证在最坏情况下仍能按时完成。

(2) 高可靠性

  • 必须避免死锁、优先级反转等问题。

  • 通常采用冗余设计(如双机热备)。

(3) 实时调度算法

  • 固定优先级调度(Rate-Monotonic, RM)

  • 最早截止时间优先(EDF, Earliest Deadline First)

  • 时间触发调度(TTS, Time-Triggered Scheduling)

(4) 硬件支持

  • 低中断延迟(如 ARM Cortex-R 系列)

  • 内存保护机制(避免任务间干扰)

  • 确定性总线(如 CAN FD、Time-Triggered Ethernet)

1.2 软实时系统

软实时系统(Soft Real-Time System) 是一种对任务完成时间有要求,但偶尔超时不会导致系统完全失效的计算系统。这类系统更注重整体性能优化而非严格的时间确定性。

软实时系统通过弹性时间约束和性能优化机制,在保证基本服务质量的同时兼顾系统效率。与硬实时系统相比,它更适用于允许一定延迟但追求高吞吐量的场景,是现代互联网服务、多媒体应用和分布式系统的核心技术范式。随着AI和5G技术的发展,软实时系统的应用边界正在持续扩展。

关键特征

  • 弹性时间约束:任务有截止时间(Deadline),但偶尔超时可接受

  • 性能导向:追求高吞吐量或低平均延迟,而非绝对确定性

  • 降级容忍:超时会导致服务质量下降,但不会造成灾难性后果

 2 软实时系统 vs. 硬实时系统

软实时系统和硬实时系统的区别在于: 对错过最后期限和因此引起结果的容忍度。通常来说,错过最后期限后,即使计算的值是正确此时也是无效值。

对比维度软实时系统硬实时系统
时间约束严格性允许偶尔超时绝对不允许超时
超时后果服务质量下降系统完全失效
设计目标优化平均性能保证最坏情况响应
调度策略公平调度、动态优先级固定优先级、时间触发
典型应用视频会议、网页服务航天控制、医疗设备

3 经典嵌入式实时操作系统介绍

3.1 FreeRTOS

3.1.1 概述

FreeRTOS(Free Real-Time Operating System)是一款开源的实时操作系统(RTOS),专为嵌入式系统设计。由 Richard Barry 于2003年开发,后被 Amazon Web Services (AWS) 收购并继续维护。

关键特性

✅ 开源免费(MIT 许可证)
✅ 轻量级(内核仅 6-12KB ROM,占用资源少)
✅ 可移植性强(支持 40+ 处理器架构)
✅ 实时性强(支持硬实时和软实时任务)
✅ 丰富的组件生态(AWS IoT 集成、安全库、文件系统等)

3.1.2 核心功能

(1) 任务调度

  • 抢占式调度(高优先级任务可抢占低优先级任务)

  • 时间片轮转(相同优先级任务公平调度)

  • 协程(Co-routine)支持(轻量级线程,适用于低RAM设备)

(2) 内存管理 

  • 提供 5 种内存分配策略(heap_1 ~ heap_5):

    • heap_1:静态分配(无内存释放)

    • heap_2:最佳适应算法(可释放内存,但易碎片化)

    • heap_4:合并空闲块(减少碎片)

    • heap_5:支持非连续内存区域

(3) 任务间通信

机制用途
队列(Queue)任务间数据传递(FIFO)
信号量(Semaphore)任务同步/资源管理
互斥锁(Mutex)防止优先级反转
事件组(Event Group)多任务事件通知
任务通知(Task Notification)轻量级信号量替代

(4) 低功耗支持

  • Tickless 模式(空闲时关闭系统节拍,省电)

  • 动态频率调整(适用于电池供电设备)

(5)FreeRTOS vs. 其他RTOS

特性FreeRTOSRT-ThreadZephyr
许可证MITApache 2.0Apache 2.0
内核大小6-12KB10-20KB10-50KB
生态整合AWS IoT国内生态强Linux基金会支持
适用场景低资源MCU物联网设备复杂嵌入式系统

 3.1.3 FreeRTOS 支持的硬件架构

FreeRTOS 支持 40+ 种 MCU 架构,包括:

  • ARM Cortex-M(STM32, NXP Kinetis, Nordic nRF52)

  • RISC-V(ESP32-C3, GD32VF103)

  • MIPS(PIC32)

  • Xtensa(ESP8266, ESP32)

  • 8051(增强型)

 3.1.4 FreeRTOS 代码结构

FreeRTOS/
├── Source/
│   ├── include/        // 头文件
│   ├── portable/       // 不同MCU的移植层
│   │   ├── GCC/ARM_CM4F/  // Cortex-M4 移植
│   │   ├── IAR/ARM_CM3/   // Cortex-M3 移植
│   │   └── ...
│   ├── tasks.c         // 任务调度
│   ├── queue.c         // 队列管理
│   └── ...
├── Demo/               // 示例项目
└── License/            // 开源许可证

3.2 Zephyr OS

3.2.1 概述

Zephyr OS 是一款由 Linux 基金会 维护的开源实时操作系统(RTOS),专为资源受限的嵌入式设备设计。它最初由 Wind River Systems 开发,后于2016年成为开源项目。

关键特性

✅ 高度模块化(可裁剪至8KB ROM)
✅ 跨平台支持(70+开发板,10+架构)
✅ 强实时性(支持硬实时和软实时应用)
✅ 完整的安全框架(TLS、加密、安全启动)
✅ 丰富的协议栈(蓝牙5.3、Wi-Fi、LoRaWAN、CAN等)

3.2.2 Zephyr OS 核心架构

(1)核心组件

组件功能
微内核任务调度/同步/中断管理
设备树(Devicetree)统一硬件描述
电源管理低功耗模式支持
文件系统FAT/LittleFS支持
网络协议栈LwIP/OpenThread

 (2)支持的硬件架构

Zephyr 支持 10+ 种处理器架构,包括:

  • ARM Cortex-M(STM32, nRF52, RP2040)

  • RISC-V(GD32VF103, HiFive1)

  • x86(Intel Quark)

  • Xtensa(ESP32)

  • ARC(Synopsys DesignWare)

(3)代码结构

zephyrproject/
├── zephyr/
│   ├── arch/          // 架构支持(ARM/RISC-V等)
│   ├── boards/        // 开发板定义
│   ├── drivers/       // 设备驱动
│   ├── include/       // 公共头文件
│   ├── kernel/        // 实时内核
│   ├── subsys/        // 子系统(蓝牙/文件系统等)
│   └── samples/       // 示例代码
└── modules/          // 外部模块(如HAL库)

(4)Zephyr vs. 其他RTOS

特性ZephyrFreeRTOSRT-Thread
许可证Apache 2.0MITApache 2.0
最小尺寸8KB6KB10KB
设备树支持✅❌❌
蓝牙协议栈原生支持需额外组件部分支持
开发模式CMake + Python传统MakefileEnv工具

 

更多推荐