使用Flash Download Tool给ESP32烧录固件

在前面我们已经搭建好了VS Code的ESP-IDF开发环境,也实现了代码的上传和验证,这里我们将讲解通过Flash Download Tool给烧录ESP32本地固件。

  1. 准备工作
    • Windows10/11电脑
    • ESP32-P4开发板(其他开发板亦可,操作时请按照实际选择)
    • Flash下载工具
  2. Flash下载工具介绍
    下载后解压文件夹,双击运行flash_download_tool_3.9.11(随着版本升级,3.9.11的版本号可能更新,以实际为准)
    运行后可以看到如下主界面,按照实际开发板选择,点击"OK"
  • ChipType:芯片类型,根据所用产品类型选择

  • WorkMode:软件模式,当前有 Develop 模式与 Factory 模式,区别如下:

    • Develop 模式使用固件绝对路径,只支持单片产品烧录。
    • Factory 模式使用相对路径,建议将待烧录固件放在与 .exe 文件同级的 bin 文件夹中,配置后关闭时会自动保存在本地。
    • Factory 模式打开时,界面锁定,需点击 LockSettings 按钮使能编辑。防止鼠标误操作。
  • LoadMode:下载接口仅支持 UART。

    SPIDownload 界面

以下是配置说明:

  • Download Path Config 包含固件加载路径,固件下载地址,以 16 进制格式填写,比如 0x1000。
  • SPI Flash Config
    • SPI SPEED:SPI 启动速率
    • SPI MODE:SPI 启动模式
    • DETECTED INFO:自动检测到的 flash 及晶振信息
    • DoNotChgBin:若使能,则按照 bin 文件原始内容烧录。若不使能,按照界面的 SPI SPEED、SPI MODE 配置更新并烧录。
    • CombineBin 按钮:可将 Download Path Config 中选中的多个固件打包成一个固件。若使能 DoNotChgBin,则按原始固件打包。若不使能 DoNotChgBin,则按界面 SPI SPEED、SPI MODE 配置打包固件。固件之间非数据区,会以 0xff 进行填充。打包的固件将保存为 ./combine/target.bin,每次点击覆盖前次。
    • Default 按钮:将界面 SPI 配置均还原成默认值。
  • Download Panel
    • START:开始按键
    • STOP:停止按键
    • ERASE:整个 flash 擦除
    • COM:下载串口
    • BAUD:下载波特率

3. 准备固件文件

在 VS Code + ESP-IDF 项目中完成编译后,固件文件生成在项目的 build文件夹下。(如果没有build文件夹,重新编译即可)

我们需要准备以下3个固件

  • Bootloader 文件:bootloader/bootloader.bin
  • 分区表文件:partition_table/partition-table.bin
  • 主应用程序文件:app.bin(位于项目根目录的 build 下),生成的app.bin 根据工程配置不同,名称不同。

这里我们以ESP-IDF默认示例hello-world项目为例,如下图我们需要准备以下固件。(选择固件时项目放哪个路径下就到哪个路径去找,这里放在了C:\Users\EDY\hello_world

此时证明烧录成功,至此我们完成了通过Flash Download Tool烧录固件的操作。

5.FAQ

Q1:Develop 模式和 Factory 模式怎么选?

A:

  • Develop 模式:使用固件绝对路径,适合开发调试,只支持单片产品烧录;
  • Factory 模式 :使用相对路径,适合产线批量烧录。建议把待烧录固件放到与 .exe 同级的 bin 文件夹中,配置后关闭工具会自动保存到本地。Factory 模式打开时界面可能锁定,需要点击 LockSettings 按钮才能编辑,防止鼠标误操作。

如果只是自己测试,选 Develop 即可。

Q2:烧录失败怎么办?

A:常见原因和解决办法:

  1. COM 口选错:重新插拔开发板,确认端口号;
  2. 串口被占用:关闭 VS Code 串口监视器、串口助手等;
  3. 波特率过高 :先降到 115200 再试;
  4. 芯片类型选错:确认是 ESP32、ESP32-S3、ESP32-C3 还是 ESP32-P4;
  5. 地址填错 :对照 build/flasher_args.json 重新填写;
  6. 没有进入下载模式:部分开发板需要按住 BOOT 键再按 RESET 键;
  7. 供电不足:换 USB 口或使用带供电的 USB Hub;
  8. 固件不匹配 :确认 bootloader.bin、partition-table.bin、app.bin 来自同一个工程、同一次编译。

如果仍然失败,可以查看 Flash Download Tool 下方的日志窗口,根据报错信息进一步判断。


Q3:可以直接烧 app.bin 吗?

A:如果开发板里已经烧好匹配的 bootloader.bin 和 partition-table.bin,并且分区表没有变化,可以只烧 app.bin 到对应地址,例如 0x10000。

但如果是首次烧录、换了分区表、换了 bootloader,或者不确定板子里原来有什么,建议把 bootloader.bin、partition-table.bin、app.bin 三个都烧录,或者直接烧合并后的 merged.bin / target.bin。

6. 参考链接

Flash 下载工具用户指南

相关推荐
晴天的雨.9921 小时前
【C++】 priority_queue知识点总结
开发语言·数据结构·c++
小七在进步1 小时前
C++内存管理:new/delete vs malloc/free深度解析
android·java·c++
zjxtxdy1 小时前
STM32hal库开发-GPIO
stm32·单片机·嵌入式硬件
zbyyd1 小时前
Linux字符设备驱动:LED驱动实战开发
linux·单片机·arm·驱动
youcans_10 小时前
【STM32C5教程】(3)GPIO 按键输入实验
stm32·单片机·嵌入式硬件
IT规划师12 小时前
MQTT实战 - 用了8年MQTT,我为什么还要重新系统啃一遍(一)
物联网·.net
IT规划师12 小时前
MQTT 生产实战 - 用了 8 年 MQTT,我为什么还要重新系统啃一遍(一)
物联网·mqtt·.net10
北京盛世宏博12 小时前
通信异常深度排查:以太网温湿度设备 TCP 粘包、UDP 丢包根治方案
单片机·网络协议·tcp/ip·udp·以太网·传感器·温湿度
别动我齐刘海12 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人