| PlatformIO ESP32: генерация полного образа памяти для прошивки |
|
| Добавил(а) microsin | |||||||||||||||
|
Проект, компилируемый под управлением PlatformIO-плагина VScode для ESP32, сохраняет конечный двоичный код в отдельных файлах для загрузчика, приложения, таблицы разделов и других файлов. [PlatformIO] Например, образ flash-памяти может состоять из следующих файлов:
Информация этой таблицы находится в файле idedata.json проекта (этот файл присутствует в каталоге .pio/build/esp32dev/). Информация закодирована в объектах JSON примерно в таком виде: {"flash_images": [ В документации 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 [ESP-IDF] Если у вас используется веб-сервер, построенный на платформе ESP-IDF, на котором веб-странички берутся из flash-раздела www, то у вас может быть такой файл таблицы разделов partitions_example.csv (например, в проекте микроконтроллера ESP32-C3): # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 0x110000, www, data, spiffs, , 256K, storage, data, fat, , 528K, В этом случае полный файл прошивки формируется следующим образом (запуск из корневого каталога проекта): esptool.py --chip esp32c3 merge_bin \ Проверка полного образа прошивки может быть проведена следующим образом. Стирание памяти: esptool.py --port /dev/ttyACM0 --chip esp32c3 erase_flash Прошивка, новый синтаксис esptool: esptool.py --port /dev/ttyACM0 --chip esp32c3 --flash_mode dio \ Прошивка, старый синтаксис esptool (для esptool.py v4.7.0): esptool.py --port /dev/ttyACM0 --chip esp32c3 write_flash \ [Ссылки] 1. esptool: Merge Binaries for Flashing. |