🔧 AI 知识库

嵌入式工程师,是时候认真看看 Zephyr RTOS 了

原文链接

嵌入式工程师,是时候认真看看 Zephyr RTOS 了

原文链接:https://mp.weixin.qq.com/s/i2yJVe-5qiRcjSIyNB3RCw 作者:一枚嵌入式码农 | 2026-03-25

摘要

Zephyr RTOS——Linux 基金会托管,Nordic/NXP/ST/TI 等大厂背书,支持 600+ 开发板,覆盖 ARM/RISC-V/x86/ARC/Xtensa。不是单纯内核,而是完整的嵌入式软件平台(内核 + 蓝牙/网络/USB/文件系统/Shell 一站式)。最小配置 8KB ROM + 5KB RAM,Matter 官方支持平台,PSA Certified 安全认证。学习曲线比 FreeRTOS 陡,但生态和架构设计更现代。


Zephyr 是什么

Zephyr 是 Linux 基金会托管的开源 RTOS,最早由 Wind River(VxWorks 那家)2015 年开源,2016 年纳入 Linux 基金会。背后 Intel/Nordic/NXP/ST/TI。

跟 FreeRTOS 不同,Zephyr 不只一个内核,是完整嵌入式软件平台——除了实时内核,还内置网络协议栈、蓝牙协议栈、USB 协议栈、文件系统、Shell 等。

可以理解成嵌入式领域的"小号 Linux"——功能丰富,但照样能跑在几十 KB RAM 的 MCU 上。


系统架构

从下往上四层:

  1. 硬件抽象层(HAL):借鉴 Linux Devicetree(设备树)机制,硬件描述和驱动代码完全解耦
  2. 内核层:线程管理、调度器(抢占式+协作式)、同步原语、中断管理、内存管理
  3. 子系统层:跟 FreeRTOS 拉开差距——蓝牙 BLE 5.x + Mesh、网络 TCP/IP/CoAP/MQTT/HTTP、USB、文件系统 LittleFS/FAT、Shell、日志、电源管理
  4. 应用层:通过 Zephyr API 调用下层服务

核心优势

跨平台能力

CI 系统跑着几百块板子的自动化测试,每次提交都验证。换芯片改改设备树配置文件,大概率直接编译运行。

极致模块化

Kconfig + CMake 构建系统(和 Linux 内核一个思路),精确控制每个功能开关。最小内核可压到 8KB ROM + 5KB RAM,需要蓝牙/网络就打开对应配置。

设备树机制

硬件描述通过 .dts 文件定义,驱动不跟具体硬件绑死。加传感器写一段设备树描述就行,驱动层不用动。

安全机制

PSA Certified 认证、MPU 内存保护、MCUboot 安全启动、TLS/DTLS 加密通信。

社区与生态

GitHub 10000+ Star,每月几百个 PR,约 4 个月一个大版本,Linux 基金会 + 大厂撑腰。


应用场景

  • 可穿戴设备:Nordic nRF52/nRF53 + Zephyr 成熟组合,蓝牙手环/手表/健康监测
  • 智能家居:增长最快领域,Matter 官方支持平台 + Thread 协议完善
  • 工业物联网:低功耗数据采集节点,电源管理可以压到很低
  • 音频设备:蓝牙 LE Audio + LC3 编解码,蓝牙耳机/助听器已有商用案例

一句话:凡是需要联网的嵌入式小设备,Zephyr 都值得列入候选。


学习路线

第一步:搭环境

pip install west
west init ~/zephyrproject
cd ~/zephyrproject
west update
pip install -r zephyr/scripts/requirements.txt

第二步:跑 Hello World

#include <zephyr/kernel.h>
int main(void) {
    printk("Hello World! Board: %s\n", CONFIG_BOARD);
    return 0;
}

编译烧录:west build -b <开发板名> samples/hello_worldwest flash

第三步:啃文档 + 跑 Sample

文档重点:Getting Started Guide / Devicetree 指南 / Kconfig / 子系统文档。先跑 sample → 改 sample → 自己写。

第四步:完整项目

比如 nRF52840 + Zephyr 做蓝牙温湿度传感器:设备树配置 → 驱动调用 → BLE GATT 服务 → 低功耗管理。


附:代码设计哲学

Zephyr 源码组织得异常清晰,大量运用设计模式:

  • 设备驱动框架 → 策略模式(统一函数指针接口,换芯片换实现)
  • 子系统事件通知 → 观察者模式(松耦合)
  • Kconfig 构建 → 建造者模式(逐步组装)
  • 内核初始化 → 模板方法模式(框架定义步骤,模块实现)

代码量越大、需要适配的场景越多,设计模式的价值就越明显。

跟之前存的 TinyML/ESP32 文章对比: Zephyr 和 FreeRTOS 的选择有点像 Classic RAG 和 Graph RAG——不是谁替代谁,看项目规模和复杂度。小项目 FreeRTOS 够用,产品线多/需要联网/Zephyr 生态覆盖的场景,值得认真考虑。