Проект, компилируемый под управлением PlatformIO-плагина VScode для ESP32, сохраняет конечный двоичный код в отдельных файлах для загрузчика, приложения, таблицы разделов и других файлов. Например, образ flash-памяти может состоять из следующих файлов:
Файл |
Смещение |
Описание |
bootloader.bin |
0x1000 |
Двоичный код загрузчика. |
partitions.bin |
0x8000 |
Таблица разделов FLASH. |
boot_app0.bin |
0xe000 |
Не нашел, для чего нужен этот файл. Некоторая информация есть в статье [2]. |
firmware.bin |
0x10000 |
Двоичный код приложения. |
Информация этой таблицы находится в файле idedata.json проекта (этот файл присутствует в каталоге .pio/build/esp32dev/). Информация закодирована в объектах JSON примерно в таком виде:
{"flash_images": [ {"offset": "0x1000", "path":
"./.pio/build/esp32dev/bootloader.bin"}, {"offset": "0x8000", "path":
"./.pio/build/esp32dev/partitions.bin"}, {"offset": "0xe000", "path":
"/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin"}
], "application_offset": "0x10000"}
В документации esptool [1] описывается, как с помощью команды merge-bin можно сгенерировать из этих файлов один общий файл образа merged-flash.bin, который впоследствии прошивается в память чипа:
$ esptool.py --chip ESP32 merge-bin -o merged-flash.bin\
--flash-mode dio --flash-size 4MB\
0x1000 bootloader.bin\
0x8000 partitions.bin\
0x10000 firmware.bin\
0xE000 boot_app0.bin
[Ссылки]
1. esptool: Merge Binaries for Flashing. 2. No need of boot_app0.bin flashing since many years site:openmqttgateway.com. |