Misakiotoha
Misakiotoha
发布于 2026-07-24 / 403 阅读
1
1

Zephyr入门第二课——Zephyr基本介绍 + 环境配置

首先!养成查文档的习惯,这十分重要

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和不使用两种情况。

  1. 不使用uv
# 直接创建一个虚拟环境,这个虚拟环境位置你要自己确定好哈
python3 -m venv ~/zephyrproject/.venv

# 创建完 cd 过去,然后启用 activate
cd ~/zephyrproject
source .venv/bin/activate

# 安装 west 构建工具
pip install west
  1. 使用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当中去一步步完成你自己的板子的项目的配置了。关注下一篇教程喵~


评论