开发板与平台: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
posted on 2012-07-28 14:24  孜求嵌道  阅读(469)  评论(0编辑  收藏  举报