如何在OpenOCD中通过变量值设置寄存器
如何通过变量设置OpenOCD寄存器值?
想要通过变量设置寄存器值(以栈指针sp为例,该方法适用于任意寄存器),OpenOCD中可使用set_reg命令设置寄存器值。
直接传入具体值时可正常运行:
> set_reg {sp 0x1337} > get_reg sp sp 0x1337
但尝试通过变量设置时无法正常生效:
> set new_sp 0x1337 > echo $new_sp 0x1337 > set_reg {sp $new_sp} > get_reg sp sp 0x00001337
解决方法
问题根源在于使用大括号{}包裹参数时,OpenOCD会阻止变量解析,$new_sp会被当作字面量处理。可以通过两种方式解决:
去掉大括号,直接用空格分隔参数:
> set new_sp 0x1337 > set_reg sp $new_sp > get_reg sp sp 0x1337用双引号
""代替大括号:双引号允许变量替换,同时保留参数的整体结构:> set new_sp 0x1337 > set_reg "sp $new_sp" > get_reg sp sp 0x1337
内容的提问来源于stack exchange,提问作者Heneer
相关产品推荐
相关产品推荐

