天天看点

S3C2440芯片的SDRAM初始化设置前言 初始化设置

从零开始写一个简单的bootloader(1)

前言

        我使用的板子的内存是由两片64M大小的SDRAM组成,所以实际内存有128M。分别连接到芯片的BANK6和BANK7。

        下面是用不同的启动方式,内存地址的映射图,主要的不同点就是,4K大小的SRAM的起始地址有所不同。这个图非常重要,后面很多地方用到的内存地址可以参考这里。

S3C2440芯片的SDRAM初始化设置前言 初始化设置

     下图是BANK6和BANK7的起始和结束地址(我板子的每片内存大小为64MB)分别是0x30000000~0x33FFFFFF和0x34000000~0x37FFFFFF。

S3C2440芯片的SDRAM初始化设置前言 初始化设置

初始化设置

初始化的设置都是根据自己实际需要设置一些寄存器的初始值,没有太多需要讲的,直接上图

(1)BWSCON寄存器是设置每个BANK的实际位数,因为我的是32位,所以设置BANK6和BANK7为10就可以了。所以BWSCON = 0x22000000

S3C2440芯片的SDRAM初始化设置前言 初始化设置

(2)BANKCON6 = BANKCON7 = 0x00018001

S3C2440芯片的SDRAM初始化设置前言 初始化设置

这里我们将内存设置为Sync DRAM,也就是SDRAM,所以MT=11

S3C2440芯片的SDRAM初始化设置前言 初始化设置

SCAN是列地址的位数,这里用到的芯片的列地址位数为9(不同芯片可能不一样),所以取值01

Trcd是发出行地址和列地址之间的时间差(因为CPU要访问内存,一般需要分几个步骤,其中行地址和列地址是分别发出的,所以之间需要有个时间差)。查看了芯片手册,这个时间至少需要20ns,所以我们可以设置为两个时钟周期(我的Hclk设置为100MHz)。

(3)REFRESH = 0x008404f5

S3C2440芯片的SDRAM初始化设置前言 初始化设置
S3C2440芯片的SDRAM初始化设置前言 初始化设置

(4)BANKSIZE = 0x000000b1

S3C2440芯片的SDRAM初始化设置前言 初始化设置

Burst operation的意思是可以突发访问,百度百科是这么解释的:

S3C2440芯片的SDRAM初始化设置前言 初始化设置

另外,power down mode为休眠模式

(5)MRSRB6 = 0x00000020

S3C2440芯片的SDRAM初始化设置前言 初始化设置

表格中都写明了是Fixed,所以我们照着这么设置就可以了,其中

CL的含义:内存控制器在读SDRAM时,会先后发出BANK地址、行地址和列地址,当发出列地址后,SDRAM要先等待一段时间才返回数据给内存控制器。而这个等待的时间就是CL设置的,我们按照芯片手册给的值设置就好了。

继续阅读