Экспорт потока трассировки BMC через Trace32

#performancecounter #trace #trace32 #lauterbach

#счетчик производительности #трассировка #trace32 #lauterbach

Вопрос:

Я работаю с двумя платформами HW, которые включают два процессора ARM:

  • Cortex-A15 и
  • Cortex-R5.

Я хотел бы экспортировать через Lauterbach Trace32 смешанную трассировку, состоящую из потока программы и значений BMC (счетчики тестов / счетчики производительности). Чтобы прояснить мои намерения, я привожу следующий синтетический пример:

 Instruction | Cache Misses | ... |
------------ -------------- ------
 0x1234     | 1            | 0
 0x1235     | 1            | 0
 0x1236     | 2            | 0 
  

Я попытался использовать следующие команды для правильной настройки трассировщика:

 bmc.PMN0 DCMISS
bmc.export ON
bmc.trace ON
bmc.select PMN0
  

К сожалению, я не могу экспортировать трассировку, содержащую установленный мною BMC.
Я уже пробовал использовать некоторые trace.export команды, но у меня так и не получилось.

Кто-нибудь знает, как создать такую трассировку? Спасибо.

Комментарии:

1. Вы уверены, что ваш SoC действительно способен каким-то образом экспортировать значения счетчиков производительности в CoreSight ATB? Насколько я знаю, некоторые чипы Cortex-M могут делать это через STM, но я не думаю, что это физически возможно с Cortex-A.

2. Что вы всегда можете сделать, так это использовать SNOOPer для выборки значений BMC.

3. Я не уверен, я полагаюсь на то, что написано в Lauterbach [руководство по отладке ARM] (documenthttp: //www2.lauterbach.com/pdf/debugger_arm.pdf) . В документе сообщается: «Счетчики ядер Cortex-A / R могут быть считаны во время выполнения»..

Ответ №1:

На Cortex-A и Cortex-R счетчики производительности (он же. «Счетчики контрольных показателей (BMC)») обычно не могут быть переданы через CoreSight trace.
(Кстати.: Некоторые Cortex-M могут экспортировать BMC через CoreSight ITM. Список этих процессоров приведен в этой таблице, столбец DWT).

Однако счетчики производительности могут считываться во время выполнения, что позволяет выполнять выборку их значений во время выполнения.

Для выборки счетчиков производительности во время выполнения включите программу отслеживания с помощью SNOOP.OFF и SNOOP.AutoArm ON и выберите счетчики BMC с помощью SNOOPer.Mode BMC . Просмотрите результаты с помощью SNOOPer.List .

Чтобы сохранить результаты на жесткий диск для последующего анализа, вы можете использовать SNOOPer.SAVE * и повторно загрузить его позже с помощью SNOOPer.LOAD *

Комментарии:

1. Спасибо за ответ. Что вы думаете о событиях шины (EVNTBUSm)? Не могу ли я отслеживать эти события по шине?

2. Я не совсем уверен, но я думаю, что вы можете записывать эти события с помощью ETMv4 (который используется на Cortex-A15), но не с помощью ETMv3 (который используется на Cortex-R5). Возможно, вам следует обратиться в службу поддержки Lauterbach по этому поводу.

3. Спасибо, я собираюсь отметить ваш ответ как тот, который «решил» мою проблему. Я также собираюсь добавить ссылку в ваш ответ, которая может быть полезна кому-то еще в будущем.