开发板与平台:XSBASE 270-S、PXA270
裸机程序:初始化SDRAM
编译环境:ads 1.20
调试方法:直接用工具烧至片内norflash的0x0地址
一:分析
由图4的原理图可知该开发板采用2块13*9*16位的32MB内存组成SDRAM。接线的方式由cpu手册中的图2可以看出,A23和A24用于BANK选择,行列选择复用A10-A22一共13条地址线。内外地址的映射模式可以由图3可以知道,MDCNFG[STACKx]要设置为0x00,采用Normal Bank Addressing Scheme的方式。
在SDRAM的设置方面,实验去掉了电源管理方面的设置,另外要打开自动刷新,这里要注意的是自动刷新(auto-refresh)和自刷新(Self-refresh)的区别,自刷新是在SDRAM休眠的时候为了保持SDRAM内的数据使用的。
SDRAM的时序相关的设置参考图5,数据手册中推荐的数值不一定正确,只要大概设置后使得SDRAM使用稳定即可。
图1:
图2:
图3:
图4:
图5:
二:程序代码
Boot.s:
1 IMPORT InitMem 2 3 AREA boot, CODE, READONLY 4 ENTRY 5 6 ;初始化内存 7 BL InitMem 8 9 LOOP 10 B LOOP 11 END
Initmem.s:
1 EXPORT InitMem 2 3 MDCNFG EQU 0x48000000 4 MDREFR EQU 0x48000004 5 MDMRS EQU 0x48000040 6 ;************************************** 7 ;Init Memory 8 ;************************************** 9 AREA InitMem,CODE,READONLY 10 ENTRY 11 12 LDR R8, =0x1 13 14 LDR R0, =MDCNFG 15 LDR R1, [R0] 16 17 ;Use normal addressing mode(default) 18 BIC R1, R1, R8, LSL #12 19 BIC R1, R1, R8, LSL #10 20 21 ;tRP = 3 clks, CL = 3, tRCD = 3 clks, tRASMIN =7 clks, tRC=10 clks 22 BIC R1, R1, R8, LSL #8 23 ORR R1, R1, R8, LSL #9 24 25 ;4 internal SDRAM banks 26 ORR R1, R1, R8, LSL #7 27 28 ;13 row address bits 29 ORR R1, R1, R8, LSL #6 30 BIC R1, R1, R8, LSL #5 31 32 ;9 column address bits 33 BIC R1, R1, R8, LSL #4 34 ORR R1, R1, R8, LSL #3 35 36 ;32 bits 37 BIC R1, R1, R8, LSL #2 38 39 ;SDRAM partition enabled 40 ORR R1, R1, R8, LSL #0 41 42 STR R1, [R0] 43 44 LDR R0, =MDREFR 45 LDR R1, [R0] 46 47 ;SDCLK<1> Dependent on MDREFR[K1RUN] 48 BIC R1, R1, R8, LSL #24 49 50 ;Self-refresh disabled 51 BIC R1, R1, R8, LSL #22 52 53 ;0 = SDCLK<1> equals CLK_MEM 54 BIC R1, R1, R8, LSL #17 55 56 ;SDCLK<1> Enabled 57 ORR R1, R1, R8, LSL #16 58 59 ;SDCKE Enabled 60 ORR R1, R1, R8, LSL #15 61 62 ;DRI = 0x31 63 LDR R8, =0xFFF 64 BIC R1, R1, R8, LSL #0 65 LDR R8, =0x1 66 ORR R1, R1, R8, LSL #0 67 ORR R1, R1, R8, LSL #4 68 ORR R1, R1, R8, LSL #5 69 70 STR R1, [R0] 71 72 LDR R0, =MDMRS 73 LDR R1, [R0] 74 75 ;CAS Latency = 3 76 BIC R1, R1, R8, LSL #6 77 ORR R1, R1, R8, LSL #5 78 ORR R1, R1, R8, LSL #4 79 STR R1, [R0] 80 81 MOV PC, LR 82 83 END