JTAG脚本:如何在JTAG脚本语言中使用类似变量的结构

时间:2017-04-27 20:15:34

标签: scripting command jtag trace32

我正在尝试访问这样的结构数组(C等效)

Struct register
{
  int addr;
  int val;
}reg[100];

for(i=0;i<100;i++)
   Print reg[i].addr

如何用Jtag脚本语言实现这一目标?

1 个答案:

答案 0 :(得分:1)

我假设您正在讨论Lauterbach的TRACE32调试器的PRACTICE脚本语言。

在PRACTICE脚本语言中,您可以通过函数Var.VALUE(<hll-expression>)访问任何C / C ++语言构造,其中&lt; hll-expression&gt; 是任何有效的C / C ++表达式返回单个值。 (hll-expression基本上是你可以在调试器监视窗口(Var.Watch)中显示的所有内容。)

例如:如果您想要从数组val的第3个元素访问reg,您可以在C中使用表达式reg[2].val。因此,在实践中,您可以&#39 ;我会这样做:

PRVIATE &x                     // Create local macro on PRACTICE stack
&x=Var.VALUE(reg[2].val)       // Get element 'val' from 3rd element of 'reg'`
PRINT "Result: " %Decimal &x   // Print result to AREA window

要打印整个数组的所有地址,请写下类似的内容:

Var.NEWLOCAL int \i=0  // Create artificial HLL variable on PRACTICE stack 
Var.WHILE \i<(sizeof(reg)/sizeof(reg[0]))
(
  PRINT %Decimal Var.VALUE(reg[\i].addr) 
  Var.ASSIGN \i++
)