首先!养成查文档的习惯,这十分重要
Zephyr的官方文档
Zephyr基本介绍
Zephyr RTOS 是由 Linux 基金会托管的开源实时操作系统,专为资源受限的嵌入式与物联网设备设计。它不是一个单纯的调度内核,而是一个完整的嵌入式软件平台,采用 Apache 2.0 许可证,商业友好,允许闭源修改和商用分发。
核心定位
Zephyr 的目标是提供一次编写、多平台运行的嵌入式开发体验。它通过统一的硬件抽象层,让应用代码能够在不同架构、不同厂商的芯片之间高度复用。目前支持 ARM Cortex-M/A/R、x86、RISC-V、Xtensa(ESP32)、ARC 等多种架构,已适配超过 780 款官方开发板。
两大核心配置机制
Devicetree(设备树)
描述"板子上有哪些硬件"——晶振频率、GPIO 引脚分配、I2C/SPI 外设地址、内存布局等。编译时由设备树编译器(DTC)解析,生成 C 头文件供驱动代码使用。换板子时只需修改 .dts 文件,应用层代码无需改动。
Kconfig
描述"要编译哪些功能"——是否启用网络栈、USB、蓝牙、调试级别、线程数上限等。通过 prj.conf 或 Kconfig.defconfig 文件配置,最终生成 .config 决定哪些源文件参与编译。这套机制直接继承自 Linux 内核。
架构特点
- 高度模块化:最小镜像可压缩至约 2KB Flash,按需启用功能,不用的代码不会编译进最终固件。
- 统一驱动模型:所有外设驱动都通过
struct device 抽象,应用代码通过device_get_binding()或 Devicetree 宏获取设备句柄,调用统一 API。 - 原生协议栈集成:内置完整的 TCP/IP 网络栈、Bluetooth 5.3、USB Device/Host、CAN、MQTT/CoAP/HTTP 等,无需额外移植第三方库。
- POSIX 兼容层:支持部分 POSIX API,可在 Linux 主机上原生编译运行,方便脱离硬件进行逻辑验证。
使用zephyr最主要就是为了它的跨厂商、跨架构,以及原生协议栈集成,以及开源且协议友好。
环境配置
环境架构
Zephyr 开发环境由三层组成。
| 层级 | 目录/工具 | 负责 |
|---|---|---|
| Python 工具层 | .venv + west |
构建调度:拉代码、调用 CMake、烧录 |
| Zephyr 源码层 | zephyr/ + modules/ |
RTOS 内核、HAL、板级定义、示例 |
| 交叉编译层 | zephyr-sdk-1.0.1/ |
arm-zephyr-eabi-gcc、OpenOCD、GDB |
我的开发环境
[!NOTE]
kUbuntu 24.04 LTS + zsh + uv使用ubuntu也一样,其他的发行版可以把这个文档发给AI让AI帮你写一份。我这里的shell是用的
zsh
uv是一个Python的包管理工具,这个不是一定要安装的,只是我个人Python项目一般用这个管,下面有非uv的安装注意。最终安装Zephyr SDK 1.0.1 + Zephyr 4.4.99
使用虚拟机也同样可以复刻下面的环境配置步骤,至于开发,可以考虑使用
Clion的远程开发。以方便的在Windows上进行开发Zephyr项目。
步骤 1:安装系统依赖
sudo apt update && sudo apt install -y \
cmake ninja-build gperf ccache dfu-util wget \
python3-venv python3-dev python3-pip \
python3-setuptools python3-tk python3-wheel \
xz-utils file make gcc gcc-multilib g++-multilib \
libsdl2-dev libmagic1 git device-tree-compiler
这里注意喵,Zephyr 4.x 要求
Python版本最低 3.12,而Ubuntu 24.04 正常自带Python 3.12,大部分的发行版也是,可以使用python3 --version和which python3检查一下❯ python3 --version Python 3.12.3 ❯ which python3 /usr/bin/python3
安装完成后执行一下命令验证。
cmake --version
python3 --version
dtc --version
步骤 2:用 uv 创建 Python 虚拟环境
这里分成使用uv和不使用两种情况。
- 不使用
uv
# 直接创建一个虚拟环境,这个虚拟环境位置你要自己确定好哈
python3 -m venv ~/zephyrproject/.venv
# 创建完 cd 过去,然后启用 activate
cd ~/zephyrproject
source .venv/bin/activate
# 安装 west 构建工具
pip install west
- 使用
uv
# 安装 uv 若已装跳过即可,若没有安装,则安装,安装完不要忘记换下载源哈
curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建一个工作区目录,这里你自己要确定好一个位置
mkdir -p ~/MisakiCodes/Env/zephyrproject && cd ~/MisakiCodes/Env/zephyrproject
# 创建一个虚拟环境,同时指定 python 版本为3.12
uv venv .venv --python 3.12
source .venv/bin/activate
# 安装 west 构建工具
uv pip install west
步骤 3:初始化 West 工作区并拉取源码
# 接着初始化 在当前目录生成 .west/ 配置
west init .
# 拉取所有子模块(zephyr/、modules/、tools/ 等),耗时取决于网速,此处需要科学上网
west update
# 安装 Zephyr Python 依赖
uv pip install -r zephyr/scripts/requirements.txt
##### 注意喵!不使用 uv 的话,就去掉上面命令里面的 uv,直接pip install -r zephyr/scripts/requirements.txt
拉取完成后目录结构
zephyrproject/
├── .west/
├── zephyr/ # 内核 + samples + boards
├── modules/ # HAL、CMSIS、各类驱动库
├── tools/ # 辅助工具
└── .venv/ # Python 环境
步骤 4:安装 Zephyr SDK
4.1 下载Zephyr SDK
# 下载Zephyr SDK,这里选一个下载位置,如果你使用wget的话,当然你也可以直接到https://github.com/zephyrproject-rtos/sdk-ng/releases里面找到最新版本的下载,用下面的直链也可以 此处需要科学上网
cd ~
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v1.0.1/zephyr-sdk-1.0.1_linux-x86_64_gnu.tar.xz
# 解压到 Env 目录,我这里是这么设置的目录,你参考着用你自己的就可以
tar xf zephyr-sdk-1.0.1_linux-x86_64_gnu.tar.xz
rm zephyr-sdk-1.0.1_linux-x86_64_gnu.tar.xz
mv zephyr-sdk-1.0.1 ~/MisakiCodes/Env/
4.2 运行 setup.sh
cd ~/MisakiCodes/Env/zephyr-sdk-1.0.1
./setup.sh
交互选项按下面选
| 选项 | 输入 | 说明 |
|---|---|---|
| Install GNU toolchain | y |
必须,交叉编译器 |
| Install LLVM toolchain | n |
可选,默认用 GNU 即可 |
| Install host tools | y |
必须,OpenOCD 等烧录工具 |
| Register CMake package | y |
必须,让 CMake 找到 SDK |
| Create symbolic links | y |
旧版兼容链接,建议选 |
4.3 SDK 1.0.1 需注意
新版 SDK 目录跟旧版有很多不同的地方,不过你都来安装环境了,干嘛还去考虑旧版的事情。🐒
同时Zephyr 4.4.99要求 SDK ≥ 1.0.0。不过这也不要担心的喵,按照教程来就是最新版喵~
步骤 5:配置环境变量(zsh)
因为是 zsh,写 ~/.zshrc,不要写 ~/.bashrc。
# 写入新配置,如果你是bash,那么就把下面的~/.zshrc换成~/.bashrc就行,同时下面的路径按照你自己安装的具体位置来修改!
cat >> ~/.zshrc << 'EOF'
# Zephyr RTOS
export ZEPHYR_BASE=~/MisakiCodes/Env/zephyrproject/zephyr
export ZEPHYR_SDK_INSTALL_DIR=~/MisakiCodes/Env/zephyr-sdk-1.0.1
export PATH=$PATH:$ZEPHYR_SDK_INSTALL_DIR/gnu/arm-zephyr-eabi/bin:$ZEPHYR_SDK_INSTALL_DIR/hosttools
EOF
# 立即生效,bash改成~/.bashrc就行
source ~/.zshrc
验证路径:
echo $ZEPHYR_BASE
# 输出类似 /home/misaki/MisakiCodes/Env/zephyrproject/zephyr
which arm-zephyr-eabi-gcc
# 应当输出 SDK 路径下的 gcc
步骤 6:验证编译
# 如果你的 west Python环境不在了的话
cd ~/MisakiCodes/Env/zephyrproject
source .venv/bin/activate
# 编译 Nucleo H743 的 blinky 示例 -p 表示首次自动清理
west build -b nucleo_h743zi zephyr/samples/basic/blinky -p
显示下面的样子就代表成功了
[163/163] Linking C executable zephyr/zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 20024 B 2 MB 0.95%
RAM: 4608 B 512 KB 0.88%
至此,环境三层全部打通了喵~
在之后,就是在Clion当中去一步步完成你自己的板子的项目的配置了。关注下一篇教程喵~