Ошибки partition table при прошивке ESP32
Сообщения вида «Invalid partition table» или переполнение раздела приложения на этапе прошивки означают, что реальная схема разделов флеш-памяти не совпадает с ожидаемой — обычно после смены схемы partition в проекте без полной очистки.
Возможные причины
- Скетч/прошивка выросла в размере и больше не помещается в текущую схему partition (например, default с малым разделом app)
- Смена файла partitions.csv в проекте без предварительного erase_flash оставляет на чипе старую таблицу
- Несовместимая схема partition между Arduino core и ESP-IDF при переносе проекта
- OTA-обновления требуют определённой схемы с двумя app-разделами, которой изначально не было на чипе
Что сделать
- В Arduino IDE проверьте выбранную схему в Инструменты → Partition Scheme и выберите вариант с большим app-разделом (например, No OTA / Huge APP), если прошивка большая.
- В PlatformIO явно укажите board_build.partitions = ваш_файл.csv в platformio.ini для контроля над схемой.
- При смене схемы partition table обязательно выполните esptool.py erase_flash перед следующей прошивкой, чтобы убрать несовместимую старую таблицу.
- Если нужны OTA-обновления, выбирайте готовую схему с поддержкой OTA (два app-раздела) вместо схемы по умолчанию.
- Проверьте фактический размер скомпилированного .bin в логе сборки и сравните с объявленным размером раздела app в partitions.csv.
Когда менять железо
Замена железа не требуется — это конфигурационная проблема, решаемая правильной схемой partition и полной очисткой флеш.
Не официальная поддержка Espressif Systems. Названия команд и параметры сверяйте с версией esptool/IDF, установленной у вас.