配置开发环境
这一页在 Linux 主机上准备好编译 YuzukiNeko 的 Zephyr 程序所需的一切:系统依赖、Python 虚拟环境、west、玄铁(XuanTie)工具链,以及下载用的 xfel。做完之后,下一篇 获取 Zephyr 代码 才有地方放代码。
后面所有内容都放在同一个目录 ~/f101-zephyr 里,叫它「工作区」。它最终长这样:
~/f101-zephyr/├── .venv/ Python 虚拟环境(本文创建)├── toolchains/ 玄铁工具链(本文创建)├── env.sh 每次开终端都要 source 的环境脚本(本文创建)├── .west/ west 工作区标记(下一篇创建)├── zephyr/ F101 版 Zephyr 内核(下一篇创建)└── modules/ Zephyr 依赖的第三方模块(下一篇创建)mkdir -p ~/f101-zephyr/toolchains && cd ~/f101-zephyrsudo apt updatesudo 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 gcc-multilib g++-multilib libsdl2-dev libmagic1Zephyr 4.2 对主要工具的最低版本要求如下,装完请核对:
| 工具 | 最低版本 | 检查命令 |
|---|---|---|
| CMake | 3.20.5 | cmake --version |
| Python | 3.10 | python3 --version |
| 设备树编译器(dtc) | 1.4.6 | dtc --version |
Python 虚拟环境和 west
Section titled “Python 虚拟环境和 west”用虚拟环境装 west 和 Zephyr 的 Python 依赖,不污染系统 Python:
python3 -m venv ~/f101-zephyr/.venv. ~/f101-zephyr/.venv/bin/activatepip install --upgrade pippip install westwest --versionZephyr 自己的 Python 依赖(pyelftools、PyYAML 等)要等代码拿到之后才能装,放在下一篇的最后一步。
F101 的 CPU 是玄铁 C907(rv32imafdcv)。Zephyr 在这里用 XuanTie 900 elf-newlib 工具链,通过 cross-compile 方式接入,不使用 Zephyr SDK。
| 项 | 值 |
|---|---|
| 包名 | Xuantie-900-gcc-elf-newlib-x86_64-V3.2.0-20250627.tar.gz |
| 编译器前缀 | riscv64-unknown-elf- |
| 来源 | 平头哥 OCC |
cd ~/f101-zephyr/toolchainswget -c https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1751370399722/Xuantie-900-gcc-elf-newlib-x86_64-V3.2.0-20250627.tar.gztar -xzf Xuantie-900-gcc-elf-newlib-x86_64-V3.2.0-20250627.tar.gzls解压后 toolchains/ 下应有 Xuantie-900-gcc-elf-newlib-x86_64-V3.2.0/。验证:
~/f101-zephyr/toolchains/Xuantie-900-gcc-elf-newlib-x86_64-V3.2.0/bin/riscv64-unknown-elf-gcc --versionenv.sh
Section titled “env.sh”把环境变量集中在一个脚本里,以后每开一个终端只需要 source 一次:
cat > ~/f101-zephyr/env.sh <<'EOF'# 用法:. ./env.sh (在工作区根目录,或用绝对路径 source)_F101_WS="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
. "$_F101_WS/.venv/bin/activate"
export ZEPHYR_TOOLCHAIN_VARIANT=cross-compileexport CROSS_COMPILE="$_F101_WS/toolchains/Xuantie-900-gcc-elf-newlib-x86_64-V3.2.0/bin/riscv64-unknown-elf-"export PATH="$(dirname "$CROSS_COMPILE"):$PATH"
# 代码还没拿到时 zephyr/ 不存在,先不设[ -d "$_F101_WS/zephyr" ] && export ZEPHYR_BASE="$_F101_WS/zephyr"
unset _F101_WSEOF各变量的作用:
| 变量 | 作用 |
|---|---|
ZEPHYR_TOOLCHAIN_VARIANT=cross-compile | 让 Zephyr 使用 CROSS_COMPILE 指定的外部工具链 |
CROSS_COMPILE | 工具链路径加前缀,注意末尾的 - |
PATH | 让 riscv64-unknown-elf-gcc 等可以直接调用 |
ZEPHYR_BASE | Zephyr 内核目录,下一篇拿到代码后才有 |
加载并检查:
. ~/f101-zephyr/env.shwhich west riscv64-unknown-elf-gcc两个命令都应该指到工作区里。
安装 xfel
Section titled “安装 xfel”经 USB 把程序载入板子靠 xfel,不装也能编译,但无法下载运行。安装步骤(含 Linux 的 udev 规则)见 FEL 下载模式与工具,需要 v1.4.0 或更新。装完用 xfel version 验证(板子需先进入 FEL)。
重新开一个终端,确认下面每项都成立再进入下一篇:
. ~/f101-zephyr/env.shwest --versioncmake --versiondtc --versionriscv64-unknown-elf-gcc --version下一篇:获取 Zephyr 代码。