Как повторить
- Откройте папку с
platformio.iniв десктопном приложении Codex. Облачная задача Codex не видит устройство, подключённое по USB. - Попросите Codex прочитать
platformio.iniи секциюbuild_src_filterи назвать файлы, которые реально попадают в сборку. В таких проектах рядом с рабочим кодом обычно копится мёртвый. - Соберите проект без правок:
pio run -e <ваше окружение>Сохраните firmware.bin и firmware.elf, с ними будете сравнивать следующие сборки.
- Если окружения для
pio testнет, гоняйте unit-тесты (проверки отдельных функций) обычным компилятором Mac. Это дешевле, чем проверять каждую правку на плате. - Найдите порт: сравните список портов до и после подключения кабеля с передачей данных. Старое имя вроде
/dev/cu.usbmodem…из прошлых записей не берите, оно меняется. - Перед записью в flash (встроенную память платы) сохраните полный backup: исходники, собранный бинарник и дамп, то есть полную копию памяти устройства. Храните его приватно.
esptool --chip esp32s3 --port <порт> --baud 115200 read_flash 0x0 0x800000 device-full.binРазмер подставьте под объём flash своей платы. В свежей документации esptool команды пишутся через дефис (read-flash), сверьтесь с esptool --help своей версии.
- Внесите одну правку в отдельной копии проекта, соберите снова и посмотрите разницу с прошлой версией. Несколько изменений в одной проверке не смешивайте.
- Прошейте только раздел приложения
app0по адресу из таблицы разделов (обычно0x10000). Запись всего чипа с адреса0стирает разделnvsс настройками и токенами и файловую систему LittleFS (в таблице разделов она может быть помечена какspiffs). - Перезапустите устройство, не удерживая кнопку входа в загрузчик. Проверьте экран, клавиши и логи.
- Для бага дайте Codex промпт с конкретным сценарием и одним измеримым критерием: «Симптом: [точный текст/снимок]. Возникает после [шаги]. Ожидаю [результат], получаю [результат]. Последняя рабочая версия: [файл/hash]. Собери, укажи ограничения проверки. Без прошивки». Так агент не трогает то, о чём не просили. По тому же принципу пишутся промпты для новой функции или подготовки релиза.
Как проверить результат
Сборка без правок должна закончиться SUCCESS и свежим firmware.bin в .pio/build/<env>/. Если она падает уже здесь, проблема в окружении, и идти дальше по шагам рано. Если после прошивки устройство не отвечает, восстановите полный дамп, снятый на шаге 6:
esptool --chip esp32s3 --port <порт> --baud 115200 write_flash 0x0 device-full.binСверьте shasum -a 256 исходного и восстановленного файла: совпали, значит откат прошёл чисто.
Ссылки
- Codex (приложение ChatGPT): как открыть локальную папку проекта в десктопном Codex.
- PlatformIO Core: установка: как поставить PlatformIO CLI без IDE.
- PlatformIO: pio device list: команда, которая показывает список портов.
- esptool: базовые команды для ESP32-S3: чтение и запись flash, актуальный синтаксис.
- M5Stack Cardputer ADV: пример спецификации платы с объёмом flash.
- ESP32 Arduino: Preferences (NVS): как хранятся настройки в разделе
nvs.
Источник: "Intelligent Chav".