Lazy loaded image
🤖 ROS 理论与实践
基于WSL2搭建ESP32开发环境(Windows)
Words 1032Read Time 3 min
2025-6-17
2025-7-16
type
date
slug
category
icon
password

参考资料

在 Windows 系统中使用 WSL - - — ESP-IDF Extension for VSCode latest 文档

一、WSL 环境搭建

在 Windows 系统中安装 Ubuntu (WSL)

检查 Windows 上的 Ubuntu (WSL)

在 WSL 中添加所需的 Linux 软件包

进入WSL 环境,安装在 Linux 系统中使用 ESP-IDF 所需的工具链

在 WSL 中使用 usbipd-win

必须安装 usbipd-win,才能访问来自本地 Windows 的 USB 设备、串口设备以及 JTAG 设备,否则无法在 IDF Docker 镜像中进行下载、监控和调试。安装方式与其他 Windows 应用程序相同,这里不再赘述。
安装好上述所有必要工具后,请继续进行下列配置。
在 PowerShell 命令提示符中安装 usbipd。
配置 USB 串口设备,通过 usbipd 连接到 WSL
以管理员权限打开 PowerShell 命令提示符,输入下列指令,获取 USB 串口设备列表。
要从 Windows 本地访问 WSL 上的指定设备,必须使用 usbipd 绑定设备。
⚠️
除非重启计算机,否则此命令只需使用一次。1-1 是想要绑定的设备的 <BUSID>
绑定后,请在 PowerShell 命令提示符中使用下列指令将指定设备附加到 WSL 中。
最后,通过在 WSL 环境中输入下列指令,验证连接是否成功。
felix@Home-WorkStation:~$ dmesg | tail [43766.535973] usb 1-1: SetAddress Request (2) to port 0 [43766.600256] usb 1-1: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00 [43766.600260] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [43766.600261] usb 1-1: Product: CP2102 USB to UART Bridge Controller [43766.600262] usb 1-1: Manufacturer: Silicon Labs [43766.600263] usb 1-1: SerialNumber: 0001 [43766.626814] usbcore: registered new interface driver cp210x [43766.626823] usbserial: USB Serial support registered for cp210x [43766.626831] cp210x 1-1:1.0: cp210x converter detected [43766.628590] usb 1-1: cp210x converter now attached to ttyUSB0
如上所示,1-1 设备已附加到 ttyUSB0,WSL 现在可以访问 1-1 USB 设备。

二、Visual Studio Code 插件安装

安装下图中的 Remote - WSLRemote Development 和 ESP-IDF 扩展。
../_images/remote_wsl.png
../_images/remote_development.png
../_images/esp-idf.png

三、构建、烧录和调试

在 WSL 中打开项目

单击 Visual Studio Code 左下角的 >< 按钮。选择 在 WSL 中打开文件夹,配置 WSL 并打开 Blink 例程项目。
⚠️
上面安装的ESP-IDF 扩展安装在宿主机(Windows)环境下,在 WSL 中按照 安装 ESP-IDF 和相关工具 中的指导来配置 ESP-IDF 扩展。
在 WSL 中运行设置程序时,默认使用 用户设置 (User Settings),这可能会覆盖 Windows 主机的配置,因此建议将设置保存到 工作区 (workspace) 或 工作区文件夹 (workspace folder),避免影响 Windows 系统的全局配置。
此时,可以开始使用 Blink 示例项目进行构建、烧录、监视、调试等操作。

构建项目

以 ESP32-C3 为例,若想将其作为目标设备,只需如图所示将 esp32 更改为 esp32c3
notion image
接下来,开始构建示例项目:
notion image

烧录固件

构建完成后,可以通过以下三种方式烧录固件。

外部 USB 转串口设备

按照前文 usbipd 指令描述部份的教程进行操作。此处以 Silicon Labs CP210x USB to UART Bridge 为例,此设备已附加到 WSL 中。
../_images/wsl_demsg_tail_usb_serial.png
如图所示,该设备已附加到 ttyUSB0,因此 idf.port 也需要进行相应更改。
../_images/ttyUSB0.png
但此时容器尚未识别到更改的配置。
../_images/unkown_ttyUSB0.png
选择 在本地重新打开文件夹,重新打开容器,新的配置也将重新加载。
../_images/container_reopen.gif
最后,点击 Flash 按钮下载固件。
../_images/container_flash_uart.gif

USB 转 JTAG 设备

与 外部 USB 转串口设备 和 内部 USB 转串口设备 相同,但使用 USB 转 JTAG 设备时需要配置以下额外参数:
../_images/extra_parameters.png
接口与 USB 转 JTAG 设备 相同,即 ttyACMx
../_images/container_flash_jtag.gif

调试步骤

运行 OpenOCD 并开始调试会话之前,复确保将 OpenOCD udev 规则文件 复制到 /etc/udev/rules.d 目录中。
配置好 USB 转 JTAG 设备 后,按 F5 开始调试:
../_images/container_debug.gif
 

 
上一篇
ROS2 常用命令行
下一篇
基于Docker搭建ESP32开发环境(Windows)

Comments
Loading...