本帖最后由 woshizuqiumi 于 2012-3-7 20:48 编辑
我现在也在看《手册》这本书,关于第六章SDRAM的使用,因为我是在windows操作系统下学,用的编译器是ADS1.2,所以我将书上的.s源码改了下,代码如下。为什么我在AXD中调试时,每次运行到copy_steppingstone_to_sdram函数里的循环中就会死机,AXD的进度条一直有动。直接下载到机子上可以正常运行的。
=====================================
=====================================
MEM_CTL_BASE EQU 0x48000000
SDRAM_BASE EQU 0x30000000
AREA Init,CODE,READONLY
ENTRY
IMPORT main
Start
bl disable_watch_dog
bl memsetup
bl copy_steppingstone_to_sdram
ldr pc,=on_sdram
on_sdram
ldr sp,=0x34000000
bl main
halt_loop
b halt_loop
disable_watch_dog
mov r1,#0x53000000
mov r2,#0x0
str r2,[r1]
mov pc,lr
copy_steppingstone_to_sdram
mov r1,#0
ldr r2,=SDRAM_BASE
mov r3,#4*1024
1
ldr r4,[r1],#4
str r4,[r2],#4
cmp r1,r3
bne %b1
mov pc,lr
memsetup
mov r1,#MEM_CTL_BASE
adrl r2,mem_cfg_val
add r3,r1,#52
1
ldr r4,[r2],#4
str r4,[r1],#4
cmp r1,r3
bne %b1
mov pc,lr
align
mem_cfg_val
DCD 0x22011110 ; BWSCON
DCD 0x00000700 ; BANKCON0
DCD 0x00000700 ; BANKCON1
DCD 0x00000700 ; BANKCON2
DCD 0x00000700 ; BANKCON3
DCD 0x00000700 ; BANKCON4
DCD 0x00000700 ; BANKCON5
DCD 0x00018005 ; BANKCON6
DCD 0x00018005 ; BANKCON7
DCD 0x008C07A3 ; REFRESH
DCD 0x000000B1 ; BANKSIZE
DCD 0x00000030 ; MRSRB6
DCD 0x00000030 ; MRSRB7
END |