4、Windows主机环境准备:安装MSYS2、Chocolatey或WSL2、配置MinGW/GCC工具链、处理路径与权限问题
在Windows上搭建Zephyr OS驱动开发环境,核心挑战在于处理跨平台编译工具链、POSIX兼容性以及文件路径与权限差异。本章提供三种主流方案:MSYS2(轻量级POSIX环境)、Chocolatey(包管理器自动化)和WSL2(完整Linux内核兼容)。你将根据项目需求选择最合适的方案,并完成MinGW/GCC工具链的配置与路径权限调优。
4.1 方案一:MSYS2 环境搭建
MSYS2 提供类 Unix 的 shell 环境与 pacman 包管理器,是 Windows 下编译 Zephyr 最轻量的选择。它自动处理 Windows 与 POSIX 路径转换,并预置 MinGW-w64 工具链。
4.1.1 安装 MSYS2
- 从 msys2.org 下载安装包(推荐 x86_64 版本)。
- 运行安装程序,安装路径建议使用默认
C:\msys64,避免中文或空格。 - 安装完成后,启动 MSYS2 UCRT64 终端(UCRT 环境兼容性最佳)。
- 更新包数据库与核心组件:
pacman -Syu
# 若提示关闭终端,请关闭后重新打开
pacman -Su
4.1.2 安装 MinGW-w64 工具链与 Zephyr 依赖
# 安装 MinGW-w64 GCC 工具链
pacman -S mingw-w64-ucrt-x86_64-gcc
pacman -S mingw-w64-ucrt-x86_64-cmake
pacman -S mingw-w64-ucrt-x86_64-make
pacman -S mingw-w64-ucrt-x86_64-python
pacman -S mingw-w64-ucrt-x86_64-ninja
# 安装版本控制与工具
pacman -S git
pacman -S wget
gcc --version 应输出类似 gcc (Rev6, Built by MSYS2 project) 13.2.0;执行 cmake --version 应输出 3.26 以上版本。
4.1.3 路径转换规则
| Windows 路径 | MSYS2 路径 | 说明 |
|---|---|---|
C:\Users\dev |
/c/Users/dev |
盘符转为小写,反斜杠转为正斜杠 |
D:\projects\zephyr |
/d/projects/zephyr |
盘符映射到 /d 目录 |
C:\msys64\home\dev |
/home/dev |
MSYS2 内部用户目录 |
No such file or directory。建议将所有 Zephyr 相关代码放在 C:\zephyr 或 /c/zephyr 下。
4.2 方案二:Chocolatey 自动化安装
Chocolatey 是 Windows 上的包管理器,适合需要快速部署标准化开发环境的团队。通过一条命令即可安装 CMake、Python、Git 等工具。
4.2.1 安装 Chocolatey
- 以 管理员身份 打开 PowerShell(右键 → 以管理员身份运行)。
- 执行安装命令:
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'))
4.2.2 安装 Zephyr 所需工具
# 安装核心工具
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
choco install python
choco install git
choco install ninja
choco install gperf
# 安装 MinGW-w64(可选,若使用 MSYS2 则跳过)
choco install mingw
refreshenv 命令可刷新环境变量(需安装 choco install refreshenv)。
4.2.3 权限问题处理
Chocolatey 安装的软件默认位于 C:\ProgramData\chocolatey,普通用户可能无法写入。若遇到权限错误,请确保:
- 以管理员身份运行 PowerShell 或 CMD。
- 检查 Windows Defender 是否拦截了 Chocolatey 的安装脚本。
- 若使用公司电脑,联系 IT 部门开放
chocolatey.org和github.com的访问权限。
4.3 方案三:WSL2 完整 Linux 环境
WSL2 提供真正的 Linux 内核,支持 systemd、Docker 和 QEMU,是 Zephyr 驱动开发与调试的最佳 Windows 方案。它允许你在 Windows 上直接运行 Linux 二进制文件,无需虚拟机开销。
4.3.1 启用 WSL2 并安装 Ubuntu
- 以管理员身份打开 PowerShell,启用 WSL 功能:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 重启计算机。
- 设置 WSL2 为默认版本:
wsl --set-default-version 2
- 从 Microsoft Store 安装 Ubuntu 22.04 LTS(或使用命令行安装):
wsl --install -d Ubuntu-22.04
4.3.2 在 WSL2 中安装 Zephyr 依赖
进入 WSL2 终端后,执行以下命令安装 Zephyr SDK 与工具链:
# 更新包列表
sudo apt update && sudo apt upgrade -y
# 安装基础工具
sudo apt install -y cmake python3 python3-pip git ninja-build gperf
sudo apt install -y ccache dfu-util device-tree-compiler
# 安装 Zephyr SDK(以 0.16.5 为例)
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.5/zephyr-sdk-0.16.5_linux-x86_64.tar.xz
tar xf zephyr-sdk-0.16.5_linux-x86_64.tar.xz
cd zephyr-sdk-0.16.5
sudo ./setup.sh -t all -h -c
west build -t run 直接在 QEMU 中运行 Zephyr 镜像;支持 USB 设备透传(需安装 usbipd-win),可直接烧录开发板。
4.4 路径与权限问题综合处理
无论选择哪种方案,路径与权限问题都是 Windows 上 Zephyr 开发的常见障碍。下表总结了典型问题与解决方案:
| 问题 | 现象 | 解决方案 |
|---|---|---|
| 路径包含空格 | CMake 报错 No such file or directory |
将项目放在无空格的路径下,如 C:\zephyr |
| 路径过长(超过 260 字符) | 文件无法创建或访问 | 启用 Windows 长路径支持:gpedit.msc → 计算机配置 → 管理模板 → 系统 → 文件系统 → 启用 Win32 长路径 |
| 权限不足 | 无法写入 C:\Program Files 或 /usr/local |
使用用户目录下的路径,如 C:\Users\dev\zephyr;WSL2 中避免使用 sudo 编译 |
| 换行符冲突(CRLF vs LF) | 脚本执行报错 ^M 字符 |
Git 配置 git config --global core.autocrlf input;MSYS2 中默认使用 LF |
| 环境变量未生效 | 命令找不到 cmake 或 python |
重启终端;检查 PATH 是否包含 C:\msys64\ucrt64\bin 或 Chocolatey 的 bin 目录 |
4.5 验证环境:编译第一个 Zephyr 示例
无论选择哪种方案,最终都需要验证环境是否正常工作。以下步骤使用 west 工具编译 Zephyr 的 hello_world 示例:
- 安装 west 工具:
pip3 install west
- 初始化 Zephyr 工作区:
west init ~/zephyrproject
cd ~/zephyrproject
west update
- 导出 Zephyr CMake 包:
west zephyr-export
- 编译 hello_world 示例(以 qemu_cortex_m3 为例):
cd ~/zephyrproject
west build -b qemu_cortex_m3 samples/hello_world
- 若编译成功,终端输出类似:
-- west build: building application
[0/1] Linking C executable zephyr/zephyr.elf
[1/1] Built target hello_world
CMake Error: Could not find Zephyr,请确保已执行 west zephyr-export 并检查 ZEPHYR_BASE 环境变量是否指向 ~/zephyrproject/zephyr。
4.6 本章小结
本章介绍了三种 Windows 环境搭建方案:
- MSYS2:轻量级 POSIX 环境,适合快速编译与 CI 集成,路径转换规则需牢记。
- Chocolatey:自动化包管理,适合团队标准化部署,注意管理员权限。
- WSL2:完整 Linux 内核,适合驱动调试与模拟,推荐作为主力开发环境。
路径与权限问题可通过使用无空格路径、启用长路径支持、避免系统目录写入来解决。完成环境搭建后,请务必编译 hello_world 示例验证工具链与 west 工作流是否正常。