ПинЛог

Ошибки partition table при прошивке ESP32

Сообщения вида «Invalid partition table» или переполнение раздела приложения на этапе прошивки означают, что реальная схема разделов флеш-памяти не совпадает с ожидаемой — обычно после смены схемы partition в проекте без полной очистки.

Возможные причины

  • Скетч/прошивка выросла в размере и больше не помещается в текущую схему partition (например, default с малым разделом app)
  • Смена файла partitions.csv в проекте без предварительного erase_flash оставляет на чипе старую таблицу
  • Несовместимая схема partition между Arduino core и ESP-IDF при переносе проекта
  • OTA-обновления требуют определённой схемы с двумя app-разделами, которой изначально не было на чипе

Что сделать

  1. В Arduino IDE проверьте выбранную схему в Инструменты → Partition Scheme и выберите вариант с большим app-разделом (например, No OTA / Huge APP), если прошивка большая.
  2. В PlatformIO явно укажите board_build.partitions = ваш_файл.csv в platformio.ini для контроля над схемой.
  3. При смене схемы partition table обязательно выполните esptool.py erase_flash перед следующей прошивкой, чтобы убрать несовместимую старую таблицу.
  4. Если нужны OTA-обновления, выбирайте готовую схему с поддержкой OTA (два app-раздела) вместо схемы по умолчанию.
  5. Проверьте фактический размер скомпилированного .bin в логе сборки и сравните с объявленным размером раздела app в partitions.csv.

Когда менять железо

Замена железа не требуется — это конфигурационная проблема, решаемая правильной схемой partition и полной очисткой флеш.

Не официальная поддержка Espressif Systems. Названия команд и параметры сверяйте с версией esptool/IDF, установленной у вас.

Связанные материалы