№93

24 октября 2026

агенты · инструменты

Как пустить Codex в прошивку ESP32 и не стереть данные на устройстве

Порядок работы, при котором Codex правит прошивку ESP32 в проекте PlatformIO, а Wi-Fi-настройки, токены и файлы на устройстве не стираются неудачной перепрошивкой.

3 мин чтения · подписка ChatGPT · день при готовом проекте

Где подвох
Codex проверяет только то, что код собирается. Работу экрана, кнопок, микрофона и сервера он не видит, их проверяете на устройстве сами.

Как повторить

  1. Откройте папку с platformio.ini в десктопном приложении Codex. Облачная задача Codex не видит устройство, подключённое по USB.
  2. Попросите Codex прочитать platformio.ini и секцию build_src_filter и назвать файлы, которые реально попадают в сборку. В таких проектах рядом с рабочим кодом обычно копится мёртвый.
  3. Соберите проект без правок:
pio run -e <ваше окружение>

Сохраните firmware.bin и firmware.elf, с ними будете сравнивать следующие сборки.

  1. Если окружения для pio test нет, гоняйте unit-тесты (проверки отдельных функций) обычным компилятором Mac. Это дешевле, чем проверять каждую правку на плате.
  2. Найдите порт: сравните список портов до и после подключения кабеля с передачей данных. Старое имя вроде /dev/cu.usbmodem… из прошлых записей не берите, оно меняется.
  3. Перед записью в flash (встроенную память платы) сохраните полный backup: исходники, собранный бинарник и дамп, то есть полную копию памяти устройства. Храните его приватно.
esptool --chip esp32s3 --port <порт> --baud 115200 read_flash 0x0 0x800000 device-full.bin

Размер подставьте под объём flash своей платы. В свежей документации esptool команды пишутся через дефис (read-flash), сверьтесь с esptool --help своей версии.

  1. Внесите одну правку в отдельной копии проекта, соберите снова и посмотрите разницу с прошлой версией. Несколько изменений в одной проверке не смешивайте.
  2. Прошейте только раздел приложения app0 по адресу из таблицы разделов (обычно 0x10000). Запись всего чипа с адреса 0 стирает раздел nvs с настройками и токенами и файловую систему LittleFS (в таблице разделов она может быть помечена как spiffs).
  3. Перезапустите устройство, не удерживая кнопку входа в загрузчик. Проверьте экран, клавиши и логи.
  4. Для бага дайте Codex промпт с конкретным сценарием и одним измеримым критерием: «Симптом: [точный текст/снимок]. Возникает после [шаги]. Ожидаю [результат], получаю [результат]. Последняя рабочая версия: [файл/hash]. Собери, укажи ограничения проверки. Без прошивки». Так агент не трогает то, о чём не просили. По тому же принципу пишутся промпты для новой функции или подготовки релиза.

Как проверить результат

Сборка без правок должна закончиться SUCCESS и свежим firmware.bin в .pio/build/<env>/. Если она падает уже здесь, проблема в окружении, и идти дальше по шагам рано. Если после прошивки устройство не отвечает, восстановите полный дамп, снятый на шаге 6:

esptool --chip esp32s3 --port <порт> --baud 115200 write_flash 0x0 device-full.bin

Сверьте shasum -a 256 исходного и восстановленного файла: совпали, значит откат прошёл чисто.

Ссылки

Источник: "Intelligent Chav".

Больше подобного

Разбираю по находке в день и складываю сюда. Свежее и то, что до сайта не доехало, выходит в канале «Евдокимов как обычно».