在Clion使用WSL的ESP-IDF开发

张开发
2026/4/10 5:50:48 15 分钟阅读

分享文章

在Clion使用WSL的ESP-IDF开发
文章目录安装Clion和WSL2在WSL配置必要工具安装基础依赖软件包安装toolchainesp-idf执行安装脚本设置环境变量在Clion配置WSL在Clion配置cmake搭桥连接wsl和电脑的usb在powershell安装usbipd用usbipd分配usb总线用powershellPLUS在WSL验证usb通信搭桥成功使用esp-idf烧写hello worldPLUS一句命令编译烧录如果报错声明安装Clion和WSL2默认大家都会了不会的请上jetbrain的官网和微软官网自行查看。我的linux distribution是ubuntu。在WSL配置必要工具默认大家对linux的文件系统和命令行有一定的了解。安装基础依赖软件包更新 Ubuntu 并安装 ESP-IDF 编译所需的prerequisites工具链依赖。打开 WSL 终端执行sudoapt-getupdatesudoapt-getinstallgccgitwgetmakelibncurses-dev flex bison gperf python python-serial安装toolchainesp-idf推荐创建一个专用的目录并从 GitHub 克隆仓库。建议使用 --recursive 参数以包含所有子模块mkdir-p~/espcd~/espgitclone--recursivehttps://github.com/espressif/esp-idf.git执行安装脚本在 WSL 终端中执行cd~/esp/esp-idf ./install.sh esp32s3# 如果你只想支持 S3 芯片这样可以节省空间# 或者 ./install.sh all 安装所有芯片支持设置环境变量../export.sh在Clion配置WSL因为我们用的是wsl的工具链所以必须在clion配置wsl。用clion打开一个example如helloworld。找不到的去问ai。关掉clion那些乱七八糟的弹窗先不要管cmake各种报错。进入 File - Settings - Build, Execution, Deployment - Toolchains。点击 mingw上面的选择 WSL。你会发现多了一只小企鹅把小企鹅顶到最上面设为default。要是有缺东西的话自己去ai一下怎么装有装一般都能被clion找到。添加环境点击蓝色的add environment选择environment file这个环境文件和刚才设置环境用的文件必须同一个。注意检查一下所有东西都是wsl里面的。在Clion配置cmake按图操作一下toolchain要选wsl的。generator是ninja。cmake option我这个版本刚好能用但是不要照搬target选你自己的芯片型号。-G是指定生成器-DCMAKE_MAKE_PROGRAMninja叫cmake去环境变量里面找。搭桥连接wsl和电脑的usbwsl一开始不会自动获取usb的文件。需要我们操作一下搭个桥让wsl从windows拿一点权限。这个桥就是usbipd。在powershell安装usbipd以管理员身份运行powershell。输入命令wingetinstallusbipd重启powershell才会生效。用usbipd分配usb总线用powershell第一步列出所有 USB 设备。把esp32连接到电脑上我用的是esp32s3的com接口在powershell用下面这条命令查看esp32设备的busid总线id。正常来说第一次连接时看到的是not shared。usbipd list第二步绑定设备 (仅首次需要)。绑定该总线id# 将 BUSID 替换为 list 命令中查看到的 ID例如 2-1usbipdbind--busidBUSID可以选择再list一下看到该设备显示的是shared如图。第三步连接设备到 WSLusbipd attach--wsl--busidBUSIDPLUS由于每次连接esp32bus id可能会发生变化。所以我们需要用VID:PID就是中间那八位追踪设备。每次连接后在powershell用下面这个命令usbipd attach--wsl--busid((usbipd list|Select-String1a86:55d3).ToString().Split()[0]).Trim()这样就不需要每次手动改busid了。在WSL验证usb通信搭桥成功进入ubuntu。可以用命令lsusb查看当前wsl可以访问的usb。如果没有这个命令去apt install一下usbutils。图片最下面显示的文件就是usb的文件了。使用esp-idf烧写hello worldesp-idf是高度自动化的两句命令就可以解决。在Clion的terminal运行这两句命令。.$HOME/esp32/esp-idf/export.sh idf.py-p/dev/ttyACM0 flash monitor第一句是配置环境变量。执行后它会将 ESP-IDF 必要的路径添加到你的 PATH 变量中并设置一些环境变量如 IDF_PATH。注意每次打开一个新的终端窗口打算编译 ESP32 程序时都必须先运行这一句否则系统会提示找不到 idf.py 命令。第二句是将程序写入芯片并开启串口监视器都是英语相毕都看得懂。PLUS一句命令编译烧录使用linux的配置文件.bashrc在Ubuntu终端输入nano ~/.bashrc把这堆代码复制到文件最底部然后ctrlOenterctrlX。flash-esp(){# 自动加载环境变量 (如果还没加载)if[-z$IDF_PATH];then.$HOME/esp32/esp-idf/export.shfi# 执行烧录和监控# 注意如果设备名不是 ttyACM0请根据实际情况修改如 ttyUSB0idf.py-p/dev/ttyACM0 flash monitor}关键一步修改完并保存退出后配置不会立即生效。你需要运行以下命令让系统重新加载它source ~/.bashrc最后你可以在clion或者wsl打开工程文件夹输入flash-esp。成功了的话监视器是这样的。如果想要停止monitor按下ctrl]。如果报错如果红字报错说芯片类型不符合一般是前面配置cmake的时候没弄好target。可以回到 cmake config那一步。或者直接在clion的terminalidf.py set-target esp32s3声明笔记的作者也是人要是哪里漏了麻烦提醒一下别被我坑到了。更高级的操作我也还在学请多多指教。参考文献https://www.instructables.com/ESP32-Development-on-Windows-Subsystem-for-Linux/https://cavemancave.github.io/posts/2022-03-26-esp32_development_on_wsl2/一些意见来自AI。

更多文章