全部博文(92)
分类: 嵌入式
2010-06-15 09:58:26
S3C2440存储单元——K4S561632 SDRAM
K4S561632 SDRAM
一片FLASH由4个bank组成,每个bank都是一个2^9列*2^13行的矩阵,即4M空间,每个空间是16位的。
所以整个SDRAM的大小为:4M*16bit*4bank*2片=512Mbit=64M字节。
数据宽度:32bit
ADDR2~ADDR14 是13条地址线(因为读写都是以4个字节进行的,所以不会有ADDR0和ADDR1)
nSCAS是列选信号,使能时13条地址线给出列地址
nSRAS是行选信号,使能时13条地址线中的9条给出行地址
BA0和BA1是由ADDR24和ADDR25控制,进行4个bank的选择
nWBE0~nWBE3是4字节的选择信号。
nWE是写使能
下载u_boot到NAND FLASH和使用ADS之前都需要写配置文件,初始化存储单元寄存器
WATCHDOG TIMER SPECIAL REGISTERS
SetMem+32-Bit+0x53000000+0x00000000
关看门狗定时器
INTERRUPT MASK (INTMSK) REGISTER
SetMem+32-Bit+0x4A000008+0xFFFFFFFF
关中断
INTERRUPT SUB MASK (INTSUBMSK) REGISTER
SetMem+32-Bit+0x4A00001C+0x00007FFF
关子中断
BUS WIDTH & WAIT CONTROL REGISTER (BWSCON)
SetMem+32-Bit+0x48000000+0x2212D110
BWSCON寄存器设置总线宽度和等待时间,对8块128M存储单元的配置,
Bank0接了NOR FLAH 如选中默认为16位。
Bank1接了IDE接口,NOR 为32位,NAND为16位。
Bank3接了DM9000网卡驱动,使用UB/LB,并且使能芯片等待。
Bank6接了SDRAM 32位
BANK CONTROL REGISTER (BANKCONN: NGCS0-NGCS5)
SetMem+32-Bit+0x4800000C+0x00002E50
SetMem+32-Bit+0x48000010+0x00002E50
SetMem+32-Bit+0x48000014+0x00002E50
SetMem+32-Bit+0x48000018+0x00002E50
设置bank2~bank5的时序,这里是根据S3C2440A使用手册设置的
Tacp=2c Tach=1c Tcoh=1c Tacc=10c Tcos=1c Tacs=1c
BANK CONTROL REGISTER (BANKCONn: nGCS6-nGCS7)
SetMem+32-Bit+0x4800001C+0x00018005
SetMem+32-Bit+0x48000020+0x00018005
设置bank6和bank7是SDRAM,并设置其列地址数为9,时序设置如下:
Tacs=0c Tcos=0c Tacc=1c Tcoh=0c Tcah=0c
REFRESH CONTROL REGISTER
SetMem+32-Bit+0x48000024+0x00960542
设置SDRAM的刷新频率(就是行列的扫描时间)Tsrc=5c, Trp=3c, 模式设置为自动扫描
2^11+1-HCLK(MHz)*SDRAM刷新周期(us)=0x542
算的SDRAM刷新周期为15.6us
BANKSIZE REGISTER
SetMem+32-Bit+0x48000028+0x00000032
设置bank6和bank7 为128M, SCLK is active only during the access, SDRAM power down mode enable
SDRAM MODE REGISTER SET REGISTER (MRSR)
SetMem+32-Bit+0x4800002C+0x00000030
SetMem+32-Bit+0x48000030+0x00000030
在系统使用SDRAM之前,需要对S3C2440的存储器控制器进行初始化。其中对与SDRAM(Bank6)相关的寄存器进行了特殊的设置,以使SDRAM能够正常工作。由于C语言程序使用的数据空间和堆栈空间都定位在SDRAM上,因此,如果没有对SDRAM(Bank6)的正确初始化,系统就无法正确启动。下面介绍与SDRAM相关的寄存器设置。
1、 总线宽度&等待控制寄存器(BWSCON)0x48000000
在这个寄存器中,可以配置BANK1~BANK7的DW、WS、ST,DW决定了数据总线宽度;WS是等待状态是否使能,如果此位为1,WAIT信号可以用于延长nOE信号的有效时间;ST决定是否使用UB/LB(与SRAM相关)。此寄存器还可以读取(不能写)BANK0的数据总线宽度。
对于SDRAM,只需要设置BANK6和BANK7的DW相关位,此处设置为32位。BWSCON(0x48000000)=0x22xxxxxx,后面的24位设置和FLASH有关,一个例子是设置为0x22111120。
2、 BANK控制寄存器(BANKCONN)
BANK0~BANK5的控制寄存器相同,复位值均为0x0700。包括对Tacs(nGCSn前的地址建立时间)、Tcos(nOE信号有效前的片选建立时间)、Tacc(访问周期,当WAIT使能时,Tacc必须大于等于4个时钟周期)、Tcoh(nOE后的片选保持时间)、Tcah(nGCSn后的地址保持时间)、Tacp(Page模式下的访问周期)、PMC(Page模式配置)。
BANK6、BANK7的控制寄存器相同。如果存储器类型为ROM或者SRAM,情况与BANK0~BANK5类似,如果存储器类型为SDRAM,则需要设置Trcd(RAS到CAS的延时)和SCAN(列地址位数),根据我们使用的SDRAM以及S3C2440的HCLK(SDRAM时钟由系统的HCLK提供)时钟情况,Trcd取3个时钟,列地址位数是9,则BANKCON6(0x4800001C)=0x00018005,BANKCON7(0x48000020)=0x00018005。
3、 SDRAM刷新控制寄存器(REFRESH)
包括REFEN位(刷新使能),此位一般设置为1;TREFMD位(SDRAM刷新模式),初始值为0;Trp(SDRAM RAS预充电时间),此位需要根据时钟HCLK与选用的SDRAM芯片决定,一般设置为2或3个时钟;Tsrc位(SDRAM半行周期时间),由Trc-Trp得到,Trc和Trp的值由时钟和SDRAM芯片决定;REFRESH COUNTER位(SDRAM刷新计数值),刷新计数值=2^11+1-HCLK*SDRAM刷新时间(刷新时间参考S3C2440和SDRAM技术手册)。
4、 BANK SIZE寄存器(BANKSIZE)
BURST_EN位是ARM核突发模式使能位,设为0或1均可,为了提高效率,此处可以设为1;SCKE_EN,SDRAM掉电模式使能控制,设为1;SCLK_EN,设为1,SCLK仅在访问周期才被激活;BK76MAP,BANK6和BANK7的内存映射,我们使用2片4B*4M*16bit的SDRAM组成32位256MB存储器,而且BANK6和BANK7大小要相等,所以此处设为2,即128MB/128MB。BANKSIZE(0x48000028)=0x00000032。
5、 SDRAM模式寄存器集合寄存器(MRSR)
WBL位,突发写长度,一般设为0,突发写长度固定;TM位,测试模式,一般设为00,模式寄存器集合(固定);CL位,CAS延时,根据SDRAM芯片和HCLK时钟计算;BT位,突发类型,一般设为0,连续的(固定);BL位,突发长度,一般设为000(固定的)。MRSR(0x4800002C)=0x00000030,(0x48000030)=0x00000030。