|  | 
 
| 我用汇编编写一个跳马灯裸奔程序,完全按教程进行设置,用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
 | 
 
×本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?注册  |