1. Zephyr OS 简介
Zephyr OS 是一个面向资源受限设备的实时操作系统(RTOS),由 Linux 基金会托管,旨在为物联网(IoT)、嵌入式系统提供安全、可扩展、模块化的开源解决方案。本章将带你了解 Zephyr 的发展脉络、核心特性、支持的硬件生态以及社区治理模式。
学习目标: 理解 Zephyr OS 的定位与优势,为后续搭建开发环境和编写驱动打下认知基础。
1.1 Zephyr OS 的历史
Zephyr 项目起源于 2016 年,由 Wind River 将其内部 RTOS 产品“Rocket”开源贡献给 Linux 基金会。此后,Intel、NXP、Nordic Semiconductor、Synopsys 等厂商陆续加入,推动其快速发展。2020 年,Zephyr 成为 Linux 基金会下的顶级项目,社区贡献者超过 1000 人。
关键里程碑:
- 2016 — 项目开源,发布 1.0 版本,支持 ARM Cortex-M 和 x86 架构。
- 2018 — 引入 Devicetree 和 Kconfig 构建系统,支持多板级配置。
- 2020 — 成为 Linux 基金会顶级项目,发布 LTS 版本(v2.4)。
- 2023 — 发布 v3.5 LTS,支持超过 500 种开发板,引入安全子系统。
- 2025 — 最新稳定版 v4.0,强化多核 SMP 支持和 Zephyr SDK 统一工具链。
1.2 核心特性
Zephyr OS 的设计围绕三个核心维度:实时性、模块化和安全性。下表总结了这些特性的具体体现:
| 特性维度 | 具体能力 | 技术实现 |
|---|---|---|
| 实时性 | 抢占式多线程、中断嵌套、优先级继承 | 基于优先级的调度器,支持 Tickless 内核,最小调度延迟 < 1μs |
| 模块化 | Kconfig 配置、Devicetree 硬件描述、子系统解耦 | 构建时裁剪,按需启用驱动/协议栈,最小镜像可低至 8KB |
| 安全性 | 用户态/内核态隔离、栈保护、加密库集成 | 基于 MPU/MMU 的内存保护,支持 PSA Certified Level 1 |
| 可移植性 | 统一 HAL 层、板级支持包(BSP)抽象 | 一套 API 跨架构,驱动代码无需修改即可移植到新板卡 |
| 连接性 | BLE、Wi-Fi、Thread、Zigbee、Ethernet、CAN | 原生协议栈,支持 CoAP/MQTT/HTTP 应用层协议 |
模块化优势: 开发者可以通过
west build -t menuconfig 命令可视化地开关功能模块,只编译需要的组件,从而减小固件体积并降低攻击面。
1.3 支持的架构与板卡
Zephyr 是目前支持硬件架构最广泛的 RTOS 之一,覆盖从低功耗 MCU 到高性能 MPU 的完整范围。下表列出主要架构及代表板卡:
| 架构 | 代表厂商 | 典型板卡 | 应用场景 |
|---|---|---|---|
| ARM Cortex-M | ST, NXP, Nordic, TI | STM32F4 Discovery, nRF52840 DK | IoT 传感器、可穿戴设备 |
| ARM Cortex-A | NXP, Rockchip | i.MX8M Mini EVK | 边缘网关、HMI 显示 |
| x86 | Intel | Intel Galileo, QEMU x86 | 工业控制、原型验证 |
| RISC-V | SiFive, Bouffalo Lab | HiFive1 Rev B, BL808 | 开源硬件、AIoT |
| Xtensa | Espressif | ESP32, ESP32-S3 | Wi-Fi/BLE 无线产品 |
| ARC | Synopsys | ARC EM Starter Kit | 嵌入式 DSP、音频处理 |
注意: 不同架构的驱动开发流程基本一致,但底层 HAL 实现和中断控制器存在差异。本课程将以 ARM Cortex-M 为主要平台,兼顾 RISC-V 和 Xtensa 的移植要点。
1.4 社区与许可证
Zephyr 项目采用 Apache 2.0 许可证,允许商业使用、修改和再分发,无需公开私有代码修改。这使得 Zephyr 成为企业级产品的理想选择。
社区治理结构:
- 技术指导委员会(TSC) — 由主要贡献厂商代表组成,负责技术方向决策。
- 维护者(Maintainers) — 每个子系统(如蓝牙、网络、驱动)有专门维护者,审核 PR。
- 贡献者(Contributors) — 全球开发者通过 GitHub 提交代码、报告问题、参与讨论。
- Zephyr 开发者邮件列表 & Discord — 日常技术交流与问题求助渠道。
参与社区: 你可以通过
https://github.com/zephyrproject-rtos/zephyr 提交 Issue 或 Pull Request。建议从 good first issue 标签开始,逐步熟悉代码规范。