1

我有一个带有代码的嵌入式系统,我想对其进行基准测试。在这种情况下,有一行我想知道花费的时间(它是创建一个启动我们应用程序其余部分的新对象)。

我可以打开 Trace->Chart->Symbols 并查看用我的光标选择的区域所花费的时间,但这很麻烦而且不像我想要的那样准确。我还找到了 Perf->Function Runtime,但我正在对新对象的分配进行基准测试,而不是任何特定的函数调用(new在多个地方调用,而不仅仅是感兴趣的行)。

有没有办法使用 Trace32 查看一行代码所花费的真实时间?比单行更进一步:有没有一种方法可以轻松地对两个断点之间的时间进行基准测试?

4

2 回答 2

4

如果您没有实时跟踪,使用命令的codehearts 解决方案就可以了。RunTime它适用于任何 Lauterbach 工具和任何目标 CPU。

但是,如果您有实时跟踪(例如带有 ETM 和 Lauterbach PowerTrace hardare 的 CPU),我建议改用该命令Trace.STATistic.AddressDURation <start-addr> <end-addr>。此命令打开一个窗口,显示两个地址之间的平均时间。如果您多次执行两个地址之间的代码,您将获得最佳结果。

如果您使用支持周期精确时序信息的 ARM Cortex CPU(通常所有 Cortex-A、Cortex-R 和 Cortex-M7),您可以通过使用设置ETM.TImeMode.CycleAccurate(与 一起ETM.CLOCK <core-frequency>)显着提高结果的准确性。

如果您使用的是 Lauterbach CombiProbe 或 uTrace(并且您不能使用ETM.TImeMode.CycleAccurate),我推荐设置Trace.PortFilter.ON。(默认情况下,端口过滤器设置为 PACK,这允许记录更多数据和程序流,但时序精度稍差。)

于 2017-05-29T15:14:59.227 回答
0

打开 Misc->Runtime 窗口会显示自“laststart”以来的总时间。通过在代码块的第一行设置断点并在最后一行之后设置另一个断点,您可以在“实际”列下查看从第一个断点到第二个断点所用的时间。

于 2017-05-23T22:32:41.130 回答