zephyr学习:windows环境下搭建 zephyr工作空间
参考文章:1.Getting Started Guide — Zephyr Project Documentation
2.Zephyr RTOS -- 开发环境的搭建 (基于 Windows)_zephyrrtos中文教程-CSDN博客
一、windows下安装
1.安装 Chocolatey
在 Linux 下,大家喜欢用 apt-get 来安装应用程序,如今在 windows 下,大家可以使用 Chocolatey 来快速下载搭建一个开发环境
官方安装教程:Chocolatey Software | Installing Chocolatey
- 打开PowerShell 运行下面的指令,绕过安全策略来安装东西。
- 运行
Get-ExecutionPolicy。如果它返回Restricted,则运行Set-ExecutionPolicy AllSigned或Set-ExecutionPolicy Bypass -Scope Process - 然后运行
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'))(以实际官网的命令为准) - 等待几秒钟。让命令完成
- 使用
choco或choco -?查看安装是否完成 - 如下图就表示安装完成
-

2.使用choco安装zephyr所需的依赖项
- 打开命令行 禁用全局确认 以避免一直点确认
choco feature enable -n allowGlobalConfirmation
- 使用
choco安装所需zephyr所需的依赖项(包含ninja、pyton git gperf 等等,可以选择性安装) choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'choco install ninja gperf python311 git dtc-msys2 wget 7zip
3.安装phton 虚拟环境(防止不同版本冲突,也可以不安装)
pip install virtualenv安装完成后会显示successpip install virtualenvwrapper-win安装 virtualenvwrapper-win 方便管理workon查看安装是否成功 出现下面这样就成功了

- 新建一个用来存放环境变量的文件夹,这里我设置的是:
F:\Python-Envs - 配置系统环境变量:->新建系统变量 -> 变量名:
WORKON_HOME->指定路径:F:\Python-Envs

详细解释见 Zephyr RTOS -- 开发环境的搭建 (基于 Windows)_zephyrrtos中文教程-CSDN博客
单独配置的常用命令:
创建虚拟环境:virtualenv <envname>
进入虚拟环境:cd <envname>\Scripts + activate.bat
退出虚拟环境:deactivate.bat
配置之后的常用命令:
列出虚拟环境列表:workon
创建新的虚拟环境:mkvirtualenv <envname>
删除存在虚拟环境:rmvirtualenv <envname>
启动/切换虚拟环境:workon <envname>
离开/退出虚拟环境:deactivate
创建指定 Python 版本的虚拟环境:
mkvirtualenv <envname> -p <python_path>
其中的 <envname> 为虚拟环境的名称,<python_path> 为指定的 Python 版本的安装路径
4.创建一个python 虚拟环境 z1,并进入


前面显示z1就表示进入虚拟环境了
5.安装zephyr 依赖
- 安装west
pip3 install -U west- 创建一个文件夹用来放工程。例如 zephyr_pro,进入该文件夹,初始化west:
west init zephyrproject- 进入文件夹zephyrproject,更新west:
west update- 漫长的等待后,文件夹会下有这些内容 (这一步网络很重要,很容易失败,可能需要重复好几次)

- 导出Zephyr CMake 包 :
west zephyr-export- 安装额外的phton 依赖项 (注意是否安装成功?):
pip3 install -r zephyr\scripts\requirements.txt
6.设置工具链
工具设置我是用了官方的SDK Release Zephyr SDK 0.16.8 · zephyrproject-rtos/sdk-ng · GitHub

我使用的是完整包(可以单独下载)文件比较大,用的迅雷下载 链接如下https://objects.githubusercontent.com/github-production-release-asset-2e65be/92793986/e0ee6b63-d3bf-4922-91e4-a5602f0affe1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240714%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240714T060131Z&X-Amz-Expires=300&X-Amz-Signature=a5b1f7c06da8c5f2782ad4730d22de2bbda7c772df296135c054934875363ea8&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=92793986&response-content-disposition=attachment%3B%20filename%3Dzephyr-sdk-0.16.8_windows-x86_64.7z&response-content-type=application%2Foctet-stream
- 下载完成后解压任意文件夹,双击setup.cmd打开

- 完成host tool 和SDK Cmake package 安装
7.编译程序烧录
- 使用vscode 打开工程

- 终端使用命令行打开
- 打开虚拟环境 :
workon z1- 进入到工程文件:
cd E:\zephyr_pro\zephyrproject\zephyr- 我这里编译了一个hello_world程序,板子选的是gd32e103v_eval :
west build -p always -b gd32e103v_eval samples/hello_world- 编译完成后如下:

- 烧录文件在这个目录Build下
烧录:
west flash
到此,环境安装就完成了😆😆😆
一、WSL 下安装
之前使用window是编译,但是发现编译真的太慢了,所以还是尝试安装ubuntu来开发:
1.安装wsl
wsl --install -d Ubuntu-24.04
这里一般会安装在c盘,可以导出安装在其他盘,我这里装到D:\WSL
// 导出
wsl --export Ubuntu-24.04 D:\WSL\Ubuntu-24.04.tar
// 删除旧的
wsl --unregister Ubuntu-24.04
// 导入新的
wsl --import Ubuntu-24.04 D:\WSL\Ubuntu-24.04 D:\WSL\Ubuntu-24.04.tar --version 2
2.vscode 安装远程管理的插件:Remote Explorer

3.WSL中粘贴 step_zephyr_wsl.sh 这个脚本文件到 /home/user
step_zephyr_wsl.sh
#!/bin/bash
set -e
# =============================
# 配置参数
# =============================
USER_HOME=/home/c
VIRTUAL_ENV=/opt/venv
# ================================
# 创建必要目录
# ================================
sudo mkdir -p /opt/toolchains
sudo mkdir -p /opt/toolchains/zephyr-sdk-0.17.4
# ================================
# 如果当前用户不是 root,则更新 /etc/wsl.conf
# ================================
if [ "$EUID" -ne 0 ]; then
echo "Current user is not root, using sudo to update /etc/wsl.conf..."
WSL_CONF="/etc/wsl.conf"
if ! grep -q "\[user\]" $WSL_CONF 2>/dev/null || ! grep -q "default=root" $WSL_CONF 2>/dev/null; then
sudo tee $WSL_CONF > /dev/null <<EOF
[boot]
systemd=true
[user]
default=root
EOF
echo "/etc/wsl.conf updated"
else
echo "/etc/wsl.conf already contains the settings, skipping"
fi
else
echo "Current user is root, skipping /etc/wsl.conf update"
fi
# ================================
# 安装基础依赖
# ================================
sudo apt-get update
sudo apt-get install --no-install-recommends -y \
dos2unix ca-certificates file locales git build-essential cmake ninja-build gperf \
device-tree-compiler wget curl python3 python3-pip python3-venv xz-utils \
vim nano mc
# ================================
# 本地化设置
# ================================
if ! locale -a | grep -q "en_US.utf8"; then
sudo sed -i '/^#.*en_US.UTF-8/s/^#//' /etc/locale.gen
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
fi
# ================================
# Python 虚拟环境 + 安装 west
# ================================
if [ ! -d "$VIRTUAL_ENV" ]; then
sudo python3 -m venv ${VIRTUAL_ENV}
fi
if ! grep -q "PATH=.*${VIRTUAL_ENV}" ~/.bashrc; then
echo "export PATH=\"${VIRTUAL_ENV}/bin:\$PATH\"" >> ~/.bashrc
fi
source ${VIRTUAL_ENV}/bin/activate
pip install --no-cache-dir wheel west
# ================================
# 下载和配置 Zephyr 源码
# ================================
cd /opt/toolchains
if [ ! -d "zephyr/.git" ]; then
echo "Cloning Zephyr source..."
sudo git clone https://github.com/zephyrproject-rtos/zephyr.git
else
echo "Zephyr already exists, updating..."
fi
cd zephyr
sudo git fetch --all
sudo git checkout main
pip install -r scripts/requirements-base.txt
# ================================
# 初始化 west workspace
# ================================
cd /opt/toolchains
if [ ! -d ".west" ]; then
echo "Running west init..."
west init -l zephyr
else
echo "west workspace already exists, skipping west init"
fi
west update --narrow -o=--depth=1
west packages pip --install
# ================================
# 安装 Zephyr SDK 手动
# ================================
# 安装最小包和指定包,和下面完整可以选一个
# cd /home/c
# tar xf zephyr-sdk-0.17.4_linux-x86_64_minimal.tar.xz -C /opt/toolchains/zephyr-sdk-0.17.4 --strip-components=1
# # ARM 工具链
# tar xf toolchain_linux-x86_64_arm-zephyr-eabi.tar.xz -C /opt/toolchains/zephyr-sdk-0.17.4
# # ESP32 工具链
# tar xf toolchain_linux-x86_64_xtensa-espressif_esp32_zephyr-elf.tar.xz -C /opt/toolchains/zephyr-sdk-0.17.4
# tar xf toolchain_linux-x86_64_xtensa-espressif_esp32s2_zephyr-elf.tar.xz -C /opt/toolchains/zephyr-sdk-0.17.4
# tar xf toolchain_linux-x86_64_xtensa-espressif_esp32s3_zephyr-elf.tar.xz -C /opt/toolchains/zephyr-sdk-0.17.4
# cd /opt/toolchains/zephyr-sdk-0.17.4
# sudo ./setup.sh -t arm-zephyr-eabi
# sudo ./setup.sh -t xtensa-espressif_esp32_zephyr-elf
# sudo ./setup.sh -t xtensa-espressif_esp32s2_zephyr-elf
# sudo ./setup.sh -t xtensa-espressif_esp32s3_zephyr-elf
# sudo ./setup.sh -c
#安装完整包 ,这个和上面自定义可以选一个
cd /home/c
tar xf zephyr-sdk-0.17.4_linux-x86_64.tar.xz -C /opt/toolchains/zephyr-sdk-0.17.4 --strip-components=1
cd /opt/toolchains/zephyr-sdk-0.17.4
sudo ./setup.sh
export ZEPHYR_SDK_INSTALL_DIR=/opt/toolchains/zephyr-sdk-0.17.4
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
source ~/.bashrc
# ================================
# 自动加载环境变量
# ================================
if [ -d "/opt/venv" ]; then
grep -qxF "source /opt/venv/bin/activate" ~/.bashrc || \
echo "source /opt/venv/bin/activate" >> ~/.bashrc
fi
grep -qxF "source /opt/toolchains/zephyr/zephyr-env.sh" ~/.bashrc || \
echo "source /opt/toolchains/zephyr/zephyr-env.sh" >> ~/.bashrc
echo "? Zephyr WSL environment installation complete!"
echo " Please run: source ~/.bashrc"
4.执行脚本
chmod +x step_zephyr_wsl.sh
./step_zephyr_wsl.sh
5.尝试编译
cd /opt/toolchains/zephyr
west build -p always -b gd32e103v_eval samples/hello_world
west build -p always -b esp32s3_devkitc/esp32s3/procpu samples/hello_world
6.烧录配置


浙公网安备 33010602011771号