使用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 下载工具用户指南

相关推荐
蹊黎12 分钟前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
by2099934 分钟前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
Rover Ramble1 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长1 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall2 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊2 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
爱聊灵光的维C2 小时前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
共享家95273 小时前
408 操作系统第一章
服务器·数据库·windows
AI+程序员在路上3 小时前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能
揽星河..4 小时前
【C语言】扫雷游戏
c语言·算法·游戏