1:S3C2440 存储器控制特性
S3C2440存储器提供访问外存储器所需要的存储器控制信号。共8个bank,每个bank128M,其中6个是ROM,SRAM等类型存储器bank,2个是ROM,SRAM,SDRAM等存储器bank。其中最后一个bank的起始地址可调整,最后2个bank大小可编程。所有bank的访问周期可编程,支持SDRAM的自刷新和掉电模式。
2:存储器控制器寄存器
总线宽度和等待寄存器BWSCON:用来设置总线宽的和等待状态。
Bank控制寄存器BANKCONn:控制各bank的片选,访问周期。
刷新控制寄存器REFRESH:SDRAM的刷新控制寄存器。
BANKSIZE寄存器:用来设置BANK的容量。
SDRAM模式寄存器集寄存器
3:实验代码:
3.1:主要完成SDRAM的初始化代码
在初始化代码中,主要完成关闭看门狗,设置存储器控制寄存器,拷贝NANDFLASH 内4KBSRAM到外部SDRAM中,并最后跳转到SDRAM中去运行。
.equ MEM_CTL_BASE, 0x48000000 @存储器控制寄存器首地址
.equ SDRAM_BASE, 0x30000000 @SDRAM首地址
.text
.global _start
_start:
bl disable_watch_dog
bl memsetup
bl copy_steppingstone_to_sdram
ldr pc, =set_sp @跳到SDRAM中继续执行
set_sp:
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:
@copy the 4k code from steppingstone(address begins at 0x00000000) to sdram(address begins at 0x30000000)
mov r1, #0
ldr r2, =SDRAM_BASE
mov r3, #4*1024
1: ldr r4, [r1],#4
str r4, [r2],#4
cmp r1, r3
bne 1b
mov pc, lr
memsetup:
mov r1, #MEM_CTL_BASE
adrl r2, mem_cfg_val
add r3, r1, #13*4
1: ldr r4, [r2], #4
str r4, [r1], #4
cmp r1, r3
bne 1b
mov pc, lr
.align 4
mem_cfg_val: @设置存储器控制器的13个寄存器
.long 0x2201D110 @BWSCON
.long 0x00000700 @BANKCON0
.long 0x00000700 @BANKCON1
.long 0x00000700 @BANKCON2
.long 0x00000700 @BANKCON3
.long 0x00000700 @BANKCON4
.long 0x00000700 @BANKCON5
.long 0x00018005 @BANKCON6
.long 0x00018005 @BANKCON7
.long 0x008C04F4 @REFRESH
.long 0x000000b1 @BANKSIZE
.long 0x00000030 @MRSRB6
.long 0x00000030 @MRSRB7
5:编译,下载测试