一个简单的裸机点亮一个LED灯的程序
AREA init, CODE, READONLY
ENTRY
mov sp, #0x33000000
ldr r0, =0x56000010
ldr r1, =0x56000014
mov r2, #0x00000001
mov r3, r2, lsl#10
str r3, [r0] ;以上初始化数据
mov r3, #0x00000020
str r3, [r1] ;LED灯息灭
bl delay ;一个不能返回的子程序
loop
mov r3, #0x00000000
str r3, [r1] ;LED灯点亮
b loop
delay
stmfd sp!, {lr}
ldmfd sp!, {pc}
end
delay用stmfd把lr的返回地址放入栈,再用ldmfd把地址弹回PC,但不能返回到主程序
把程序用a烧入nand区,关机重启,LED1不亮
但用d载到内存运行,LED1却能点亮
不知道这是为什么