Performancecounter 通过Trace32导出BMC跟踪流

Performancecounter 通过Trace32导出BMC跟踪流,performancecounter,trace,trace32,lauterbach,Performancecounter,Trace,Trace32,Lauterbach,我正在使用两个硬件平台,其中包括两个ARM处理器: 皮质-A15和 皮质-R5 我想通过Lauterbach Trace32导出由程序流和BMC值(基准计数器/性能计数器)组成的混合跟踪。为了阐明我的意图,我提供了以下综合示例: Instruction | Cache Misses | ... | ------------+--------------+------ 0x1234 | 1 | 0 0x1235 | 1 | 0

我正在使用两个硬件平台,其中包括两个ARM处理器:

  • 皮质-A15和
  • 皮质-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
命令,但从未成功


有人知道如何产生这样的痕迹吗?谢谢。

在Cortex-A和Cortex-R上,性能计数器(也称为“基准计数器(BMC)”)通常不能通过CoreSight跟踪传输。
(顺便说一句:一些Cortex-M可以通过CoreSight ITM导出BMC。这些处理器的列表列在DWT列中)

但是,性能计数器可以在运行时读取,这允许在运行时对其值进行采样

要在运行时对性能计数器进行采样,请在
SNOOP.OFF
SNOOP.AutoArm打开的情况下启用SNOOPer,并在
SNOOPer.Mode BMC
的情况下选择BMC计数器。使用
SNOOPer.List
查看结果


要将结果保存到硬盘以供以后分析,您可以使用
SNOOPer.save*
,然后使用
SNOOPer.load*

重新加载它。您确定SoC确实能够以某种方式将性能计数器的值导出到CoreSight ATB吗?据我所知,一些Cortex-M芯片可以通过STM实现这一点,但我认为Cortex-A在物理上不可能实现这一点。你总是可以使用SNOOPer对BMC值进行采样。我不确定,我依靠的是Lauterbach[ARM调试器手册](documenthttp://www2.lauterbach.com/pdf/debugger_arm.pdf) . 该文件报告:“Cortex-A/R内核的计数器可以在运行时读取。”。感谢您的回答。您如何看待总线事件(EVNTBUSm)?我不能跟踪总线上的这些事件吗?我不完全确定,但我认为你可以用ETMv4(用于Cortex-A15)记录这些事件,但不能用ETMv3(用于Cortex-R5)记录这些事件。也许你应该就此联系Lauterbach支持部门。谢谢,我将把你的答案标记为“解决”我的问题的答案。我还将在你的答案中添加一个链接,这可能对将来的其他人有所帮助。