我正在使用两个包含两个ARM处理器的硬件平台:
我想通过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上,性能计数器(又称“BenchMark计数器(BMC)”)通常不能通过CoreSight跟踪传输。 (顺便说一句:某些Cortex-M可以通过CoreSight ITM导出BMC。这个处理器的列表列在这个table,DWT专栏中)。
但是,可以在运行时读取性能计数器,这样可以在运行时对其值进行采样。
要在运行期间对性能计数器进行采样,请使用SNOOP.OFF
和SNOOP.AutoArm ON
启用SNOOPer,并使用SNOOPer.Mode BMC
选择BMC计数器。使用SNOOPer.List
查看结果。
要将结果保存到硬盘驱动器以供以后分析,您可以使用SNOOPer.SAVE *
并稍后使用SNOOPer.LOAD *
重新加载它