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

在 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 项目的串口烧录。遇到问题时,优先检查串口权限、硬件连接和芯片型号配置。

相关文章:

  • 【日撸 Java 三百行】Day 3(注释,基本if语句,函数调用)
  • C++编程语言:从高效系统开发到现代编程范式的演进之路
  • 对标研华ECU-461,搭载飞腾4核/8核国产处理器, 提供8网 8串B码对时 双显 无风扇的ARM通信管理平台
  • 优势演员-评论家A2C详解:python从零实现
  • Cyber Weekly #54
  • 小程序问题(记录版)
  • spring详解-循环依赖的解决
  • 如何通过代理 IP 实现异地直播推流
  • 荣耀A8互动娱乐组件部署实录(第1部分:服务端环境搭建)
  • Android开发-工程结构
  • HarmonyOS基本的应用的配置
  • 编程日志4.25
  • Messenger.Default.Send 所有重载参数说明
  • imapal sql优化之hint
  • 获取当前时间
  • Unity中Pico4开发 物体跟随手势模型进行移动
  • 解释 NestJS 的架构理念(例如,模块化、可扩展性、渐进式框架)
  • 使用 git subtree 方法将六个项目合并到一个仓库并保留提交记录
  • Ubuntu18.04搭建samda服务器
  • LXwhat-嘉立创
  • 潘功胜发布会答问五大要点:除了降准降息,这些政策“含金量”也很高
  • 央行:将支持资本市场两项货币政策工具的额度合并使用
  • 奥迪4S店内揭车衣时遭“连环车损”,双方因赔偿分歧陷僵局
  • 我国科研团队发布第四代量子计算测控系统
  • 长和获准出售巴拿马运河港口以外的港口?外交部:该报道没有依据
  • 柳向春:关于美国国会图书馆所藏《全芳备祖》的一些故事