[Zephyr] Zephyr SDK Glue 开发指南
本文档提供完整的 Zephyr SDK Glue 开发环境搭建、代码拉取、工程构建和烧录的详细步骤。
目录
概述
Zephyr SDK Glue 是 HPMicro 基于 Zephyr RTOS 开发的清单仓库,包含 HPMicro MCU 适配 Zephyr 的所有源程序文件。与 HPMicro 官方软件开发包(HPM_SDK)共同组成完整的 Zephyr 开发套件。
项目特点
- 独立清单文件:以 Glue 仓库为起点获取所有所需源码
- 基于 HPM_SDK:实时更新HPM_SDK最新版本驱动
- 版本绑定:目前基于 Zephyr v3.7.0 (LTS) 版本
项目结构
workspace/
├── sdk_glue/ # SDK Glue 主目录
│ ├── boards/ # 开发板支持
│ ├── cmake/ # CMake 脚本
│ ├── drivers/ # 驱动文件
│ ├── dts/ # 设备树文件
│ ├── samples/ # 示例程序
│ └── soc/ # SoC 相关文件
├── zephyr/ # Zephyr RTOS 源码
├── sdk_env/ # HPM SDK 环境
│ ├── hpm_sdk/ # HPM SDK 源码
│ └── toolchains/ # 工具链
└── build/ # 构建输出目录
环境搭建
Linux 环境搭建
1. 系统要求
- 操作系统:Ubuntu 18.04 或更高版本(推荐 Ubuntu 20.04/22.04)
- Shell:Bash
2. 安装依赖工具
更新软件包列表并安装必要的依赖:
sudo apt update
sudo apt upgrade
安装开发工具:
sudo apt install --no-install-recommends git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget \
python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \
make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1
3. 验证工具版本
确保以下工具满足最低版本要求:
| 工具 | 最低版本 |
|---|---|
| CMake | 3.20.5 |
| Python | 3.8 |
| Devicetree compiler | 1.4.6 |
检查版本:
cmake --version
python3 --version
dtc --version
如果版本不满足要求,需要升级相应工具。
4. 安装 West 工具
West 是 Zephyr 项目的多仓库管理工具:
pip3 install --user -U west
将 ~/.local/bin 添加到 PATH 环境变量:
echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc
source ~/.bashrc
验证安装:
west --version
5. 安装 OpenOCD(可选)
Linux 环境下需要自行安装 hpmicro riscv-openocd,在系统路径下查找所使用的openocd。
Windows 环境搭建
1. 使用 Chocolatey 安装工具
安装 Chocolatey:
打开 PowerShell(以管理员身份运行):
Set-ExecutionPolicy AllSigned
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
配置 Chocolatey:
打开 cmd.exe:
choco feature enable -n allowGlobalConfirmation
安装开发工具:
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
choco install ninja gperf python git dtc-msys2 wget 7zip
安装完成后,重启 cmd.exe 使环境变量生效。
2. 安装 West 工具
pip3 install -U west
3. 安装 FT2232 驱动(用于调试)
如果使用 FT2232 调试器,需要安装相应的驱动程序。
代码拉取
1. 创建工作空间
选择一个合适的位置创建工作空间目录:
Linux:
mkdir ${workspace}
cd ${workspace}
Windows:
mkdir %workspace%
cd %workspace%
2. 初始化 West 工作空间
使用 Glue 仓库作为清单源初始化工作空间:
Linux/Windows:
west init -m https://github.com/hpmicro/zephyr_sdk_glue.git --mr main
3. 配置清单文件(可选)
如果需要使用国内镜像源(Gitee),可以切换到 Gitee 清单:
west config manifest.file west_gitee.yml
4. 拉取所有源码
更新所有子仓库:
west update
此命令目前会拉取以下仓库:
zephyr:Zephyr RTOS 源码sdk_env:HPM SDK 环境(包含 hpm_sdk 和工具链)canopennode:CANopen 协议栈lvgl:LVGL 图形库CherryUSB:USB 协议栈fatfs:FAT 文件系统mcuboot:MCUboot 引导程序
5. 导出 Zephyr 环境
配置 CMake 变量:
west zephyr-export
6. 安装 Python 依赖
安装 Zephyr 所需的 Python 包:
Linux:
pip3 install --user -r ~/${workspace}/zephyr/scripts/requirements.txt
Windows:
pip3 install -r %workspace%\zephyr\scripts\requirements.txt
7. 应用 HPM SDK 补丁
应用 HPM SDK 相关的补丁:
west supply
工具链配置
安装 Zephyr SDK
Zephyr SDK 包含编译工具链和调试工具。
Linux 安装
cd ${workspace}
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.5/zephyr-sdk-0.16.5_linux-x86_64.tar.xz
wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.5/sha256.sum | shasum --check --ignore-missing
tar xvf zephyr-sdk-0.16.5_linux-x86_64.tar.xz
cd zephyr-sdk-0.16.5
source setup.sh
Windows 安装
cd %workspace%
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.5/zephyr-sdk-0.16.5_windows-x86_64.7z
7z x zephyr-sdk-0.16.5_windows-x86_64.7z
cd zephyr-sdk-0.16.5
setup.cmd
使用自定义工具链(zcc)
如果需要使用 zcc 工具链,需要设置相应的环境变量:
export ZEPHYR_TOOLCHAIN_VARIANT=zcc
export ZCC_TOOLCHAIN_PATH=~/sdk_env/toolchains/zcc-4.1.7/
export TOOLCHAIN_ROOT=~/aa_diskext/ZSG/sdk_glue/
或者使用提供的脚本:
source sdk_glue/zcc.sh
更多关于工具链切换的信息,请参考 工具链切换机制文档。
工程构建
基本构建命令
使用 west build 命令构建工程:
west build -p always -b <BOARD> <SOURCE_DIR>
参数说明:
-p always:强制清理并重新构建(auto为增量编译)-b:指定目标开发板- ``:源代码目录路径
构建示例
示例 1:构建 button 示例
cd ${workspace}/zephyr
west build -p always -b hpm6750evk2 samples/basic/button
示例 2:使用 Snippet
某些示例支持硬件特定的配置选项(snippet):
west build -p always -b hpm6750evk2 -S blinky_pwm samples/basic/blinky_pwm
示例 3:指定构建目录
west build -p always -b hpm6750evk2 -d build/my_build samples/basic/button
查看支持的开发板
列出所有支持的开发板:
Linux:
west boards | grep hpm
Windows:
west boards | findstr hpm
使用 CMake 直接构建
也可以直接使用 CMake 和 Ninja:
cmake -GNinja -B build -DBOARD=hpm6750evk2 samples/basic/button
ninja -C build
Kconfig 配置
使用菜单配置系统:
west build -t menuconfig
或者从构建目录:
cd build
ninja menuconfig
构建选项说明
| 选项 | 说明 |
|---|---|
-p always |
清理构建目录并重新构建 |
-p auto |
自动检测是否需要清理(默认) |
-p never |
不清理,仅增量编译 |
-c / --cmake |
强制重新运行 CMake |
-t |
指定构建目标(如 menuconfig) |
-d |
指定构建目录 |
-S |
使用硬件配置片段 |
构建输出
构建成功后,生成的文件位于构建目录中:
zephyr/zephyr.elf:ELF 格式可执行文件zephyr/zephyr.hex:HEX 格式文件zephyr/zephyr.bin:二进制文件zephyr/zephyr.map:链接映射文件
烧录与调试
烧录程序
使用 west flash
从构建目录烧录:
west flash
从任意位置指定构建目录:
west flash --build-dir path/to/build/directory
烧录选项
查看支持的烧录选项:
west flash --context
选择烧录器(Runner)
如果开发板支持多种烧录方式,可以指定:
west flash --runner openocd
调试程序
启动调试会话
west debug
这会启动 GDB 调试会话并连接到目标板。
启动调试服务器
如果需要使用 IDE 或其他调试工具连接:
west debugserver
这会启动 GDB 服务器,默认监听端口 3333。
指定调试器
west debug --runner openocd
west debugserver --runner openocd
调试选项
查看调试选项:
west debug --context
west debugserver --context
手动烧录
如果不想使用 west flash,可以手动使用 OpenOCD 或其他工具:
使用 OpenOCD:
openocd -f board/hpmicro_hpm6750evk2.cfg -c "program zephyr/zephyr.hex verify reset exit"
使用其他工具:
构建目录中包含了各种格式的二进制文件,可以使用任何支持的工具进行烧录。
常见问题
1. 构建失败:找不到工具链
问题: 构建时提示找不到编译器或工具链。
解决方案:
- 确认已安装 Zephyr SDK 并运行了
setup.sh(Linux)或setup.cmd(Windows) - 检查环境变量是否正确设置
- 如果使用自定义工具链,确认
ZEPHYR_TOOLCHAIN_VARIANT和工具链路径正确
2. west update 失败
问题: 拉取代码时网络超时或失败。
解决方案:
-
使用国内镜像源:
west config manifest.file west_gitee.yml west update -
检查网络连接和代理设置
-
手动克隆仓库后使用
west update更新
3. 找不到开发板
问题: west build 提示找不到指定的开发板。
解决方案:
-
确认开发板名称正确:
west boards | grep hpm -
检查是否在正确的工作空间中
-
确认已正确执行
west update和west zephyr-export
4. 烧录失败
问题: west flash 无法连接到目标板。
解决方案:
- 检查调试器连接(USB 线、驱动等)
- 确认开发板已上电
- 检查 OpenOCD 配置是否正确
- 尝试手动启动 OpenOCD 查看详细错误信息
5. Python 版本问题
问题: 某些 Python 脚本无法运行。
解决方案:
- 确认 Python 版本 >= 3.8
- 安装所有必需的依赖:
pip3 install --user -r zephyr/scripts/requirements.txt
6. Windows 路径长度限制
问题: Windows 10 默认路径长度限制可能导致构建失败。
解决方案:
- 启用长路径支持(需要管理员权限)
- 将工作空间放在靠近根目录的位置(如
D:\workspace) - 缩短构建输出路径
7. 增量编译问题
问题: 修改代码后重新编译,更改未生效。
解决方案:
使用 -p always 强制清理构建:
west build -p always -b <BOARD> <SOURCE_DIR>
8. 查看详细构建信息
问题: 需要查看详细的编译命令和输出。
解决方案:
使用 verbose 模式:
west -v build -b <BOARD> <SOURCE_DIR>
或者设置 CMake 变量:
west build -b <BOARD> -- -DCMAKE_VERBOSE_MAKEFILE=ON
快速参考
常用命令速查
# 初始化工作空间
west init -m https://github.com/hpmicro/zephyr_sdk_glue.git --mr main
# 更新代码
west update
# 导出环境
west zephyr-export
# 应用补丁
west supply
# 构建工程
west build -p always -b hpm6750evk2 samples/basic/button
# 烧录
west flash
# 调试
west debug
# 查看开发板
west boards | grep hpm
# 配置菜单
west build -t menuconfig