获取不同软件开发平台的固件烧录信息(开发阶段)

[English]

基于 ESP-IDF SDK 开发的完整工程的固件通常包含 bootloader.binpartition-table.binapp.bin
  • bootloader.bin :是 二级引导加载程序

  • partition-table.bin :是用于管理 Flash 的分区表固件,详细说明参见: 分区表

  • app.bin:是用于执行用户应用功能的固件

不系列芯片的 bootloader.bin 的下载地址(也叫偏移(offset)地址)是 固定的且不支持修改。具体如下:

芯片及 bootloader.bin 下载地址

芯片

bootloader.bin 下载地址

ESP8266/ESP8285

0x0

ESP32

0x1000

ESP32-C2/ESP8684

0x0

ESP32-C3/ESP8685

0x0

ESP32-C5

0x2000

ESP32-C6

0x0

ESP32-S2

0x0

ESP32-S3

0x0

ESP32-H2

0x0

ESP32-P4

0x0

具体工程生成的 固件 和对应的 下载地址 取决于工程的 分区表 设置,每个工程都需要设置对应的分区表。 ESP-IDF SDK 中提供了一系列默认的分区表文件可供用户使用,参见: esp-idf/components/partition_table 文件里的 .csv 文件。

Partition Table Files

用户也可以为工程设置自定义的分区表文件,可参考: esp-idf/examples/storage/spiffs 例程。在工程目录下创建一个 .csv 的文件,然后参考 分区表 使用说明进行设置,例如分区表文件如下:

Customer Partition Table

若工程使用自定义的分区表文件,将需要在工程 软件配置 中设置 自定义的分区表名称和路径,如下:

Customer Partition Setting

ESP 系列产品的软件开发支持多种软件开发环境,常用的软件环境有 ESP-IDF CMD 终端编译环境VSCODE IDEArduino IDE 等软件环境。

1. Windows ESP-IDF CMD 软件编译环境

在 Windows ESP-IDF CMD 软件编译环境中, 工程配置编译下载监控 都通过执行具体的指令来完成。例如:

用户可以执行 idf.py menuconfig 指令进行工程配置。

分区表设置:

Partition Table Setting

分区表下载地址设置:

Partition Table Address

使用 Windows ESP-IDF CMD 软件编译环境编译工程后,将在 idf.py build 指令执行完成后,打印如下日志以显示当前工程生成的固件和对应的固件下载地址。

IDF CMD Build

用户也可以直接在 build 文件夹下打开 flash_project_args 文件来获取固件下载信息,如下:

Flash File

最后,用户可以直接运行 idf.py flash monitor 指令来下载固件并监控固件运行日志。

获取工程编译的固件和地址后,也可以参考 选择合适的烧录平台 章节说明进行固件下载。

2. VSCODE IDE 软件编译环境

VS CODE IDE 环境中,提供了用于 软件编译烧录配置监控``和 ``调试 等快捷按钮,用户可直接通过这些按钮来完成特定的设置。例如:

软件设置:相当于 idf.py menuconfig 配置界面。

IDE  Menuconfig

工程烧录:相当于 idf.py flash

工程烧录时同样会在终端运行界面打印工程烧录的固件和对应的下载地址,如下:

IDE  Flashing

工程烧录完成后同样会打印固件烧录时运行的指令的日志,如下:

IDE Flashing Log

同样,也可以直接在工程编译生成的 build 文件夹下打开 flash_project_args 文件来获取固件下载信息,如下:

IDE Flashing File

获取工程编译的固件和地址后,也可以参考 选择合适的烧录平台 章节说明进行固件下载。

3. Arduino IDE 软件编译环境

打开 Arduino IDE 里的例程:

Arduino Examples

Arduino IDE 软件配置:

Arduino Software Setting

Aruino IDE 固件下载日志:

Arduino Flashing

将日志复制出来,可以获取工程对应的固件和下载地址信息。如下:

esp32s3 --port "COM4" --baud 921600  --before default_reset --after hard_reset write_flash  -z --flash_mode keep --flash_freq keep --flash_size keep 0x0 "C:\Users\caiguanhong\AppData\Local\Temp\arduino\sketches\7B5F00811F0549D692D11436750291AC/I2S_Toggle_Test.ino.bootloader.bin" 0x8000 "C:\Users\caiguanhong\AppData\Local\Temp\arduino\sketches\7B5F00811F0549D692D11436750291AC/I2S_Toggle_Test.ino.partitions.bin" 0xe000 "C:\Users\caiguanhong\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.0/tools/partitions/boot_app0.bin" 0x10000 "C:\Users\caiguanhong\AppData\Local\Temp\arduino\sketches\7B5F00811F0549D692D11436750291AC/I2S_Toggle_Test.ino.bin" esptool.py v4.8.1

然后可以根据日志提供的路径信息找到对应工程的固件,如下:

Arduino Firmware

获取工程编译的固件和地址后,也可以参考 选择合适的烧录平台 章节说明进行固件下载。