跳到主要内容

环境安装

Ubuntu 和 Fedora 都可以用于本教程,按自己正在使用的系统选择安装命令即可。系统依赖包名不同,后续的工作区、应用源码、编译和烧录流程共用。

验证记录:本站固件编译实际在 Fedora 上完成;Ubuntu 24.04 LTS 的安装命令依据官方指南整理,尚未在全新 Ubuntu 主机上完整复验。这是验证范围的区别,不是系统优先级。

工具组成​

写 C 文件只是第一步。编译配置需要 CMake,执行编译任务需要 Ninja,生成硬件定义需要设备树工具,下载依赖和烧录需要 Python 工具,生成 ESP32 指令需要交叉编译器。IDE 可以调用它们,但不会替你消除这些依赖。

工具运行位置与职责
主机 gcc / g++在电脑上构建工具或 Python 的原生扩展
CMake根据应用、板卡与配置生成构建规则
Ninja按规则调用编译器,执行增量构建
Python 虚拟环境隔离 west 和 Python 依赖,不包含 Zephyr 内核
west管理源码仓库,并调用构建、烧录等扩展命令
Zephyr SDK包含交叉编译器和部分主机工具,输出给 MCU 运行的代码

因此,“已激活虚拟环境”不代表 SDK 已安装,也不代表正在使用正确的 Zephyr 源码。

系统依赖​

以下用于新环境;已有环境先查看版本,不需要为了跟教程重装全部工具。

以下命令适用于 Ubuntu 24.04 LTS x86-64:

sudo apt update
sudo apt install --no-install-recommends git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget python3-dev python3-venv python3-tk \
xz-utils file make gcc g++ gcc-multilib g++-multilib libsdl2-dev libmagic1 \
libusb-1.0-0-dev libudev-dev pkg-config

最后三个包用于 USB 相关 Python 扩展的构建,避免遇到 hidapi 找不到 libusb/udev 的错误。ARM64 主机不要照装两个 multilib 包;其 SDK 主机架构也必须匹配。

Ubuntu 24.04 的系统 Python 为 3.12,安装 python3-venv 后可继续创建虚拟环境。其他 Ubuntu 版本先核对工具版本。

环境检查​

本教程参考的 main 基线要求 CMake 至少 3.28、Python 至少 3.12、DTC 至少 1.4.6。后续工作区命令选择 Python 3.12;两个系统都要检查实际版本,不能只看到命令存在就继续。

cat /etc/os-release
uname -m
python3 --version
python3.12 --version
cmake --version
dtc --version
ninja --version
gcc --version
pkg-config --modversion libusb-1.0 libudev

目录布局​

继续沿用本站已有命令中的路径,目录名称不限制操作系统:

~/Projects/
├── zephyr-docs/ # 笔记与教学示例
└── zephyr-main-workspace/ # west 工作区
├── .venv-py312-main/ # Python 工具
├── .west/ # 工作区配置
├── zephyr/ # 内核、驱动、板卡定义
├── modules/ # LVGL、芯片 HAL 等
└── applications/ # 可选:自己的应用
~/.local/opt/zephyr-sdk-1.0.1/ # 本教程已验证的 SDK

应用可以在工作区外,但构建时必须明确源码工作区和应用路径。不要将虚拟环境、模块仓库和 SDK 当成自己的应用代码一起提交。

USB 串口权限​

连接开发板后先找端口:

ls -l /dev/serial/by-id/
id -un

若不存在 by-id,稍后安装 Python 依赖后用串口枚举工具检查。不要假设所有板都叫 ttyACM0。

两种系统都先用 ls -l /dev/ttyACM0 检查实际端口的属组。若属组是 dialout,且自己的账号不在其中,再执行:

sudo usermod -aG dialout "$USER"

退出桌面会话并重新登录,然后用 id -nG 检查。不要用 sudo west 绕过问题,否则还容易在工作区生成 root 所有的文件。

练习​

为什么电脑上同时需要 gcc 和 SDK 中的编译器?为什么 Python 虚拟环境可以删除重建,但不应该包含应用源码?回答清楚后进入 west、源码与 SDK。

来源:Zephyr 入门指南。安装版本应与实际检出的 Zephyr 要求一起核对。