在 Ubuntu 下使用 ESP-IDF 通过串口烧录 ESP32
1. 准备工作
(1) 安装 ESP-IDF 环境
确保已完成 ESP-IDF 的安装和配置(参考官方文档):
bash
复制
下载
git clone --recursive https://github.com/espressif/esp-idf.git cd esp-idf ./install.sh . ./export.sh
(2) 连接开发板
-
通过 USB 线将 ESP32/ESP8266 开发板连接到 Ubuntu 主机。
-
确认设备识别到的串口号(通常为
/dev/ttyUSB0
或/dev/ttyACM0
)。
(3) 设置串口权限
bash
复制
下载
sudo chmod 666 /dev/ttyUSB0 # 临时授权 # 或永久添加用户到 dialout 组: sudo usermod -a -G dialout $USER sudo reboot # 重启生效
验证串口是否可访问:
bash
复制
下载
ls -l /dev/ttyUSB*
2. 编译并烧录固件
进入项目目录后执行以下步骤:
(1) 配置目标芯片
bash
复制
下载
idf.py set-target esp32 # 或 esp32s2/esp32c3/esp8266
(2) 编译项目
bash
复制
下载
idf.py build
(3) 烧录固件
通过串口烧录(替换 /dev/ttyUSB0
为你的实际端口):
bash
复制
下载
idf.py -p /dev/ttyUSB0 flash
关键参数:
-
-p PORT
:指定串口设备。 -
-b BAUD
:可选,修改波特率(默认 460800)。
3. 常见问题解决
(1) 串口权限不足
错误提示:
复制
下载
Failed to open port /dev/ttyUSB0 Permission denied
解决:
bash
复制
下载
sudo chmod 666 /dev/ttyUSB0 # 或永久加入 dialout 组(见步骤1.3)
(2) 烧录失败(波特率/连接问题)
尝试降低波特率:
bash
复制
下载
idf.py -p /dev/ttyUSB0 -b 115200 flash
或检查硬件连接(USB 线/开发板是否正常)。
(3) 目标芯片不匹配
确保 set-target
与开发板型号一致(如 esp32
vs esp32s3
)。
4. 高级操作
(1) 监视串口输出
烧录后实时查看日志:
bash
复制
下载
idf.py -p /dev/ttyUSB0 monitor
退出监视:按 Ctrl+]
。
(2) 擦除 Flash
bash
复制
下载
idf.py -p /dev/ttyUSB0 erase_flash
(3) 自定义烧录选项
在 menuconfig
中配置串口和 Flash 设置:
bash
复制
下载
idf.py menuconfig
路径:
Serial flasher config
→ 修改波特率、Flash 模式等。
5. 自动化脚本示例
将常用命令写入脚本(如 flash.sh
):
bash
复制
下载
#!/bin/bash PORT=/dev/ttyUSB0 BAUD=460800idf.py build idf.py -p $PORT -b $BAUD flash monitor
运行:
bash
复制
下载
chmod +x flash.sh ./flash.sh
总结
步骤 | 命令 |
---|---|
设置串口权限 | sudo chmod 666 /dev/ttyUSB0 |
编译项目 | idf.py build |
烧录固件 | idf.py -p /dev/ttyUSB0 flash |
监视输出 | idf.py -p /dev/ttyUSB0 monitor |
通过以上步骤,你可以在 Ubuntu 下顺利完成 ESP-IDF 项目的串口烧录。遇到问题时,优先检查串口权限、硬件连接和芯片型号配置。