ESP32开发:ubuntu22.04 下esp-idf开发环境搭建
ubuntu22.04 下 esp-idf 开发环境搭建
- 1.安装编译 ESP-IDF 需要以下软件包
- 2.获取 ESP-IDF
- 3.设置工具
- 下载工具备选方案
- 4.设置环境变量
- 5.编译工程并烧录
- 配置工程
- 编译工程
- 烧录固件到设备
- 6.其他指令
- 监视输出
- 擦除 flash
- 清除编译
1.安装编译 ESP-IDF 需要以下软件包
编译 ESP-IDF 需要以下软件包。请根据使用的 Linux 发行版本,选择合适的安装命令。
-
Ubuntu 和 Debian:
sudo 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
2.获取 ESP-IDF
在home目录下新建 esp
文件夹.
mkdir ~/esp
为了安装多个版本:
在esp
目录下载指定版本的esp-idf
sdk.
cd ~/esp
git clone -b v5.4.2 --recursive https://github.com/espressif/esp-idf.git
等待下载解压结束,把esp-idf
重命名为 esp-idf-v5.4.2
,进入 esp-idf-v5.4.2
。
3.设置工具
进入 esp-idf-v5.4.2
,运行安装脚本:.install.sh
cd esp-idf-v5.4.2
如果只需要为esp32-s3、esp32设置所需工具,可以指定:
. ./install.sh esp32s3,esp32
如果需要一次性为所有支持的目标芯片安装工具,可以运行如下命令:
. ./install.sh all
下载工具备选方案
ESP-IDF 工具安装器会下载 Github 发布版本中附带的一些工具,如果访问 Github 较为缓慢,可以设置一个环境变量,从而优先选择 Espressif 的下载服务器进行 Github 资源下载。
⚠️ 该设置只影响从 Github 发布版本中下载的单个工具,它并不会改变访问任何 Git 仓库的 URL。
要在安装工具时优先选择 Espressif 下载服务器,请在运行 install.sh
时使用以下命令:
cd ~/esp/esp-idf-v5.4.2
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh
⭐️推荐国内用户使用国内的下载服务器,以加快下载速度。
cd ~/esp/esp-idf-v5.4.2
export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
./install.sh
4.设置环境变量
工具安装完成之后,尚未添加至 PATH 环境变量,无法通过终端中使用这些工具。因此,必须设置一些环境变量。
需要运行 ESP-IDF 的终端窗口运行以下命令:
. $HOME/esp/esp-idf-v5.4.2/export.sh
如果需要经常运行 ESP-IDF,可以为执行 export.sh
创建一个别名,具体步骤如下:
-
复制并粘贴以下命令到 shell 配置文件中(
.profile
、.bashrc
、.zprofile
等)alias get_idf='. $HOME/esp/esp-idf/export.sh'
-
通过重启终端窗口或运行
source [path to profile]
,如source ~/.bashrc
来刷新配置文件。
现在可以在任何终端窗口中运行 get_idf
来设置或刷新 ESP-IDF 环境。
不建议直接将 export.sh
添加到 shell 的配置文件。这样做会导致在每个终端会话中都激活 IDF 虚拟环境(包括无需使用 ESP-IDF 的会话)。这违背了使用虚拟环境的目的,还可能影响其他软件的使用。
按照上述方法,当安装了多个版本的esp-idf 之后,也可以通过使用添加别名来区分不同的版本。
示例如下:
在终端中,输入get_idf_v53
即可使用V5.3.3版本的esp-idf:
5.编译工程并烧录
配置工程
设置目标芯片,然后配置项目,指令如下:
idf.py set-target esp32s3
idf.py menuconfig
编译工程
打开一个测试工程,编译工程需要输入指令:
idf.py build
运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成引导加载程序、分区表和应用程序二进制文件,编译完成后将生成 .bin 文件。
把串口插入到ubuntu中,找到对应的串口的标识,Linux 操作系统: 以 /dev/tty
开头。
Linux中两种常见的 USB 转串口设备标识:
-
ttyUSB*
:常见于 CH340、CP2102 等 USB 转串口芯片。 -
ttyACM*
:常见于 CDC-ACM 类设备(比如 Arduino、STM32 的虚拟串口)。
使用如下指令可以查看ubuntu下的可用的串口设备文件:
cd /dev
ls ttyUSB*
ls ttyACM*

也可以比较插入设备前后的变化,可以快速找到当前的设备标识符:
插入设备前,运行:
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
记下已有的串口设备。
插入 USB 串口设备后,再运行同样的命令。
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
新出现的设备就是你要找的,比如 /dev/ttyUSB0
或 /dev/ttyACM0
。
烧录固件到设备
烧录之前,需要获取串口设备文件的读写权限:
sudo chmod a+rw /dev/ttyACM0
或者
sudo chmod 666 /dev/ttyACM0
运行以下命令,将刚刚生成的二进制文件烧录至芯片:
idf.py -p PORT flash
将 PORT 替换为自己的串口名称,上面的设备对应指令则为:
idf.py -p /dev/ttyACM0 flash
6.其他指令
监视输出
可以使用 idf.py -p PORT monitor
命令,监视工程的运行情况
idf.py -p PORT monitor
擦除 flash
ESP-IDF 支持擦除 flash。请运行以下命令,擦除整个 flash:
idf.py -p PORT erase-flash
若存在需要擦除的 OTA 数据,请运行以下命令:
idf.py -p PORT erase-otadata
擦除 flash 需要一段时间,在擦除过程中,请勿断开设备连接。
清除编译
清除之前的编译:
idf.py fullclean
文档参考链接:
Linux 和 macOS 平台工具链的标准设置