Zephyr 实时操作系统详细介绍
目录
1. Zephyr 概述
1.1 基本定义
Zephyr 是一款由 Linux 基金会 主导的开源实时操作系统(RTOS),专为资源受限的嵌入式设备设计,特别是物联网(IoT)领域。它不仅仅是一个调度内核,而是一个完整的嵌入式软件开源平台,提供一站式解决方案。
Zephyr 项目于 2016 年 2 月由 Linux 基金会正式发起,首批创始成员包括 NXP、Intel、Synopsys 等半导体和嵌入式企业。Wind River(英特尔子公司)向项目捐赠了 Rocket RTOS 内核,成为 Zephyr 的技术基础。
1.2 核心设计理念
| 设计原则 | 说明 |
|---|---|
| 微内核架构 | 内核仅提供最基本服务(线程调度、中断处理、IPC),其他功能以可选模块形式存在 |
| 极致轻量 | 最小配置仅需 8KB ROM + 2KB RAM,可运行在只有 10KB RAM 的 32 位微控制器上 |
| 高度可扩展 | 从 8 位 MCU 到 64 位多核处理器,从传感器节点到复杂多核系统均可支持 |
| 标准兼容 | 支持 POSIX 子集(PSE51、PSE52、BSD Sockets),便于 Linux 应用迁移 |
| 安全优先 | 安全从设计之初就内置,设立专门安全委员会,严格跟踪漏洞 |
| 供应商中立 | 由 Linux 基金会治理,近 50 个官方成员组织,避免单一厂商锁定 |
1.3 为什么选择 Zephyr?
- 统一跨平台:一个内核同时支持 ARM、RISC-V、x86、ARC、Xtensa 等多种架构,应用开发者无需为不同硬件反复移植代码
- 全功能一体化:自带驱动框架、文件系统、网络协议栈、安全组件,无需依赖外部中间件
- 模块化与可配置性:通过 Kconfig 和 Devicetree 在编译时定义所需资源和模块
- 安全性能:提供线程隔离、内存保护、用户空间支持、安全启动等安全特性
- 活跃社区:目前最活跃的嵌入式 RTOS 贡献者社区,支持 900+ 开发板和 275+ 传感器
- 长期支持:约 52% 的组织计划支持运行 Zephyr 的产品长达 5-10 年或更久
2. 发展历程与里程碑
| 时间 | 里程碑事件 |
|---|---|
| 2016 年 2 月 | Linux 基金会正式发起 Zephyr 项目,NXP、Intel、Synopsys 等创始成员加入 |
| 2016 年 7 月 | Zephyr 1.0 发布,初步支持 Arduino 101、Intel Galileo Gen2 等平台 |
| 2017 年 | 成为 CVE 漏洞授权中心,建立安全漏洞跟踪机制 |
| 2018 年 | 获得 Linux 基金会核心基础设施倡议(CII)金牌徽章 |
| 2019 年 | 支持架构扩展至 8+ 种,板卡支持突破 500+ |
| 2021 年 | 发布 LTS 1(长期支持版本),支持周期 2+ 年 |
| 2023 年 | 发布 LTS 2(v3.7.0),支持周期 5 年,面向产品级应用 |
| 2024 年 | 支持板卡突破 750+,传感器驱动 275+ |
| 2025 年 | 发布 v4.1,与 FreeRTOS 进行性能对比;IAR 加入成为银牌会员 |
| 2026 年 4 月 | 发布 v4.4,新增 WireGuard VPN、Wi-Fi Direct、USB Host 视频摄像头支持 |
| 2026 年 | 支持 900+ 板卡,持续推进 IEC 61508 SIL-3/SC-3 功能安全认证 |
3. 系统架构
Zephyr 采用微内核架构,这与 Linux 等宏内核系统形成鲜明对比。内核只提供最基本的服务,其他所有功能都以可选模块的形式存在。
┌─────────────────────────────────────────────────────────────┐
│ 应用层 (Applications) │
│ ┌───────────────────────────────────────┐ │
│ │ 用户应用 │ 中间件 │ 协议栈 │ GUI (LVGL) │ │
│ └───────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ POSIX 兼容层 (POSIX Layer) │
│ ┌───────────────────────────────────────┐ │
│ │ PSE51/PSE52 │ BSD Sockets │ pthreads │ │
│ └───────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 操作系统服务 (OS Services) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 文件系统 │ 日志系统 │ Shell │ IPC (zbus/FIFO/LIFO) │ │
│ │ 网络协议栈 │ 设备驱动模型 │ 电源管理 │ 安全组件 │ │
│ └─────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 内核 / 硬件抽象层 (HAL) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 线程调度 │ 中断管理 │ 内存管理 │ 定时器 │ 同步原语 │ │
│ │ 平台驱动 │ 看门狗 │ 传感器 │ 加密硬件 │ Flash │ │
│ └─────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 硬件层 (Hardware) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ SoC │ 外设 │ 总线(I2C/SPI/UART/CAN) │ 存储 │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
3.1 微内核设计哲学
- 内核最小化:仅包含线程调度、中断处理、进程间通信(IPC)
- 模块化扩展:文件系统、网络协议栈、设备驱动等均为可选模块
- 高度确定性:中断响应时间可控制在几十纳秒级别
- 静态内存分配:所有内核对象在编译时静态分配,消除运行时内存碎片
3.2 线程模型与调度机制
Zephyr 支持两种线程类型:
| 线程类型 | 特性 | 适用场景 |
|---|---|---|
| 协作式线程 | 运行直到主动让出 CPU | 非实时任务、后台处理 |
| 抢占式线程 | 可被高优先级线程中断 | 实时任务、中断响应 |
调度器采用严格的优先级调度算法,支持 256 个优先级级别(数值越小优先级越高)。
最佳实践优先级设置:
- 中断服务例程(ISR):最高优先级
- 关键实时任务:中高优先级
- 后台任务:最低优先级
4. 核心子系统详解
4.1 调度与线程管理
Zephyr 提供丰富的内核对象用于线程管理和同步:
| 内核对象 | 功能 | 关键 API |
|---|---|---|
| 线程 (Thread) | 执行的基本单位 | k_thread_create(), k_thread_start() |
| 信号量 (Semaphore) | 资源计数与同步 | k_sem_init(), k_sem_take(), k_sem_give() |
| 互斥锁 (Mutex) | 互斥访问共享资源 | k_mutex_init(), k_mutex_lock(), k_mutex_unlock() |
| 消息队列 (Message Queue) | 线程间数据传输 | k_msgq_init(), k_msgq_put(), k_msgq_get() |
| 定时器 (Timer) | 时间相关操作 | k_timer_init(), k_timer_start(), k_timer_stop() |
| 事件标志 (Event Flags) | 任务间事件通知 | k_event_init(), k_event_post(), k_event_wait() |
| FIFO/LIFO | 先进先出/后进先出队列 | k_fifo_init(), k_lifo_init() |
| Mailbox | 双向数据传输 | k_mbox_init(), k_mbox_send(), k_mbox_recv() |
| Pipe | 字节流管道 | k_pipe_init(), k_pipe_put(), k_pipe_get() |
实时性能基准(ARM Cortex-M4F @ 120MHz):
| 操作 | 耗时 |
|---|---|
| 线程创建 | 2.5 μs |
| 线程启动 | 3.6 μs |
| 线程挂起 | 3.3 μs |
| 线程恢复 | 3.8 μs |
| 上下文切换(yield) | 2.2 μs |
| 获取信号量 | 0.6 μs |
| 释放信号量 | 1.1 μs |
4.2 内存管理策略
针对资源受限设备,Zephyr 提供创新的内存管理方案:
| 方案 | 说明 | 适用场景 |
|---|---|---|
| 静态内存分配 | 所有内核对象在编译时静态分配 | 消除运行时碎片,安全性优先 |
| 内存池 (Memory Pool) | 预定义大小的内存块池 | 频繁分配/释放的场景 |
| 堆分配 (Heap) | 可选的传统动态内存分配 | 需动态内存时使用(建议谨慎) |
| 内存保护 | 用户空间支持、线程隔离 | 安全关键应用 |
关键配置项:CONFIG_HEAP_MEM_POOL_SIZE 等。
4.3 网络子系统
Zephyr 提供完整的原生网络协议栈:
- 核心协议:IPv4/IPv6、UDP、TCP、ICMPv4/ICMPv6、DHCP v4、DNS、SNTP
- IoT 协议:MQTT (3.1.1/5)、CoAP、HTTP、LwM2M 1.1、OpenThread
- 无线协议:蓝牙 5.3(LE Controller/Host/Mesh)、Wi-Fi、LoRa、Zigbee
- 有线协议:Ethernet、CAN bus、IEEE 802.15.4、Thread
- 安全传输:TLS、DTLS、WireGuard VPN(v4.4 新增)
- API 接口:BSD Sockets-based API,支持 IP offloading
- 高级特性:多网络接口、时间敏感网络(TSN)、空中升级(OTA)
4.4 文件系统
Zephyr 支持多种文件系统:
- FAT:兼容 Windows/DOS 文件系统
- LittleFS:专为闪存设计的日志结构文件系统
- NVS (Non-Volatile Storage):非易失性存储,适合配置数据
- Flash Map:Flash 分区管理
4.5 设备驱动模型
Zephyr 采用统一的设备驱动模型:
- 标准化 API 和框架,用于开发和集成各类硬件设备驱动
- 通过 Devicetree(DTS) 描述和配置硬件资源,实现应用与硬件解耦
- 支持 200+ 种传感器驱动,且支持列表持续扩展
Devicetree 示例(I2C 设备配置):
&i2c1 {
pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb9>;
pinctrl-names = "default";
clock-frequency = <I2C_BITRATE_FAST>;
status = "okay";
lsm6dsl@6a {
compatible = "st,lsm6dsl";
reg = <0x6a>;
};
hts221@5f {
compatible = "st,hts221";
reg = <0x5f>;
};
};
4.6 电源管理
- Tickless 内核:降低功耗,减少不必要的定时中断
- 系统 PM:空闲线程模式,仅对注册事件响应中断
- 设备 PM:设备驱动可响应电源管理状态变化
- 动态电压频率调整:与硬件快速唤醒机制配合,实现亚毫秒级响应
4.7 图形用户界面
- 支持 LCD、OLED、触摸屏、E-ink、LED 矩阵等多种显示类型
- 原生 LVGL 集成:提供丰富的 GUI 组件
- 支持视频捕获和输出
4.8 进程间通信 (IPC)
| 机制 | 特性 | 数据结构 |
|---|---|---|
| FIFO | 单向 | Queue |
| LIFO | 单向 | Queue |
| Stack | 单向 | Array |
| Message Queue | 单向 | Ring buffer |
| Mailbox | 双向 | Queue |
| Pipe | 单向 | Ring buffer |
| IPC Service | 1-to-1 / 1-to-many,无拷贝 API | - |
| zbus (Zephyr Message Bus) | 1-to-1 / 1-to-many / many-to-many,同步/异步 | Channel-based |
4.9 安全组件
| 安全特性 | 说明 |
|---|---|
| 安全启动 (Secure Boot) | 基于 MCUboot,支持应用二进制签名/加密 |
| 硬件安全 | 加密 API、随机数生成、硬件密钥支持 |
| 固件验证 | 降级防护、依赖检查、重置和故障恢复 |
| 空中升级 (OTA) | 支持 LwM2M、Eclipse hawkBit 等协议 |
| 可信固件集成 | Trusted Firmware 集成,设备认证 |
| 设备管理 | 设备密钥管理、固件加密 |
5. 支持的硬件平台
Zephyr 支持从 8 位到 64 位的广泛处理器架构,已支持 900+ 开发板和 275+ 传感器。
5.1 支持的 CPU 架构
| 架构 | 具体系列 |
|---|---|
| ARM | Cortex-M (M0/M0+/M3/M4/M7/M33/M55), Cortex-R, Cortex-A |
| RISC-V | 32 位 / 64 位 |
| x86/x64 | Intel 32 位 / 64 位 |
| ARC | Synopsys ARC |
| Xtensa | Tensilica (ESP32 系列) |
| MIPS | MIPS32 |
| SPARC | LEON3 |
| 其他 | Nios II, POSIX (Native) |
5.2 主流支持的芯片/开发板
- STM32 系列(ST)
- nRF52/nRF53/nRF91 系列(Nordic)
- i.MX RT 系列(NXP)
- ESP32/ESP32-C3/ESP32-S3(乐鑫)
- RA 系列(Renesas)
- SAM 系列(Microchip)
- RP2040/RP2350(Raspberry Pi)
- XIAO 系列(Seeed Studio)
- Realtek Ameba 系列
6. 配置与构建系统
6.1 Kconfig 配置系统
Zephyr 使用 Kconfig 进行图形化或命令行配置:
# 进入配置界面
west build -t menuconfig
所有组件和特性均可通过 Kconfig 精确裁剪。
6.2 Devicetree (DTS)
Devicetree 用于描述和配置目标系统的硬件资源,实现应用与硬件的解耦:
- 描述 GPIO、外设、传感器等硬件资源
- 编译时解析,零运行时开销
- 支持 100+ 种 Devicetree bindings
6.3 West 元工具
West 是 Zephyr 的项目元工具,提供:
- 模块管理:简化各种模块/库的版本控制和集成
- 构建系统:基于 CMake 的可扩展命令行接口
- 静态分析:RAM/ROM 报告、代码分析
6.4 构建流程
# 1. 安装 West 和依赖
pip install west
# 2. 初始化工作区
west init ~/zephyrproject
cd ~/zephyrproject
west update
# 3. 导出 Zephyr 环境
west zephyr-export
# 4. 构建项目
west build -b <board_name> <application_path>
# 5. 烧录固件
west flash
# 6. 查看串口日志
west espressif monitor
6.5 原生 Linux 运行
Zephyr 应用可以作为原生 Linux 应用程序运行,便于调试和开发:
# 使用 native_sim 或 native_posix 板卡
west build -b native_sim samples/hello_world
./build/zephyr/zephyr.exe
7. 安全与认证
7.1 安全流程
- CVE 授权中心:2017 年起成为漏洞 CVE 授权中心
- CII 金牌徽章:2018 年获得 Linux 基金会核心基础设施倡议金牌徽章
- 安全委员会:设立专门安全委员会,严格跟踪漏洞
- SBOM 支持:软件物料清单,帮助遵从欧盟《网络弹性法案》
- MISRA 规范:采用 MISRA 代码规范、静态分析和需求可追踪流程
7.2 功能安全认证
Zephyr 正在推进功能安全认证,采用 V-model 开发流程:
| 认证目标 | 详情 |
|---|---|
| 初始认证范围 | 内核和接口的有限范围 |
| 目标标准 | IEC 61508 SIL-3 / SC-3 |
| 扩展选项 | ISO 26262(需足够成员兴趣) |
| 认证方法 | Route 3s(开源软件认证路径) |
| 开发流程 | 需求规范、文档、源码到需求的可追溯性 |
7.3 长期支持 (LTS)
| LTS 版本 | 发布时间 | 支持周期 | 特点 |
|---|---|---|---|
| LTS 1 | 2021 年 | 2+ 年 | 首个长期支持版本 |
| LTS 2 (v3.7.0) | 2023 年 | 5 年 | 产品级聚焦,包含最新安全更新 |
8. 与其他 RTOS 的对比
8.1 特性对比
| 特性 | Zephyr | FreeRTOS | NuttX |
|---|---|---|---|
| 架构 | 微内核 | 单内核 | 单内核 |
| 最小体积 | 8KB ROM / 2KB RAM | ~10KB ROM / 2KB RAM | 32KB Flash / 8KB RAM |
| POSIX 兼容 | ⭐⭐ PSE51/PSE52 + BSD Sockets | ⭐ 有限支持 | ⭐⭐⭐ 原生支持 |
| 文件系统 | ✅ 内置 | ❌ 需外部组件 | ✅ 内置 VFS + 10+ FS |
| 网络协议栈 | ✅ 原生完整 TCP/IP | ❌ 需外部组件 | ✅ 完整 TCP/IP |
| 图形/GUI | ✅ LVGL 原生集成 | ❌ 无 | ✅ NxWidgets |
| 安全特性 | ⭐⭐⭐ 线程隔离/内存保护/安全启动 | ⭐ 有限 | ⭐⭐ 部分支持 |
| SMP 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| 蓝牙支持 | ✅ 5.3 完整协议栈 | ❌ 需外部 | ❌ 需外部 |
| 认证准备 | ✅ IEC 61508 SIL-3 / ISO 26262 | ❌ 无 | ❌ 无 |
| 许可证 | Apache 2.0 | MIT | Apache 2.0 |
| 治理模式 | Linux 基金会/供应商中立 | AWS 主导 | Apache 基金会 |
| 支持板卡 | 900+ | 200+ | 150+ |
| 学习曲线 | 中等 | 低 | 中等 |
8.2 选择建议
- 选择 Zephyr:物联网设备、需要丰富无线协议(蓝牙/Wi-Fi/Thread)、对安全性/认证要求高、希望获得长期支持
- 选择 FreeRTOS:硬件资源非常有限、追求极致实时性、需要最小系统开销、快速上手
- 选择 NuttX:需要 POSIX 原生兼容性、丰富的文件系统功能、希望重用 Linux 代码
9. 典型应用场景
9.1 物联网设备
Zephyr 的完整网络协议栈和无线支持使其成为物联网网关和边缘设备的理想选择。支持 MQTT、CoAP、LwM2M 等 IoT 协议。
9.2 工业控制
硬实时性能、CAN bus 支持、确定性调度,满足工业自动化和机器人控制的需求。Vestas 风力涡轮机使用 Zephyr 进行工业控制。
9.3 智能可穿戴
超低功耗设计(tickless 内核 + 动态电压调整),适合电池供电的可穿戴设备。Oticon 助听器采用 Zephyr 实现蓝牙 LE 低功耗连接。
9.4 智能家居
Bauer NE 蓝牙智能锁(房车门锁)采用 Zephyr 架构保证长期稳定性和安全性。
9.5 消费电子
Google Chromebook 系列笔记本在硬件抽象层使用 Zephyr RTOS 管理传感器和电源等次级功能。
9.6 汽车电子
Zephyr 正在推进 ISO 26262 认证,适用于车载信息娱乐系统和传感器控制单元。CARIAD(大众集团)为 Zephyr 白金会员。
9.7 医疗设备
安全启动、固件加密、设备认证等安全特性,满足医疗设备的合规要求。
10. 快速入门
10.1 环境准备
# Ubuntu/Debian
sudo apt-get install --no-install-recommends git cmake ninja-build gperf ccache dfu-util device-tree-compiler wget python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1
# 安装 West
pip3 install --user -U west
10.2 获取源码
# 初始化工作区
west init ~/zephyrproject
cd ~/zephyrproject
west update
# 安装 Python 依赖
pip3 install --user -r zephyr/scripts/requirements.txt
10.3 构建 Hello World
# 使用模拟器(无需硬件)
west build -b native_sim zephyr/samples/hello_world
# 运行
./build/zephyr/zephyr.exe
# 输出: Hello World! native_sim
10.4 使用真实开发板
# 以 nRF52840 DK 为例
west build -b nrf52840dk/nrf52840 zephyr/samples/hello_world
west flash
# 查看串口输出
west espressif monitor
# 或
minicom -D /dev/ttyACM0 -b 115200
10.5 常用 West 命令
west build -t menuconfig # 图形化配置
west build -t ram_report # RAM 使用报告
west build -t rom_report # ROM 使用报告
west build -t footprint # 内存占用总览
west update # 更新所有模块
west list # 列出所有模块
11. 总结
Zephyr 是一款专为物联网和安全关键应用设计的现代化实时操作系统。其核心优势在于:
- 微内核架构:内核最小化,模块化扩展,确定性高
- 极致轻量:最小仅需 8KB ROM + 2KB RAM,适合最资源受限的设备
- 安全优先:从设计之初内置安全,支持安全启动、固件加密、线程隔离
- 功能安全认证:正在推进 IEC 61508 SIL-3 和 ISO 26262 认证
- 丰富连接性:原生支持蓝牙 5.3、Wi-Fi、Thread、LoRa、CAN 等无线/有线协议
- 活跃生态:900+ 开发板、275+ 传感器、近 50 个官方成员组织
- 长期支持:LTS 版本支持 5 年,约 52% 组织计划支持 5-10 年
- 供应商中立:Linux 基金会治理,避免厂商锁定
对于需要丰富无线连接、高安全性、功能安全认证准备的物联网和嵌入式项目,Zephyr 是当前最佳选择之一。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)