微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 2440初始化存储器原理(接上一篇)

2440初始化存储器原理(接上一篇)

时间:11-09 来源:互联网 点击:

SRAM还是SDRAM:SRAM-0b00,SDRAM-0b11

b.当MT=0b11时,还需要设置两个参数:

Trcd([3:2]):RAS to CAS delay,设为推荐值0b01

SCAN([1:0]):SDRAM的列地址位数,对于本开发板使用的SDRAM HY57V561620CT-H,列地址位数为9,所以SCAN=0b01。如果使用其他型号的SDRAM,您需要查看它的数据手册来决定SCAN的取值:00-8位,01-9位,10-10位

REFRESH控制寄存器:

REFRESH地址:x48000024

REFRESH(SDRAM refresh control register):设为0x008e0000+ R_CNT

地址0其中R_CNT用于控制SDRAM的刷新周期,占用REFRESH寄存器的[10:0]位,它的取值可如下计算(SDRAM时钟频率就是HCLK):

R_CNT = 2^11 + 1 – SDRAM时钟频率(MHz) * SDRAM刷新周期(uS)

在未使用PLL时,SDRAM时钟频率等于晶振频率12MHz;SDRAM的刷新周期在SDRAM的数据手册上有标明,在本开发板使用的SDRAM HY57V561620CT-H的数据手册上,可看见这么一行“8192 refresh cycles / 64ms”:所以,刷新周期=64ms/8192 = 7.8125 uS。

对于本实验,R_CNT = 2^11 + 1 – 12 * 7.8125 = 1955,

REFRESH=0x008e0000 + 1955 = 0x008e07a3

BANKSIZE寄存器:

BANKSIZE 地址0x48000028

BURST_EN [7] ARM核突发操作允许

0--禁止突发操作

1--允许突发操作

Reserved[6] 不使用

SCKE_EN [5] SCKE允许控制

0=SDRAM SCKE 禁止

1=SDRAM SCKE 允许

SCLK_EN [4] SCLK仅在减少功耗期间SDRAM存取周期内允许,当SDRAM不进行

存取时,SCLK变L电平

0=SCLK总是激活

1=SDRAM仅在存取期间激活(推荐)

Reserved[3] 不使用

BK76MAP[2:0] BANK6/7存储映射

010=128MB/128MB 001=64MB/64MB

000=32MB/32MB 111=16MB/16MB

110=8MB/8MB 101=4MB/4MB

100=2MB/2MB

位[7]=1:Enable burst operation

位[5]=1:SDRAM power down mode enable

位[4]=1:SCLK is active only during the access (recommended)

位[2:1]=010:BANK6、BANK7对应的地址空间与BANK0-5不同。BANK0-5的地址空间都是固定的128M,地址范围是 (x*128M)到(x+1)*128M-1,x表示0到5。但是BANK7的起始地址是可变的,您可以从S3C2410数据手册第5章“Table 5-1. Bank 6/7 Addresses”中了解到BANK6、7的地址范围与地址空间的关系。本开发板仅使用BANK6的64M空间,我们可以令位 [2:1]=010(128M/128M)或001(64M/64M):这没关系,多出来的空间程序会检测出来,不会发生使用不存在的内存的情况——后面 介绍到的bootloader和linux内核都会作内存检测。

位[6]、位[3]没有使用

SDRAM模式寄存器设置寄存器(MRSR):

MRSRB6地址0x4800002C

MRSRB7 地址0x48000030

能让我们修改的只有位[6:4](CL),SDRAM HY57V561620CT-H不支持CL=1的情况,所以位[6:4]取值为010(CL=2)或011(CL=3)。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top