为什么逃离clion

因为我的电脑配置不行,跑不动clion这种庞然大物,而且clion太不可控了。
好在esp-idf的工具链非常独立,完全可以在ubuntu的终端完成编译烧写monitor。
默认大家已经对如何配置idf工具链(不会的看这里)了如指掌,我们只讲怎么用。

在WSL配置必要工具

默认大家对linux的文件系统和命令行有一定的了解。

安装基础依赖软件包

更新 Ubuntu 并安装 ESP-IDF 编译所需的prerequisites(工具链依赖)。打开 WSL 终端执行:

sudo apt-get update
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-serial

安装toolchain:esp-idf

推荐创建一个专用的目录,并从 GitHub 克隆仓库。建议使用 --recursive 参数以包含所有子模块:

mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git

执行安装脚本

在 WSL 终端中执行:

cd ~/esp/esp-idf
./install.sh esp32s3  # 如果你只想支持 S3 芯片,这样可以节省空间
# 或者 ./install.sh all 安装所有芯片支持

设置环境变量

. ./export.sh

搭桥连接wsl和电脑的usb

wsl一开始不会自动获取usb的文件。需要我们操作一下,搭个桥,让wsl从windows拿一点权限。这个桥就是usbipd。

在powershell安装usbipd

以管理员身份运行powershell。
输入命令:

winget install usbipd

!!!重启powershell才会生效。

用usbipd分配usb总线(用powershell)

第一步:列出所有 USB 设备。把esp32连接到电脑上(我用的是esp32s3的com接口),在powershell用下面这条命令查看esp32设备的busid(总线id)。正常来说第一次连接时,看到的是not shared。

usbipd list

第二步:绑定设备 (仅首次需要)。绑定该总线id

# 将 <BUSID> 替换为 list 命令中查看到的 ID(例如 2-1)
usbipd bind --busid <BUSID>

可以选择再list一下,看到该设备显示的是shared,如图。
在这里插入图片描述
第三步:连接设备到 WSL

usbipd attach --wsl --busid <BUSID>

PLUS:

由于每次连接esp32,bus id可能会发生变化。所以我们需要用VID:PID(就是中间那八位)追踪设备。每次连接后,在powershell用下面这个命令:

usbipd attach --wsl --busid ((usbipd list | Select-String "1a86:55d3").ToString().Split()[0]).Trim()

这样就不需要每次手动改busid了。

在WSL验证usb通信搭桥成功

进入ubuntu。
可以用命令lsusb查看当前wsl可以访问的usb。如果没有这个命令,去apt install一下usbutils。
在这里插入图片描述
图片最下面显示的文件就是usb的文件了。

具体办法

打包命令

  1. 用linux自带的文本编辑器(nano或vim,你用vscode也行)打开.bashrc 。
 nano ~/.bashrc
  1. flash-esp的代码粘贴到最底下,ctrl+O,enter,ctrl+X
  2. source ~/.bashrc 让linux系统更新命令
flash-esp() {
    # 1. activate the environment
    if [ -z "$IDF_PATH" ]; then
        . $HOME/esp32/esp-idf/export.sh
    fi

    # 2. set target
    # if there isn't sdkconfig,or you add parameters right after flash-esp (such as: flash-esp esp32s3)
    if [ ! -f "sdkconfig" ] || [ -n "$1" ]; then
        # default value: esp32s3
        local TARGET="${1:-esp32s3}"
        echo "Setting/------target-----/ $TARGET..."
        idf.py set-target "$TARGET"
    fi

    # 4. flash and monitor
    # 'idf.py flash monitor" can automatically call the build
    idf.py -p /dev/ttyACM0 flash monitor
}

细节自己看注释。

从ubuntu terminal进入工程

 cd ~/my_proj/tusb_hid
 code .

vscode自动就会打开。
这时候你可以试一下flash-esp命令了。

搞定vscode的代码跳转功能

不安装 ESP-IDF 官方插件,只安装微软 C/C++ 插件。

  1. 生成索引数据库
    在终端运行 idf.py build,生成 build/compile_commands.json。
  2. 配置 IntelliSense

创建 .vscode/c_cpp_properties.json:
套这个模板:

{
    "configurations": [
        {
            "name": "ESP-IDF",
            "compilerPath": "/home/tooth/.espressif/tools/xtensa-esp-elf/esp-15.2.0_20251204/xtensa-esp-elf/bin/xtensa-esp32-elf-gcc", 
            "compileCommands": "${workspaceFolder}/build/compile_commands.json",
            "intelliSenseMode": "linux-gcc-x64",
            "cStandard": "c11",
            "cppStandard": "c++17"
        }
    ],
    "version": 4
}
  • compilerPath: 指向 /home/用户名/.espressif/…/xtensa-esp32-elf-gcc
  • compileCommands: 指向生成的 .json 文件。
  • intelliSenseMode: 设置为 linux-gcc-x64(避开校验警告,靠编译器自动探测架构)。

我的电脑再也不会红温了。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐