|
我用汇编编写一个跳马灯裸奔程序,完全按教程进行设置,用7下载到SDRAM中完全能正常运行,并通过JLINK调试,其地址从0x30000000运行,但用A命令下载到NAND中就无法运行了,最先以为是地址不一致引起的,故重新设置地址为0x0,但用JLINK调试时全是乱码,下载到NAND中也无法正常运行。我的程序很小,才几百个字节,就是简单设置GPB5-GPB8输出低电平,点亮LED灯,望大侠指点一二。
area Init,code,readonly
entry
GPBCON EQU 0x56000010 ;Port B control
GPBDAT EQU 0x56000014 ;Port B data
GPBUP EQU 0x56000018 ;Pull-up control B
GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
INTMSK EQU 0x4a000008 ;Interrupt mask control
INTSUBMSK EQU 0x4a00001c ;Interrupt sub mask
WTCON EQU 0x53000000 ;Watch-dog timer mode
WTDAT EQU 0x53000004 ;Watch-dog timer data
WTCNT EQU 0x53000008 ;Eatch-dog timer count
start
ldr r0,=WTCON ;watch dog disable
ldr r1,=0x0
str r1,[r0]
ldr r0,=INTMSK
ldr r1,=0xffffffff ;all interrupt disable
str r1,[r0]
ldr r0,=INTSUBMSK
ldr r1,=0x7fff ;all sub interrupt disable
str r1,[r0]
ldr r0,=GPBCON
ldr r1,=0x15400
str r1,[r0]
ldr r0,=GPBDAT
ldr r1,=0x140
str r1,[r0]
loop
mov r2,#0xf
ldr r0,=GPFDAT
ldr r1,[r0]
tst r1,#2 ;k1
andeq r2,r2,#0xe
tst r1,#0x10 ;k2
andeq r2,r2,#0xd
tst r1,#4 ;k3
andeq r2,r2,#0xb
tst r1,#1 ;k4
andeq r2,r2,#7
mov r1,r2,lsl#5
ldr r0,=GPBDAT
str r1,[r0]
ldr r2,=0x03000000
loop1
sub r2,r2,#1
cmp r2,#0
bne loop1
ldr r1,=0x1c0 ;led1
str r1,[r0]
ldr r2,=0x03000000
loop2
sub r2,r2,#1
cmp r2,#0
bne loop2
ldr r1,=0x1a0 ;led2
str r1,[r0]
ldr r2,=0x03000000
loop3
sub r2,r2,#1
cmp r2,#0
bne loop3
ldr r1,=0x160 ;led3
str r1,[r0]
ldr r2,=0x03000000
loop4
sub r2,r2,#1
cmp r2,#0
bne loop4
ldr r1,=0x0e0 ;led4
str r1,[r0]
ldr r2,=0x03000000
loop5
sub r2,r2,#1
cmp r2,#0
bne loop5
b loop
end |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|