Loading

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    安装完成后会显示success
  • pip 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

image

 

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.烧录配置

参考链接:

使用WSL2+usbipd,解决ST-Link JLink无法被WSL直接识别问题_wsl usbipd-CSDN博客

posted @ 2024-07-14 14:34  cc_record  阅读(1669)  评论(0)    收藏  举报