问题描述
我在玩蓝色药丸(Stm32F103CB),并试图通过汇编设置r7寄存器,
.Syntax unified
.cpu cortex-m3
.fpu softvfp
.thumb
.global vtable
.global reset_handler
.type vtable,%object
vtable:
.word _estack
.word reset_handler
.size vtable,.-vtable
.type reset_handler,%function
reset_handler:
LDR r0,=_estack
MOV sp,r0
LDR r7,=0xDEADBEEF
.size reset_handler,.-reset_handler
错误是,当我通过gdb-> info寄存器观察寄存器值时,看到的是 r8 寄存器组,而不是 r7 ,如下图所示。 / p>
objdump精灵的反汇编也似乎是正确的。
我无法理解为什么会这样,在多块板上尝试了相同的方法,我该如何调试和解决此问题。
谢谢。
解决方法
好的,所以我做了一些进一步的测试。
此开源stlink gdb服务器存在问题:
https://github.com/stlink-org/stlink
由于某种原因,所有寄存器都被编号为r#+ 1,甚至sp值也显示为lr。
我尝试用openocd代替,一切正常。
https://repo.or.cz/w/openocd.git
为此将在stlink-org存储库中举一张票。