S3C2440存儲控制器、SDRAM原理、內存初始化
NOR Flash是總線型設備,可在芯片內執行(XIP,eXecute In Place),應用程序可以直接在FIash閃存內運行,不必再把代碼讀到系統RAM中;而NAND Flash則需I/O接口,因此使用時需要寫入驅動程序
本文引用地址:http://cqxgywz.com/article/201611/316881.htm
SDRAM:Synchronous Dynamic Random Access Memory,同步動態隨機存儲器,同步是指Memory工作需要同步時鐘,內部的命令的發送與數據的傳輸都以它為基準;動態是指存儲陣列需要不斷的刷新來保證數據不丟失;隨機是指數據不是線性依次存儲,而是自由指定地址進行數據讀寫。
1.S3C2440存儲控制器特性
(1)S3C2440A的存儲器管理器提供訪問外部存儲器的所有控制信號
27位地址信號、32位數據信號、8個片選信號、以及讀/寫控制信號等
(2)總共有8個存儲器bank(bank0—bank7)
(3)bank0---bank5為固定128MB
bank6和bank7的容量可編程改變,可以是2、4、8、16、32、64、128MB
最大共1GB
(4) bank0可以作為引導ROM。其數據線寬只能是16位和32位,其它存儲器的數據線寬可以是8位、16位和32位
(5) 7個固定存儲器bank(bank0-bank6)起始地址。bank7的開始地址與bank6的結束地址相連接,但是二者的容量必須相等
(6)所有存儲器bank的訪問周期都是可編程的
(7)支持SDRAM的自刷新和掉電模式
(8)支持大小端(軟件選擇)
注:8個128M的bank,一共只有1G(地址空間),剩余3G,有一部分是寄存器的地址,還有一部分沒有被使用,系統上電后從bank0執行bootloader程序。
S3C2440的8個bank在系統上電后必須進行相應的初始化(n多寄存器的配置,S3c2440片內有NandFlash,SDRAM,NorFlash等配置寄存器),2440不然就不能工作。
S3C2440的每個bank都可以用來總線型設備,這些設備共用系統的總線。這些設備的片選端,都應該接到相應bank的片選信號上,因此所有總線型設備的地址線也是共用的。比如bank0接的就是norflash(bank0可以作為引導ROM), Bank6接SDRAM。NandFlash不是總線型設備,所以NandFlash沒有接在bank上,而是單獨和S3C2440連接。系統如果從NandFlash啟動的話,NandFlash里面必須燒有bootloader程序,NorFlash同理。
2.SDRAM原理分析:
型號:K4S561632(兩片共64M)
大小:4M*16bit*4banks*2= 512 bit = 64M字節
數據寬度:32 bit
連接在BANK6上,片選信號nGCS6
地址范圍:0x3000_0000—0x33FF_FFFF
SDRAM存儲原理:
SDRAM的內部是一個存儲陣列,陣列中的每個單元格就是一個存儲單元。
有四個邏輯BANK(L-BANK)
由BA1、BA0選擇
行地址數:13
列地址數:9
SDRAM儲存區域分配:
0x3000_0000~0x3100_0000(程序代碼區、文字常量區)
0x33ff_0000~0x33ff_4800(堆區)
0x33ff_4800~0x33ff_8000(棧區)
0x33ff_ff00~0x3400_000(偏移中斷向量表)
3.內存初始化
內存是嵌入式系統中非常重要的一部分,在系統啟動前,必須配置內存讓其工作。
NOR FLASH
NOR FLASH (EN29LV160AB):
大小:2M
數據寬度:16bit
連接在BANK0上,片選信號nGCS0
地址范圍:0x0000_0000---0x0020_0000
特點:
線性尋址
可直接按地址進行讀寫操作
寫操作之前需進行擦除操作
寫入、擦除速度較慢,讀取速度較快,單位密度低、成本較高
NAND FLASH
大小:256M* 8Bit
數據寬度:8位
地址范圍:有專門的時序控制總線,不占用系統總線資源
特點:
非線性尋址
讀操作,一次必須讀一個扇區(512字節)
寫操作,可按指定地址直接寫入
寫之前必須進行擦除操作
單位密度高、成本低、擦除速度快
壞塊:
NAND器件中的壞塊是隨機分布的,在初始化時,需要對介質進行初始化掃描以發現壞塊,并將壞塊標記為不可用
位交換:
NAND Flash中發生的次數要比NOR Flash多,建議使用NAND閃存時,同時使用EDC/ECC算法
使用方法:
NOR Flash是可在芯片內執行(XIP,eXecute In Place),應用程序可以直接在FIash閃存內運行,不必再把代碼讀到系統RAM中;而NAND Flash則需I/O接口,因此使用時需要寫入驅動程序
啟動方式:
NandFlash沒有接在bank0上,而程序必須從0地址開始執行,即bank0開始。2440內部有一個叫做“起步石(Steppingstone)”的SRAM緩沖器。
系統啟動時Nand flash存儲器的前面4K字節被自動拷貝到Steppingstone中。
Steppingstone被映射到nGCS0對應的BANK0存儲空間。
CPU在Steppingstone的4-KB內部緩沖器中開始執行引導代碼。
引導代碼執行完畢后,自動跳轉到SDRAM執行。


評論