当前位置: 首页 > news >正文

WSL+共享文件夹搭建zephyr工作环境

之前使用window是编译,但是发现编译真的太慢了,所以还是尝试安装ubuntu来开发:

我这里有一个搭建好的,可以直接wsl安装,但是不支持完整的SDK工具,只支持esp32和arm

sdk版本是 0.17.4,只安装了(arm,esp32, esp32s2,esp32s3)的SDK,zephyr源码版本是4.2.99

链接:https://pan.quark.cn/s/d44234778cae
提取码:ZsCh

 

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

image

然后打开Ubuntu,粘贴 step_zephyr_wsl.sh 这个脚本文件到/home/(用户)

    注意这个脚本是针对我的系统搭建配置的,

    我在下载SDK的时候特别慢,所以选择的是先下好SDK压缩包,然后程序执行的,

    我的压缩包都是放在 /home/c里面的,解压后安装到/opt/toolchains/zephyr-sdk-0.17.4

    可以下载完整SDK,安装会简单一些。

查看代码 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 ]; thenecho "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; thensudo tee $WSL_CONF > /dev/null <<EOF
[boot]
systemd=true[user]
default=root
EOFecho "/etc/wsl.conf updated"elseecho "/etc/wsl.conf already contains the settings, skipping"fi
elseecho "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"; thensudo sed -i '/^#.*en_US.UTF-8/s/^#//' /etc/locale.gensudo locale-gen en_US.UTF-8sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
fi# ================================
# Python 虚拟环境 + 安装 west
# ================================
if [ ! -d "$VIRTUAL_ENV" ]; thensudo python3 -m venv ${VIRTUAL_ENV}
fi
if ! grep -q "PATH=.*${VIRTUAL_ENV}" ~/.bashrc; thenecho "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" ]; thenecho "Cloning Zephyr source..."sudo git clone https://github.com/zephyrproject-rtos/zephyr.git
elseecho "Zephyr already exists, updating..."
ficd zephyr
sudo git fetch --all
sudo git checkout main
pip install -r scripts/requirements-base.txt# ================================
# 初始化 west workspace
# ================================
cd /opt/toolchains
if [ ! -d ".west" ]; thenecho "Running west init..."west init -l zephyr
elseecho "west workspace already exists, skipping west init"
fiwest 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.shexport ZEPHYR_SDK_INSTALL_DIR=/opt/toolchains/zephyr-sdk-0.17.4
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
source ~/.bashrc# ================================
# 自动加载环境变量
# ================================
if [ -d "/opt/venv" ]; thengrep -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" >> ~/.bashrcecho "? Zephyr WSL environment installation complete!"
echo "   Please run: source ~/.bashrc"

执行脚本:

chmod +x step_zephyr_wsl.sh
./step_zephyr_wsl.sh

等待脚本执行万完成,需要等待很久,需要使用魔法....不然很容易断联

 

完成后就可以以尝试编译一下了:

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

 

3.创建共享文件夹

可以参照这个:WSL Windows和Ubuntu 共享文件夹设置(ubuntu的Windows子系统)_wsl 共享文件夹-CSDN博客

先查看ubuntu的名字

wsl --list --verbose显示如下NAME            STATE           VERSION
* Ubuntu-24.04    Stopped         2

然后 此电脑(右键)---->添加一个网络位置---->\\wsl$\Ubuntu-24.04\home\c

image

创建成功,就可以把应用程序放在这里面编译了,编译完成后,bin文件主机和wsl就共用这个文件夹了

编译完成后bin文件可以通过 esptool 烧录。

这里还有一个简单的烧录脚本,方便一键烧录:


需要手动配置参数:
set CHIP=esp32s3
set PORT=COM18
set BAUD=921600
set BIN=\\wsl$\ubuntu-24.04\home\c\lichuang_shizhanpai_zephyr\build\zephyr\zephyr.bin

查看代码 zephyr_flash.bat
@echo offchcp 65001 >nulREM === 默认配置 ===
set CHIP=esp32s3
set PORT=COM18
set BAUD=921600
set BIN=\\wsl$\ubuntu-24.04\home\c\lichuang_shizhanpai_zephyr\build\zephyr\zephyr.binREM === 如果传参,优先使用参数 ===
if not "%1"=="" set CHIP=%1
if not "%2"=="" set PORT=%2
if not "%3"=="" set BAUD=%3
if not "%4"=="" set BIN=%4echo ==========================================
echo  ESP32 烧录脚本
echo  芯片类型: %CHIP%
echo  串口端口: %PORT%
echo  波特率  : %BAUD%
echo  固件文件: %BIN%
echo ==========================================py -3.12 -m esptool --chip %CHIP% --port %PORT% --baud %BAUD% ^write_flash -z 0x0 %BIN%if errorlevel 1 (echo *** 烧录失败,请检查参数和连接!***
) else (echo 烧录成功!
)pause

 

http://www.sczhlp.com/news/125315/

相关文章:

  • 如果 Spring Cloud Feign 配置了 OkHttp3 非阻塞 IO(NIO),那么还需要reactor 模型来提高性能吗
  • 百度云网盘登录入口seo比较好的网站
  • 建立简单网站付费问答 WordPress
  • 数据结构-单链表基础2
  • G1垃圾回收过程
  • 微信网站建设协议品牌设计网站
  • 深圳外贸网站建设服务商wordpress 改网址
  • 做爰小视频网站网站设计与网站建设课程代码
  • 黑龙江省建设厅网站高端网站设计服务商
  • 当牛做吗网站源代码分享百度云泉州网站关键词优化
  • 网站抬头怎么做wordpress重复链接
  • 湖北建设厅官方网站沈阳快速建站搭建
  • 网站做什么内容汕头网站建设备案
  • wordpress 仿站 教程最美情侣高清视频播放
  • wordpress 安全南宁seo教程
  • 域名到期 网站打不开石家庄营销网站建设价格
  • Trellix自动化大规模修复开源漏洞,已修补超6万个项目
  • 计算机软件包含网站开发验证wordpress
  • 网站做的跟别人的一样可以吗服务平台是什么意思
  • 创建网站的工作流程八年级信息技术基于 seajs 的高性能网站开发和优化实践_王保平(淘宝)
  • 如何让新网站广告投放平台排名
  • 常州网站建设联系电话如何做一张网站平面效果图
  • 提供做网站费用软文营销的作用
  • 旅游便宜网站建设天津网站建设推荐安徽秒搜科技
  • 上海网站建设公司排名怎么制作做网站
  • 怎么在网站挂黑链接最新国际军事新闻
  • 网站建设备案查询延安网站建设报价
  • 爆款游戏背后:尚娱如何借助阿里云 Kafka Serverless 轻松驾驭“潮汐流量”?
  • 做视频网站需要哪些技术网站设计文稿
  • 幸运飞艇网站建设室内装修设计学习网