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

trace32 correlate function and data trace timestamps

使用 Trace32(目前处于模拟模式,但也将使用真实硬件)我正在 运行创建一个演示程序。我想跟踪两个函数调用 变量(数据跟踪),所以当我中断时我 运行 以下内容:

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

这给出了两个结果文件。第一个函数调用包括正时间戳(在 ns 分辨率中)。第二个具有数据访问(读取和写入),但它包含负时间戳(分辨率为 100 ns)。 到目前为止,我还没有找到任何方法为任何一个导出生成不同的时间戳,而且我也无法以任何方式关联时间。如果我假设我的最后一行的时间戳与 0 时间相同,我会从 获得正确的时间戳大小,但它们仍然相差太多。我从代码中知道某些写入更新在特定函数 entry/exit 之间,所以我可以看到它已关闭。

还有其他人结合使用过这两个出口吗?有没有其他方法可以将正在使用的 "current time" 转换为格式,反之亦然?还是我使用了错误的出口?我还没有找到任何其他好的导出命令,但有太多我可能会遗漏一个明显的命令。

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

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

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 window 相同,但还支持过滤器。所以例如导出对您可以编写的三个变量的访问

Trace.EXPORT.Ascii <varfile> CYcle Address Data Var %TimeFixed TIme.Zero /FILTER Address var1 OR Address var2 OR Address var3