【问题标题】:Exporting BMC trace flow via Trace32通过 Trace32 导出 BMC 跟踪流
【发布时间】:2019-03-28 15:31:18
【问题描述】:

我正在使用包含两个 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 命令,但从未成功。

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

【问题讨论】:

  • 您确定您的 SoC 实际上能够以某种方式将性能计数器的值导出到 CoreSight ATB?据我所知,一些 Cortex-M 芯片可以通过 STM 做到这一点,但我不认为 Cortex-A 在物理上是可行的。
  • 您总是可以使用 SNOOPer 对 BMC 值进行采样。
  • 我不确定,我依赖于 Lauterbach [ARM 调试器手册](documenthttp://www2.lauterbach.com/pdf/debugger_arm.pdf) 中所写的内容。文档报告:“Cortex-A/R 内核的计数器可以在运行时读取。”。

标签: performancecounter trace trace32 lauterbach


【解决方案1】:

在 Cortex-A 和 Cortex-R 上,性能计数器(又名“基准计数器 (BMC)”)通常无法通过 CoreSight 跟踪传输。
(顺便说一句:某些 Cortex-M 可以通过以下方式导出 BMC CoreSight ITM。table,DWT 列中列出了这些处理器的列表。

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

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

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

【讨论】:

  • 感谢您的回答。您如何看待总线事件 (EVNTBUSm)?我不能追踪这些事件追踪总线吗?
  • 我不完全确定,但我认为您可以使用 ETMv4(用于 Cortex-A15)但不能使用 ETMv3(用于 Cortex-R5)记录这些事件。或许您应该就此联系劳特巴赫支持部门。
  • 谢谢,我会将您的答案标记为“解决”我的问题的答案。我还将在您的答案中添加一个链接,将来可能对其他人有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
相关资源
最近更新 更多