Использовать встроенный буфер трассировки (ETB) на STM32H7 - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно вывести трассировку выполнения буфера на кристалле (ETB) в некоторых особых случаях. Я говорю о функциональной функциональности, а не о трассировке ETM на этапе отладки.

Я прочитал Техническое справочное руководство по Arm® CoreSight ™ ETM-M7 , но подробностей об использовании этой функции ETB почти нет.

Существует также эта ссылка в Информационном центре ARM, но я нашел ее особенно неясной.

Как я могу использовать ETB?

РЕДАКТИРОВАТЬ: Iнемного прояснил ситуацию благодаря презентации от STMicro. В нем говорится, что « ETF может использоваться в качестве буфера трассировки для хранения трасс на чипе. Трасса может быть прочитана программным обеспечением или отладчиком, или сброшена через порт трассировки. Если конфигурируется как кольцевой буфер, трассировкабудет храниться непрерывно, поэтому самая последняя трассировка будет перезаписывать самую старую. В качестве альтернативы можно использовать флаг FIFO full, чтобы остановить трассировку, когда буфер заполнен, и, следовательно, перехватить трассу в определенный момент времени . "Так что мне нужен доступ не к ETB, а к ETF, что делается через регистр (FIFO, очевидно, не отображен в память?)

Ответы [ 2 ]

3 голосов
/ 09 октября 2019

Да, архитектура CoreSight и трассировка ETM предназначены для такого рода анализа сбоев, особенно в системах реального времени, где сбои могут быть трудно воспроизвести, и вы не сможете подключить целевое устройствок внешнему устройству захвата отладки все время. Трассировка ETM может быть полностью незаметной (за исключением дополнительных затрат на энергопотребление при активной логике).

Архитектура довольно общая, хотя каждая реализация будет иметь различные компромиссы в отношении того, что реализовано. К сожалению, это означает, что документация довольно распространена. Возможно, этот технический обзор полезен для контекста (но не для подробностей).

Чтобы выполнить анализ сбоя, вам необходимо выполнить следующие шаги:

  1. Настройка ETF в режиме циклического буфера

  2. Настройка ETM для отслеживания всего с довольно частой синхронизацией

  3. Отключение ETM после сбоя(поэтому буфер не перезаписывается)

  4. Извлечение трассы из-за сбоя (например, на SD-карту)

  5. Распаковка любого протокола упаковкидобавлено ETF

  6. Распаковать трассировку (предположительно в автономном режиме)

При использовании циклического буфера декомпрессия трассы может начаться только с точки синхронизации. Протокол ETMv4 использует пакеты переменной длины и редко отслеживает полное значение адреса ПК. Возможно, вы захотите 4 точки синхронизации в буфере, тогда будут потеряны только первые 25%.

Распаковка трассировки зависит от наличия запущенного образа кода - это не должно быть слишком большой проблемой в этом использованииcase.

Если вы не можете буферизовать достаточно далеко после сбоя, можно использовать логику фильтрации в ETM, чтобы исключить любой код, который вам не интересен. В зависимости от характера любого сбоя может потребоваться информация о времени. Вы можете установить это с пороговым значением, чтобы получать отметку каждые 100 циклов или около того - точность трассировки для стоимости, но это может быть отличной подсказкой.

Для программирования ETM вам понадобится Архитектура ETMv4 (она использует компараторы DWT в качестве «входов компаратора процессора», если вам нужна фильтрация), и для ETF, я думаю, это будет техническое справочное руководство . Проверьте part_number в регистрах идентификаторов периферийных устройств, чтобы убедиться, что у вас есть подходящая модель программиста.

0 голосов
/ 03 октября 2019

Обычно вы используете ETB с аппаратным отладчиком, который поддерживает ETB, например, Segger J-Trace или Keil uLinkPro . Обычно поставщик инструментов беспокоится и не может напрямую использоваться в вашем приложении.

Необходимые выводы трассировки (от TRACED0 до TRACED3 и TRACECLK) должны быть доступны в заголовке отладки, а не мультиплексированы для некоторыхдругая функция по вашему приложению.

Справочные руководства по STM32H7 содержат целый раздел «Подсистема трассировки и отладки» (вы не указали точную часть, поэтому вам придется найти ее самостоятельно). Но в RM0399 для STM32H745 / 755 и STM32H747 / 757 я смотрю, что он занимает более 100 страниц руководства.

...