电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

arm 代码下载后是否有效的对策

玩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是不允许改动该文件的,每次新建工程后改一下就可以了

博主
hanliu
hanliu's Blog
驱动人生