Маршруты навыков
TTDD = DDTT + другие свидетели цели. Модуль отвечает за проверку с остановками; навыки-спутники добавляют взгляд без остановки ядра, снаружи и без платы.
Свидетели цели
| Свидетель | Что показывает | Воздействие на цель | Навыки |
|---|---|---|---|
| GDB и SWD с остановками (DDTT) | состояние в точке остановки: переменные, регистры, MMIO, возвраты; подмена данных и отказов | ядро стоит в точках останова | scenarios, run |
| SWD без остановки ядра | значения переменных и регистров во времени, пока прошивка работает | только чтение памяти по шине | stm32-diag-record, stm32-ros-alt-channel |
| Собственный вывод прошивки | лог, телеметрия и события, которые прошивка публикует сама | нужен канал в прошивке | stm32-rtt-console, stm32-swo-trace, stm32-ros-alt-channel |
| Выводы MCU снаружи | реальное время: фронты, ШИМ, джиттер ISR, шины на проводе | нет, пассивный щуп | weact-logic-analyzer |
| Модель без платы | ход ELF на модели, обращения к периферии | нет; подготовка, а не проверка на цели | renode, stm32-renode-emulator |
| Требования | что проверять: ID требований и тест-кейсов, допуски | — | embedded-tech-spec |
Правила
Судит требованиеОжидание берётся из требования; каждый свидетель только подтверждает или опровергает его. Расхождение свидетелей — находка.
Остановки меняют времяВремя, частоты и джиттер измеряйте свидетелем, который не останавливает ядро; DDTT — конфигурация, ветвления, отказы.
Один хозяин SWDНе запускайте два GDB-сервера на один отладчик; анализатор и UART можно вести параллельно.
Свидетельства рядомЗаписи одного опыта связываются по ID сценария или требования и лежат рядом с result.json.
Эмулятор — подготовкаМодель сокращает попытки на плате, но вывод «проверено на цели» даёт только плата.
Как выбирать навык
| Навык | Когда и что дать | Результат |
|---|---|---|
integrate | Для первого подключения или смены версии. Дайте CMake-проект и нужный тег; сначала проверьте конфигурацию и prepare, затем один аппаратный сценарий. | Закреплённый gitlink, HIL-конфигурация, пресеты и воспроизводимая команда запуска. |
scenarios | Когда требование к прошивке уже известно. Укажите наблюдаемое поведение и допустимые воздействия; берите ожидания из требования, а не из текущего ответа платы. | Сценарий и контракт ELF; logical-time для порогов/retry, counter-cost для разности и расходов. external-capture — отдельная host-модель, не @case. |
run | Для конкретного прогона. Передайте session или пакет и стенд; начинайте с doctor и prepare. После изменения кода переходите к develop, а не повторяйте запуск без гипотезы. | Результат команды и сценария, журналы, восстановление и объяснение FAIL/ERROR/SKIP. |
results | Когда артефакты уже есть. Дайте полный каталог попытки или кампании и соответствующие исходники; сначала проверяйте происхождение и целостность, затем трактуйте записи. | Отдельные исходы сценария, захвата, анализа и очистки. neutral-workflows связывает три примера с критериями; UNKNOWN не ноль, PASS кампании не отменяет намеренные FAIL. |
stand-loop | Для повторения принятого неизменяемого комплекта. Задайте конечное число циклов, политику FAIL/SKIP и STOP; при изменении ELF или сценария пересоберите комплект. | Раздельные попытки, сводка цикла и review.json для агента; исходный проект на стенде не обязателен. |
develop | Для изменения прошивки с обратной связью от схемы. Дайте требование, исходники, описание стенда и бюджет итераций; фиксируйте план и исходный FAIL до исправления. | Требование → исходный дефект → исправление → тот же сценарий и повтор. Не скрывать retry через reset и не подгонять временные опоры по желаемому результату. |
hse-qualify | Дайте номинал, допуск, плату и разрешённые воздействия; обоснуйте точность часов до аппаратного измерения. | Интервал частоты, IN_TOLERANCE/OUT_OF_TOLERANCE/UNKNOWN, отдельный исход восстановления и границы эпохи. |
Типовые маршруты
без платы: требования, сценариинастройка, эмуляторработа с платойразбор результатов
Новый проект
Требования и тест-кейсы → подключение модуля → сценарии → прогон → разбор.
Доработка прошивки
develop на каждом шаге использует scenarios, run и results: исходный FAIL фиксируется до исправления, после — регрессия.
Временно́е требование
Настройку периферии проверяют MMIO и SVD, анализатор измеряет вывод без остановки ядра, results сводит оба свидетельства. Частота кварца — отдельный маршрут hse-qualify.
Поведение в работе
Сценарий DDTT подводит плату к состоянию и проверяет переходы, запись по SWD или в ROS1 пишет поток; запись лежит рядом с result.json под тем же ID.
Без платы → на плату
Короткий опыт и границы модели в Renode или QEMU, затем тот же сценарий на стенде.
Диагностический канал
RTT или SWO показывают, что прошивка делает между остановками; сценарий DDTT они не заменяют, но помогают объяснить FAIL.
Автономный стенд
Конечные циклы неизменного комплекта, разбор попыток; найденная проблема — отдельный цикл develop.
Навыки модуля
Каждый навык — каталог с SKILL.md в формате Agent Skills; версия навыка совпадает с версией модуля.
Навыки-спутники
Из demo-stm32-skills: требования, эмуляторы, наблюдение без остановки ядра, сигналы на выводах.