有勇气的牛排博客

ESP 芯片的刷机/烧录/调试工具esptool


进群口令:博客

1 前言

1.1 什么是 esptool?

esptool 是一个 用 Python 编写的开源命令行工具

主要用于和 Espressif(乐鑫) 的 ESP8266、ESP32 系列芯片交互

可以通过 串口(UART) 下载固件、读写 Flash、获取芯片信息等

📌 一句话总结:
esptool 就是 ESP 芯片的刷机/调试小帮手,帮你把固件写进芯片的 Flash 里。

2 安装

2.1 安装 Python & esptool

pip install esptool

安装完成后可以验证:

esptool version

image.png

2.2 安装 USB 驱动

ESP32-S3 常用的 USB 转串口芯片有

CP2102/CP2104 → 下载驱动

CH340/CH9102 → 下载驱动

安装后在 Windows 设备管理器里能看到一个 COM 端口(例如 COM3)。

3 烧录准备

3.1 准备烧录固件

固件通常是 .bin 文件,比如:

  • MicroPython 固件(官方下载)
  • Arduino/ESP-IDF 编译出来的固件

3.2 硬件连接与进入下载模式

ESP32-S3 开发板大部分能自动进入下载模式,但如果失败,需要手动:

  1. 按住 BOOT(或 IO0 接地)
  2. 按一下 EN/RST
  3. 松开 EN/RST
  4. 松开 BOOT

进入下载模式后,芯片会等待烧录命令。

3.3 擦除 Flash(推荐先做一次)

esptool --chip esp32s3 --port COM5 erase_flash

--chip esp32s3 指定芯片型号

--port COM5 指定串口(Mac/Linux 用 /dev/ttyUSB0/dev/ttyACM0

image.png

4 正式烧录

4.1 基础命令

esptool.py --chip esp32s3 --port COM5 --baud 115200 write_flash -z 0x0 firmware.bin

参数解释:

  • --chip esp32s3 → 芯片型号
  • --port COM5 → 串口号
  • --baud 460800 → 烧录速度(可改成 115200 更稳)
  • write_flash → 烧录命令
  • -z → 压缩数据,加快传输
  • 0x0 → 烧录起始地址(大多数单 bin 固件从 0x0 开始)
  • firmware.bin → 固件文件路径

常用命令

淘宝自带固件

esptool --chip esp32s3 --port COM5 --baud 115200 write_flash -z 0x0 F:/iot/fireware/esp32/GENERIC_S3-20220618-v1.19.1.bin
esptool --chip esp32s3 --port COM5 --baud 115200 write_flash -z 0x0 F:/iot/fireware/esp32/micropython_camera_feeeb5ea3_esp32_idf4_4.bin esptool --chip esp32s3 --port COM5 --baud 115200 write_flash -z 0x0 F:/iot/fireware/esp32/micropython_cmake_9fef1c0bd_esp32_idf4.x_ble_camera.bin esptool --chip esp32s3 --port COM5 --baud 115200 write_flash -z 0x0 F:/iot/fireware/esp32/micropython_v1.21.0_camera_no_ble.bin esptool --chip esp32s3 --port COM5 --baud 115200 write_flash -z 0x0 F:/iot/fireware/esp32/esp32-20220618-v1.19.1.bin

4.2 多分区固件(Arduino/ESP-IDF)

如果固件是多个 .bin 文件,需要分别烧录到不同地址,例如:

esptool.py --chip esp32s3 --port COM3 --baud 460800 write_flash \ 0x0 bootloader.bin \ 0x8000 partitions.bin \ 0x10000 firmware.bin

常见地址:

  • 0x0 → bootloader
  • 0x8000 → 分区表
  • 0x10000 → 主程序

5 烧录完成后启动

烧录完成后:

  1. 按一下 EN/RST
  2. 进入正常运行模式
  3. 如果是 MicroPython,可以用串口工具连接:
picocom /dev/ttyUSB0 -b 115200

或 Windows 下用 PuTTY / Thonny

6 常见问题与解决

错误提示 原因 解决方法
Failed to connect / Wrong boot mode detected 没进下载模式 手动按 BOOT+EN 进入
Serial data stream stopped USB 线差/干扰/波特率高 换数据线,降到 115200
invalid header: 0xffffffff Flash 空/地址错 擦除 Flash,检查烧录地址
Timeout waiting for packet header 串口占用 关闭 Arduino IDE / 串口工具

评论区

×
×