天天看点

MINI2440 s3c2440 存储控制器 MEMORY CONTROLLER

         Memory controller 即 存储控制器用来产生外部存储器使用所需的控制信号。

它具有如下特点:

1:可通过软件编程选择的大小端模式。

2:8个128M的BANK,总共1GB大小。

3:除了BANK0只能选择16/32位的数据宽度外,其他BANK可自由选择8bit、16bit,32bit

4:BANK0~BANK5比较相似,可外接rom,sram等外设;

BANK6~BANK7除了提供与BANK0~BANK5的一些功能外,还特别提供了SDRAM所需的配置。

5:BANK6跟BANK7的大小可通过编程选择,但是注意,BANK6与BANK7必须大小相同

地址划分如下:

MINI2440 s3c2440 存储控制器 MEMORY CONTROLLER
MINI2440 s3c2440 存储控制器 MEMORY CONTROLLER

S3C2440能寻址4G地址空间,0x0000_0000~0x3FFF_FFFF这1G的地址空间为外部外围设备的寻址空间,0x4800_0000~0x5FFF_FFFF为处理器内部的寄存器地址寻址区。S3C2440共有ADDR0~ADDR26,27跟地址线,可寻址128Byte。那它是怎么寻址到外部1G空间的呢?原来每个Bank都有一个片选信号nGCSn,通过这8个片选信号,便能寻址128Byte*8=1GByte。

如上图所示,s3c2440有两种启动方式,从NORFLASH启动,从NANDFLASH启动。

系统复位后,pc自动指向0地址开始执行程序,在mini2440开发板上Norflash接在Bank0上,起始地址为0x0000_0000.当OM[1:0]=01,10时,程序即从Norflsh启动,由于Norflash是可在芯片内执行(XIP,execute in place),程序可直接在flash闪存中运行。

当OM[1:0]=00时系统即从Nandflash启动,Nandflash没有接在Bank0上,它由专门的Nand flash Controller控制,无法具体寻址,但是复位后pc自动从0地址开始执行程序,那么程序如何运行到nandflash中去呢?原来在s3c2440中有一个大小为4k的sram(stepping stone),它自动将nandflash中的前4k程序拷贝到该sram中运行,一般情况下,这4k程序需要初始化sdram等外设,并将剩余的nandflash中的代码拷贝到sdram中去,而后程序跳转到sdram中运行。

在使用SRAM时需要配置如下13个寄存器:

MINI2440 s3c2440 存储控制器 MEMORY CONTROLLER
MINI2440 s3c2440 存储控制器 MEMORY CONTROLLER
MINI2440 s3c2440 存储控制器 MEMORY CONTROLLER

各寄存器的具体设置参考具体的外设。

mini2440的配置如下

DCD (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))

DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))   ;GCS0

DCD ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))   ;GCS1

DCD ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))   ;GCS2

DCD ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))   ;GCS3

DCD ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))   ;GCS4

DCD ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))   ;GCS5

DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))    ;GCS6

DCD ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))    ;GCS7

DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)

DCD 0x32    ;SCLK power saving mode, BANKSIZE 128M/128M

DCD 0x30    ;MRSR6 CL=3clk

DCD 0x30    ;MRSR7 CL=3clk