玩ARM也有段时间了,配置编译环境是KEIL ,硬件LPC2214,自己做的板子,在调试时遇到如下问题:代码下载后点击运行,完全正常,但断电或复位后,就会再也不运行了,这样实在是麻烦得很。
启动代码是默认的startup.s,原来,解决这个问题的办法很简单,看keil 中启动源代码:
Vectors: LDR PC,Reset_Addr
LDR PC,Undef_Addr
LDR PC,SWI_Addr
LDR PC,PAbt_Addr
LDR PC,DAbt_Addr
NOP /* Reserved Vector */
LDR PC,IRQ_Addr
LDR PC,FIQ_Addr
问题就出在这,反汇编后,这几句话的pc值相加不为0,所以下载的代码就无效了,解决办法是改动如下;
Vectors: LDR PC,Reset_Addr
LDR PC,Undef_Addr
LDR PC,SWI_Addr
LDR PC,PAbt_Addr
LDR PC,DAbt_Addr
dcd 0xb9205f80
; NOP /* Reserved Vector */
LDR PC,IRQ_Addr
LDR PC,FIQ_Addr
这样改过后,复位或重新上电后,正确的代码马上运行,当然,因为keil是不允许改动该文件的,每次新建工程后改一下就可以了
文章评论(0条评论)
登录后参与讨论