通过 Trace32 导出 BMC 跟踪流

Exporting BMC trace flow via Trace32

我正在使用两个包含两个 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 Counters (BMC)")通常无法通过 CoreSight 跟踪传输。
(顺便说一句:某些 Cortex-M 可以导出通过 CoreSight ITM 的 BMC。这些处理器的列表在此 table,DWT 列中列出。

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

要在 运行 时间内对性能计数器进行采样,请使用 SNOOP.OFFSNOOP.AutoArm ON 启用 SNOOPer,并 select 使用 SNOOPer.Mode BMC 启用 BMC 计数器。使用 SNOOPer.List 查看结果。

要将结果保存到硬盘以供以后分析,您可以使用 SNOOPer.SAVE * 并稍后使用 SNOOPer.LOAD *

重新加载