S3C2410处理器扩展内存32MB的SDRAM
1.需求分析
S3C2410是32位处理器(指令一次能够操作32位数据(运算器一次可以处理32位数据);通用寄存器多是32位寄存器;处理器内部数据通道也是32位的;处理器外部数据总线宽度通常是32位的,地址总线宽度只是代表CPU寻址范围大小,与CPU是多少位的无关,也即32位CPU的地址总线不一定是32根的,例如对于s3c2410,每一个Bank对应27根地址线,寻址能力为128MB,全部8个Bank总的寻址能力为1GB),所以为了最大限度的发挥其性能,内存最好也是32位(指数据宽度)的,(当然,在s3c2410的8个bank中,除了Bank0只能选择16/32数据位宽外,其余的7个Bank均可以单独选择8/16/32位宽的存储系统)然而市面上很少有32位宽度的单片SDRAM,所以一般都采取两片16位的SDRAM进行位扩展得到32位的SDRAM
2.设计电路图
2410与K4S561632D相连
本系统扩展后的内存系统为16M×32Bit的(此处32Bit是指数据位宽度,而非地址位,可以理解SDRAM数据位宽度与地址线的条数无关,明白数据线和地址线的区别,对于下面地址线的连接方式的理解非常重要
3.初始化程序代码
子函数说明:初始化内存控制器
memsetup:
mov r1,#MEM_CTL_BASE
adrl r2,mem_cfg_val
add r3,r1,#52
1:
ldr r4,[r2],#4 @将地址为R2的内存单元数据读取到R4中,然后r2=r2 +4
str r4,[r1],#4 @将r4的数据写入到r1的内存单元,然后r1=r1+4
cmp r1,r3 @比较R1,R3是否设置完所有的13个寄存器。
bne 1b