天天看點

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