embedded - trace32 关联函数和数据跟踪时间戳
问题描述
使用 Trace32(目前处于仿真模式,但也将使用真实硬件)我正在运行一个演示程序。我想跟踪函数调用和变量(数据跟踪),所以当我中断时,我运行以下命令:
trace.EXPORT.CSVFunc <funcfile>
PRINTER.FILE <varfile>
WinPrint.Trace.ListVar %hex var1 var2 var3
这给出了两个结果文件。第一个函数调用包含正时间戳(以 ns 分辨率)。第二个具有数据访问(读取和写入),但这包含负时间戳(分辨率为 100 ns)。到目前为止,我还没有找到为任何一个导出生成不同时间戳的任何方法,我也无法以任何方式关联时间。如果我假设我的最后一行的时间戳与 0 时间相同,我会从 得到正确的时间戳大小,但它们仍然相差太多。我从代码中知道某些写入更新位于特定函数进入/退出之间,因此我可以看到它已关闭。
其他人结合使用这两个出口?有没有其他方法可以获取使用转换为格式的“当前时间”,反之亦然?还是我使用了错误的出口?我还没有找到任何其他好的导出命令,但是有很多我可能会错过一个明显的命令。
解决方案
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
推荐阅读
- ibm-cloud - Watson 可以触发基于 12 位模式的对话吗?
- android - 在列表视图中动态显示用户输入的项目
- c# - 连接语句中的子列表 - LINQ
- r - 如何从 R 数据框字符串列中提取数字向量并保存为带有向量的列(列表)
- javascript - 即使发生异常,如何继续异步外观?
- rest - 在日历事件中获取 MS 预订属性
- angularjs - 将变量传递给作为组件的模态
- sql - Oracle PLSQL 级联删除不起作用?
- node.js - 如何使用 Websocket 构建可扩展的实时聊天消息?
- rust - 如何将借来的值保存到 Rust 中的 struct 归档