【问题标题】:trace32 correlate function and data trace timestampstrace32 关联函数和数据跟踪时间戳
【发布时间】:2019-11-11 14:16:57
【问题描述】:

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

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

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

还有其他人结合使用这两个导出吗?有没有其他方法可以获取使用转换为格式的“当前时间”,反之亦然?还是我使用了错误的出口?我还没有找到任何其他好的导出命令,但是有很多我可能会错过一个明显的。

【问题讨论】:

    标签: embedded trace32 lauterbach


    【解决方案1】:

    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   
    

    【讨论】:

    • 谢谢,这正是我想要的!我将确保使用 Trace.EXPORT.Ascii 进一步挖掘;过滤似乎很强大,所以我可以处理更多的事情。
    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多