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

ESP-IDF V5.4 开发环境搭建教程(基于 Windows11 WSL2 )

前言

最近因公司业务需要,接触了 ESP32 芯片,中途踩了不少坑,也慢慢熟悉了 ESP32 的开发流程。我使用了乐鑫官方的 ESP-IDF 作为编译工具,其他版本有 arduino-esp32、PlatformIO,但它们底层也是基于 ESP-IDF,只不过进行了一层 API 封装。为了优雅的使用 ESP-IDF,我选择 WSL2 作为我的开发环境,这样做的好处是可以与宿主机隔离,避免污染宿主机环境。

本文将介绍如何基于 WSL2 Ubuntu22.04 系统,搭建一个 ESP-IDF 开发环境,实现成功编译项目并烧录到 ESP32-S3 中。话不多说,马上开始。

流程

具体的流程如下:

image

使用 apt 安装相关软件包

在终端运行如下命令:

sudo apt-get updatesudo apt-get upgrade -ysudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

注意:CMake 版本需要 3.16 以上,建议使用 20.04 以上的 Ubuntu 系统,这样会自动安装新版本的软件源。

获取 ESP-IDF

接下来获取 ESP-IDF 源码,在终端运行如下命令:

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

ESP-IDF 将下载至 ~/esp/esp-idf,建议不要修改下载路径,使用上述路径。

设置工具

由于我使用的是 ESP32-S3,需要为该芯片安装需要用到的工具,在终端运行如下命令:

cd ~/esp/esp-idf
./install.sh esp32s3

如果想安装所有 ESP 的芯片工具,可以运行如下命令:

cd ~/esp/esp-idf
./install.sh all

等待片刻即可安装完成。如果下载安装速度较慢,可以使用国内服务器:

cd ~/esp/esp-idf
export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
./install.sh esp32s3

安装成功之后,导出环境变量,运行如下命令:

. ./export.sh

设置环境变量

接下来进行环境变量设置,让我们可以在终端使用 ESP-IDF 工具进行各种操作,有两种设置环境变量的方式:

  1. 直接导出:这种方式的缺点是每次重开终端都要运行一大段命令,不太优雅。

终端运行如下命令:

. $HOME/esp/esp-idf/export.sh
  1. 【推荐】放到 shell 配置中作为别名:这种方式的优点是每次重开终端只需运行别名即可。

复制并粘贴以下命令到 shell 配置文件中(.profile.bashrc.zprofile 等)

alias get_idf='. $HOME/esp/esp-idf/export.sh'

通过重启终端窗口或运行 source [path to profile],如 source ~/.bashrc 来刷新配置文件。

现在可以在任何终端窗口中运行 get_idf 来设置或刷新 ESP-IDF 环境。

编译项目

设置完 ESP-IDF 环境变量之后,就可以愉快的使用了。我们来运行一个 Hello-World 程序看看效果,官方的 ESP-IDF 工具提供了各种示例源码,可以直接使用。

运行如下命令:

cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
cd hello_world
# 将工程配置为 esp32s3
idf.py set-target esp32s3

配置成功之后,运行如下命令进行项目编译:

idf.py build

运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成引导加载程序、分区表和应用程序二进制文件。

$ idf.py build
Running cmake in directory /path/to/hello_world/build
Executing "cmake -G Ninja --warn-uninitialized /path/to/hello_world"...
Warn about uninitialized values.
-- Found Git: /usr/bin/git (found version "2.17.0")
-- Building empty aws_iot component due to configuration
-- Component names: ...
-- Component paths: ...... (more lines of build system output)[527/527] Generating hello_world.bin
esptool.py v2.3.1Project build complete. To flash, run this command:
../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x10000 build/hello_world.bin  build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin
or run 'idf.py -p PORT flash'

烧录固件

在 WSL2 进行固件烧录会比较麻烦,需要用到 usbipd-win 软件,它的作用是将 Windows 的串口转到 WSL2 内部。

  1. 前往 usbipd-win 项目的最新发布页面。 https://github.com/dorssel/usbipd-win/releases
  2. 选择.msi 文件,这将下载安装程序。(您可能会收到一个警告,要求您确认信任此下载)。
  3. 运行下载的 usbipd-win_x.msi 安装程序文件。

安装成功之后,将 ESP32-S3 接入主机,打开 设备管理器,查看端口,可以看到如下:

image

上图可以看到,我的串口为 COM13。接着,以管理员模式打开 PowerShell,运行如下命令:

usbipd list

会打印如下:

Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-5    303a:1001  USB 串行设备 (COM13), USB JTAG/serial debug unit              Not shared
1-9    05ac:024f  USB 输入设备                                                  Not shared

接下来,运行如下命令将 COM13 设置为 Shared 状态:

usbipd bind --busid 1-5

1-5 表示总线ID,请以你的总线ID为准。此时,重新运行 usbipd list 命令,会打印如下输出:

Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-5    303a:1001  USB 串行设备 (COM13), USB JTAG/serial debug unit              Not shared
1-9    05ac:024f  USB 输入设备                                                  Shared

之后,将该 COM 口转到 WSL2 内部,运行如下命令:

usbipd attach --wsl --busid 1-5

重新运行 usbipd list 命令,会打印如下输出:

Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-5    303a:1001  USB 串行设备 (COM13), USB JTAG/serial debug unit              Attached
1-9    05ac:024f  USB 输入设备                                                  Not shared

表示转到 WSL2 内部成功,此时我们无法在宿主机 Windows 上操作该串口,只能在 WSL2 内部,如果要在宿主机操作该串口,可以拔掉串口线重新插或者运行 usbipd detach --busid 1-5 命令。

打开 WSL2 内部,可以看到在 /dev 目录下会多出一个字符设备:ttyACM0,此时表现上述操作成功,接下来就可以愉快的进行烧录了,在 hello_world 项目目录下,运行如下命令:

idf.py -p /dev/ttyACM0 flash monitor

注:如果不指定 -p 参数,将会默认使用 /dev/ttyACM0 。

monitor 参数用于监控串口日志。

等待片刻烧录成功后,就可以在终端看到相关日志打印了。

 

 

转载声明:

本文转载自 csdn 作者  Leon_Chenl

作者博客:https://blog.csdn.net/Leon_Chenl

原文链接:https://blog.csdn.net/Leon_Chenl/article/details/147443774

http://www.jsqmd.com/news/41161/

相关文章:

  • PlotNeutralNet使用教程
  • idf.py如何退出串口监视器模式?
  • 2025雅思培训课程排行榜:高提分课程定制机构深度解析
  • 11.10-11.15 总结
  • Tomcat的常见问题
  • 2025 最新推荐!护栏厂家实力榜单,国际协会认证优质品牌,市政 / 铁路 / 桥梁专用护栏制造厂精选
  • 2025 最新净水器经销商推荐排行榜,精选优质服务商 涵盖直饮 / 反渗透等多类型设备直饮水净水器/过滤净水器/反渗透净水器公司推荐
  • 2025年芹黄素实力厂家权威推荐榜单:芹菜苷元/芹菜素/芹菜素95%源头厂家精选
  • 序列密码算法RC4的实现与攻击
  • 2025年RFID服装标签批发厂家权威推荐榜单:RFID服装吊牌标签/服装门店盘点标签/服装零售电子标签源头厂家精选
  • 2025 年木包装箱厂家最新推荐榜:木托盘、出口木箱、钢边木箱、免熏蒸包装箱优质厂家权威测评
  • arch配置swap分区并做休眠设置
  • 2025 年结晶装备厂家最新推荐榜:连续结晶器、煤化工蒸发设备、盐硝分离器等工业核心装备权威品牌指南多效蒸发/硫酸钠蒸发结晶器/煤化工盐硝分离器公司推荐
  • 2025年遥控平板车厂家权威推荐榜单:平板运输车/顶升电动平车/电动地平车源头厂家精选
  • 2025 最新新能源装备厂家企业品牌权威推荐榜,含芒硝结晶器/碳化热解设备/碳酸锂碳化提纯设备优质厂商
  • 【AI白皮书】AI原生应用及其架构
  • 2025 年最新脚轮厂家推荐!万向脚轮、工业脚轮、医用脚轮等全品类优质厂家品牌权威排行榜,助力采购决策设备脚轮/重型脚轮/医疗脚轮公司推荐
  • 2025 最新干燥装备厂家权威推荐排行榜,盘式/桨叶/流化床/闪蒸/真空喷雾干燥器优质公司精选
  • 接口自动化,用例独立还是用例复用
  • 2025 最新净水器厂家推荐排行榜:母婴级安全、无阻垢弱碱、杜邦 / 陶氏 RO 膜,高性价比国货品牌精选斯里兰卡椰壳炭/制冰/DIY/厨下净水器公司推荐
  • 【Python3.13】官网学习之控制流
  • 2025 年 11 月空气电加热器,法兰电加热器,土壤修复电加热器厂家最新推荐,聚焦资质、案例、售后的七家企业深度解读
  • 2025年11月三丰粗糙度仪,三丰圆度仪,三丰物镜厂家最新推荐,精准检测与稳定性能深度解析
  • C# 中,依赖注入(DI)的实现方式 - 教程
  • mns 1115
  • Python遍历pandas数据方法总结
  • 2025 年 11 月温州电商财税律师,温州执行律师,温州法律顾问律师最新推荐,聚焦资质、案例、售后的七家机构深度解读
  • P2966 [USACO09DEC] Cow Toll Paths G 题解
  • 【System Beats!】第八章 异常控制流
  • 2025 年 11 月温州法律顾问律师,温州婚姻律师,温州刑事律师最新推荐,聚焦资质、案例、售后的五家机构深度解读