如何通过cmm脚本从TRACE32应用程序的“状态行”中获取数据?

时间:2019-03-07 12:03:38

标签: trace32 lauterbach

T32应用程序底部的状态行输出错误消息,例如致命错误,链接错误等。它由多个字段组成,例如光标,模式,...

请参阅http://www2.lauterbach.com/pdf/ide_user.pdf第23页上的“状态行”

我需要在打开t32应用后获取状态,并基于此状态执行某些操作。所以,请让我知道。

2 个答案:

答案 0 :(得分:0)

要从PRACTICE脚本(也称为“ cmm-script”)获取有关目标和/或调试器状态的详细信息,请使用PRACTICE函数。这些功能在http://www.lauterbach.com/pdf/ide_func.pdfhttp://www.lauterbach.com/pdf/general_func.pdf中进行了描述。 (您正在寻找的东西在general_func.pdf中)

以下是从状态行返回值的函数:

  • 左上角的地址通常是程序计数器。您可以使用函数PP()和带有sYmbol.NAME(PP())的程序计数器旁边的符号来获取它。
  • 如果单击带有关联地址的项目,状态行将显示该地址而不是程序计数器。您将使用TRACK.ADDRESS()获取最后选择的地址,并使用sYmbol.NAME(TRACK.ADDRESS())
  • 获取其符号。
  • 如果您有SMP多核方案,则下一个字段是核心编号。它显示了当前选择的逻辑核心。您可以使用函数CORE()获取该号码。
  • 如果您具有活动的OS意识,则下一个字段将显示活动的任务。您可以通过函数TASK()获得其名称。
  • “调试”字段有点棘手。我认为没有函数可以直接返回该字符串。但是,SYStem.Up()在“系统故障”的情况下返回FALSE(这意味着调试器未连接到您的目标核心),并且STATE.RUN()如果目标核心正在运行,则返回TRUE。
  • “调试”旁边的字段显示跟踪记录器的状态。您可以使用Trace.STATE()将状态作为数值输入。
  • 有一个小字段,称为“调试器活动”。如果调试器执行了一些未明确请求的运行/停止活动,则为红色。例如。临时停止以更新内存转储,或者在目标硬件上执行一些算法以进行闪存编程或用户定义的内存访问时。不幸的是,似乎没有任何功能可以获取此状态。
  • 最后一个字段之前的字段显示调试模式,该模式设置为“汇编器”,“高级语言”或带有汇编器和HLL的混合模式。所示字符串也可以通过DEBUGMODE()使用。
  • 最后一个字段显示系统模式。相关功能为SYStem.MODE()SYStem.Up()

“应用程序输出,错误消息,致命错误”之类的消息未显示在“状态行”中,而是在“ 消息行”中:在TRACE32主窗口的底部,您可以看到命令行(通常以B ::开头),在其下方是“消息行”(显示错误和其他消息),在Sofkeys(帮助您查找命令)下方,最后是“状态线”。

“消息行”中显示的几乎所有消息也都显示在“区域”窗口中。 (命令AREA)。您可以使用函数 AREA.LINE(A000,0) 获得AREA窗口的最后一行,其中“ A000”是默认AREA的名称,0表示该区域的最后一行。

答案 1 :(得分:0)

要将调试字段值保存在 cmm 文件中的变量中,请使用以下命令:

&temp=STATE.TARGET()

此命令将保存在调试字段中显示的当前状态。