在前面我们已经搭建好了VS Code的ESP-IDF开发环境,也实现了代码的上传和验证,这里我们将讲解通过Flash Download Tool给烧录ESP32本地固件。
- 准备工作
• Windows10/11电脑
• ESP32-P4开发板(其他开发板亦可,操作时请按照实际选择)
• Flash下载工具 - 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 ConfigSPI 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 PanelSTART:开始按键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:常见原因和解决办法:
- COM 口选错:重新插拔开发板,确认端口号;
- 串口被占用:关闭 VS Code 串口监视器、串口助手等;
- 波特率过高 :先降到
115200再试; - 芯片类型选错:确认是 ESP32、ESP32-S3、ESP32-C3 还是 ESP32-P4;
- 地址填错 :对照
build/flasher_args.json重新填写; - 没有进入下载模式:部分开发板需要按住 BOOT 键再按 RESET 键;
- 供电不足:换 USB 口或使用带供电的 USB Hub;
- 固件不匹配 :确认
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。