Да, архитектура CoreSight и трассировка ETM предназначены для такого рода анализа сбоев, особенно в системах реального времени, где сбои могут быть трудно воспроизвести, и вы не сможете подключить целевое устройствок внешнему устройству захвата отладки все время. Трассировка ETM может быть полностью незаметной (за исключением дополнительных затрат на энергопотребление при активной логике).
Архитектура довольно общая, хотя каждая реализация будет иметь различные компромиссы в отношении того, что реализовано. К сожалению, это означает, что документация довольно распространена. Возможно, этот технический обзор полезен для контекста (но не для подробностей).
Чтобы выполнить анализ сбоя, вам необходимо выполнить следующие шаги:
Настройка ETF в режиме циклического буфера
Настройка ETM для отслеживания всего с довольно частой синхронизацией
Отключение ETM после сбоя(поэтому буфер не перезаписывается)
Извлечение трассы из-за сбоя (например, на SD-карту)
Распаковка любого протокола упаковкидобавлено ETF
Распаковать трассировку (предположительно в автономном режиме)
При использовании циклического буфера декомпрессия трассы может начаться только с точки синхронизации. Протокол ETMv4 использует пакеты переменной длины и редко отслеживает полное значение адреса ПК. Возможно, вы захотите 4 точки синхронизации в буфере, тогда будут потеряны только первые 25%.
Распаковка трассировки зависит от наличия запущенного образа кода - это не должно быть слишком большой проблемой в этом использованииcase.
Если вы не можете буферизовать достаточно далеко после сбоя, можно использовать логику фильтрации в ETM, чтобы исключить любой код, который вам не интересен. В зависимости от характера любого сбоя может потребоваться информация о времени. Вы можете установить это с пороговым значением, чтобы получать отметку каждые 100 циклов или около того - точность трассировки для стоимости, но это может быть отличной подсказкой.
Для программирования ETM вам понадобится Архитектура ETMv4 (она использует компараторы DWT в качестве «входов компаратора процессора», если вам нужна фильтрация), и для ETF, я думаю, это будет техническое справочное руководство . Проверьте part_number в регистрах идентификаторов периферийных устройств, чтобы убедиться, что у вас есть подходящая модель программиста.