注意:开发环境不同,启动代码不同…
今天一直纠结于程序老是出问题,就是拿别人的源码直接编译还是出问题,现在终于明白,开发环境不同启动代码也不同,在网上下载个源码启动代码如下:
ldr r0,
=0x70000000
orr r0, r0, #0x13
mcr p15,0,r0,c15,c2,4
@
256M(0x70000000-0x7fffffff)
END
.globl _start
_start:
ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
ldr sp, =8*1024
mov r0, #9
bl xxxxx
halt:
b halt
此源码我直接在RVDS开发环境下运行还是出错了,以前老是以为自己编写格式出错了,弄了好久都没弄明白,在群众和别人交流之中才了解到错误的原因,最终根源在于开发环境不同,在rvds下应该如下:
(PRESERVE8)
IMPORT main
AREA init,CODE,READONLY
ENTRY
CODE32
START
ldr r0,=0x70000000
orr r0,r0,#0x13
mcr p15,0,r0,c15,c2,4
ldr r0,=0x7E004000
mov r1,#0
str r1,[r0]
ldr sp,=8*1024
bl main
这里需要注意如果你的rvds(ADS)是1.x版本括号里面的那条伪指令不要,如果是2.x高版本就必须要有PRESERVE8这条伪指令,否则会报错的。