分类: 嵌入式
2014-02-23 11:12:32
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必须大小相同
地址划分如下:
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的配置如下
DCD (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))