trace32将函数和数据跟踪时间戳相关联

使用Trace32(当前处于仿真模式,但也会使用真实的硬件),我正在运行演示程序。我想跟踪两个函数调用变量(数据跟踪),所以当我中断时,运行以下命令:

trace.EXPORT.CSVFunc <funcfile>
PRINTER.FILE <varfile>
WinPrint.Trace.ListVar %hex var1 var2 var3

这将产生两个结果文件。第一个函数调用包含正时间戳(以ns分辨率表示)。第二个具有数据访问权限(读和写),但其中包含负时间戳(分辨率为100 ns)。 到目前为止,我还没有找到为任何一种出口生成不同时间戳的任何方法,并且我也无法以任何方式关联时间。如果我假设距我最后一行的时间戳记与0的时间相同,那么我将从那里得到正确的时间戳大小,但它们之间的距离仍然太大。我从代码中知道某些写入更新介于特定的函数进入/退出之间,因此我可以看到它已关闭。

还有其他人结合使用这两种出口吗?是否还有其他方法可以获取已转换格式的“当前时间”,反之亦然?还是我使用了错误的出口?我还没有找到其他好的导出命令,但是有太多的我可能会遗漏一个显而易见的命令。

taisen518 回答:trace32将函数和数据跟踪时间戳相关联

Trace.EXPORT.CSVFunc 始终导出每个函数条目的时间,并且自第一个跟踪记录以来以经过的纳秒为单位存在。 (因此对于Trace.EXPORT.CSVFunc,第一条记录始终具有时间戳0.ns。)

默认情况下,窗口 Trace.ListVar 显示自上次读取或写入访问以来经过的时间。幸运的是,您可以通过选项/ List指定想要在该窗口中包含哪些列。因此,以下命令显示的内容与普通的Trace.ListVar窗口相同,但具有绝对时间戳:

Trace.ListVar /List Run Address CYcle Data Var %TimeFixed TIme.Zero 

在导出该数据之前,使用命令Trace.ZERO Trace.FIRST()将第一条记录的绝对时间戳设置为零,您将获得与Trace.EXPORT.CSVFunc相同的时间戳

放在一起:

Trace.ZERO Trace.FIRST()    
Trace.EXPORT.CSVFunc <funcfile>
PRinTer.FILE <varfile>
WinPrint.Trace.ListVar %Hex var1 var2 var3 /List Run Address CYcle Data Var %TimeFixed TIme.Zero 

也许您还想考虑命令 Trace.EXPORT.Ascii ,这是我个人最喜欢的命令。该导出命令的工作原理与 Trace.List 窗口几乎相同,但还支持过滤器。所以例如导出对您可以编写的三个变量的访问权限

Trace.EXPORT.Ascii <varfile> CYcle Address Data Var %TimeFixed TIme.Zero /FILTER Address var1 OR Address var2 OR Address var3   
本文链接:https://www.f2er.com/3123578.html

大家都在问