ESP-IDF 及 VSCode 插件在WSL下的安装及配置

7/22/2022 C++语言ESP8266ESP32

# 前言

众所周知,ESP-IDF 在 Windows 下的安装十分困难,编译速度巨慢。通常情况下,编译一个 HelloWorld 程序也需要5分钟及以上。 实测发现,ESP-IDF 在 Linux (WSL) 下的编译速度极快,一个同样的 HelloWorld 程序仅需 10 秒即可完成编译。

本文主要介绍在 WSL 上安装 ESP-IDF 及其 VSCode 插件的步骤。

# 设置 Windows 环境

# 安装必需软件

Windows 上所需软件有:

  • Visual Studio Code
  • WSL 2
  • WSL Ubuntu 发行版 (Microsoft Store)
  • Python 3.9

注意

  • WSL 仅在 Windows 10+上可用,低版本 Windows 用户请使用虚拟机!
  • WSL Ubuntu 版本应为 20.04+,本文中使用 22.04 版。

# 设置 WSL

打开 WSL 窗口,执行下列指令以安装必须软件包:

sudo apt update
sudo apt-get install git wget flex bison gperf python3-pip python3-venv python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util
1
2

# 配置 VSCode

  1. 请手动从 VSCode - 扩展 界面安装 Remote - WSL(扩展ID为 ms-vscode-remote.remote-wsl);

  2. 点击 VSCode 左下角的绿色图标,出现类似图中的页面,选择New WSL Window,此时应打开一个新的 VSCode 窗口,左下角绿色图标变为WSL:Ubuntu-22.04; WSL-1

  3. 在新打开的窗口中,找到 扩展 页面,搜索 Espressif IDF,点击如图中所示安装在WSL:Ubuntu-22.04中按钮,等待安装完成; WSL-2

  4. 安装完成后,按图示操作,改好选择下载源,更改安装路径,点 [Install],然后继续等待; WSL-3

# 给 ESP-IDF 打补丁

实测发现,进行到这里,已经可以超快速编译,但是仍不能烧录程序。按照官方文档,需要安装 usbipd 映射串口,然后会遇到权限问题。

这里我们利用 IDF 的一个神奇特性(Bug),即烧录的时候调用的是本地的 PowerShell.exe,顺理成章地,调用到的 Python 也是本地的。 因此,我们只需在本地安装相应依赖,就可完美解决问题。下列步骤:

  1. 从 WSL Ubuntu 中复制相应文件或者下载 (opens new window)
  • ${IDF_PATH}/requirements.txt
  • ${IDF_PATH}/tools/kconfig_new/esp-windows-curses

提示

请将复制出来的 requirements.txtesp-windows-curses 文件夹置于同一个文件夹下。

修改 requirements.txt ,将下列行(通常在末尾)

file://${IDF_PATH}/tools/kconfig_new/esp-windows-curses; sys_platform == 'win32'
1

改为

./esp-windows-curses; sys_platform == 'win32'
1

然后打开 Windows 终端(你喜欢就好),导航至保存的文件目录下,执行

pip install -r requirements.txt
1

静待片刻,即可安装完成。(若不成功请尝试换源)

# 测试 ESP-IDF 功能

在连接到 WSL 的 VSCode 窗口内打开一个文件夹, 按下 Ctrl + E,紧接着按下C,选择Use current directory,即可用模板创建一个 IDF 工程。 接着,连接开发板,在下边栏 [/dev/ttyUSB1] 处选择串口;再进行编译、烧录;(点击🔥图标一步到位)

片刻过后,你将可以从串口监视器看到 Log!

# 结束啦

现在,您可以享受 10s 飞速编译和烧录啦!