首页 > 解决方案 > 将寄存器值读入变量 - 例如 pc 的控制位置

问题描述

目的是检查我的控制器是否停在正确的位置。

我正在使用 tcl 脚本。指令reg pc将寄存器的值输出pc到控制台。所以理论上,下面的命令应该在变量中存储一些东西。

set x [ reg pc ]

但结果变量x仍然为空。

如何检索寄存器的值并将其存储到变量中?

标签: tclopenocd

解决方案


有点棘手的事情。reg pc不返回任何东西......为什么还要它?^^会很有用-.-

但是,这个可以归功于邮件列表

set real_pc  [lindex [ocd_reg pc] 2]

# following executed returns the pc at (here) 0x1FC
ocd_reg pc
# returns: "pc (/32): 0x000001FC "

# Now I can check for my pc in tcl =)!
if { $expected_pc == $real_pc } { \
    echo "reg pc is correct! at $real_pc"
}

这在我看来就像字符串被分成 3 块。采用的是块 2,计数从 0 开始。在 tcl 中,一切都是字符串。所以这行得通!


推荐阅读