大家好:
我的项目用norflash的ffast external booting启动(non-muxed模式),目前在调试u-boot(u-boot-2013.01.01-psp06.00.00.00)遇到一个问题,每次JTAG单步调试到serial_init()就跳出走不下去。
int serial_init(void)
{
return get_current()->start();
}
具体走到start()后直接就跳到如下汇编函数中,就在红色标出的代码死循环了,出不去了,也就是在0x08000010、0x08000320、0x08000324三个地址死循环了,
不知是由于堆栈原因还是哪里的原因,请教大家一下,谢谢!
单步调试图:
...........
08000324: E58DE000 STR R14, [R13]
08000328: E14FE000 MRS R14, SPSR
0800032c: E58DE004 STR R14, [R13, #4]
08000330: E3A0D013 MOV R13, #19
08000334: E169F00D MSR SPSR_cf, R13
对应汇编函数为:
.macro get_bad_stack
ldr r13, IRQ_STACK_START_IN @ setup our mode stack (enter in banked mode)
str lr, [r13] @ save caller lr in position 0 of saved stack
mrs lr, spsr @ get the spsr
str lr, [r13, #4] @ save spsr in position 1 of saved stack
mov r13, #MODE_SVC @ prepare SVC-Mode msr spsr_c, r13
msr spsr, r13 @ switch modes, make sure moves will execute
mov lr, pc @ capture return pc
movs pc, lr @ jump to next instruction & switch modes.
.endm