嵌入式操作系统的概述
概述
本文主要介绍实时系统的概念。实时系统概述:分为硬实时和软实时两类。还介绍了两个经典实时操作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
| 特性 | FreeRTOS | RT-Thread | Zephyr |
|---|---|---|---|
| 许可证 | MIT | Apache 2.0 | Apache 2.0 |
| 内核大小 | 6-12KB | 10-20KB | 10-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
| 特性 | Zephyr | FreeRTOS | RT-Thread |
|---|---|---|---|
| 许可证 | Apache 2.0 | MIT | Apache 2.0 |
| 最小尺寸 | 8KB | 6KB | 10KB |
| 设备树支持 | ✅ | ❌ | ❌ |
| 蓝牙协议栈 | 原生支持 | 需额外组件 | 部分支持 |
| 开发模式 | CMake + Python | 传统Makefile | Env工具 |
更多推荐


所有评论(0)