•DRAM:它的基本原件是小電容,電容可以在兩個極板上保留電荷,但是需要定期的充電(刷新),否則數據會丟失。缺點:由於要定期刷新存儲介質,存取速度較慢。

•SRAM:它是一種具有靜止存取功能的內存,不需要定期刷新電路就能保存它內部存儲的數據。其優點:存取速度快; 但是缺點是:功耗大,成本高。常用作存儲容量不高,但存取速度快的場合,比如steppingstone.

在嵌入式硬件體系中,除了CPU內部的”墊腳石”採用SRAM外,板載內存一般會採用DRAM,而DRAM又可以分為SDRAM,DDR,DDR2等。

 

SDRAM(Synchronous Dynamic Random AccessMemory):同步動態隨機存儲器.

同步: 內存工作需要有同步時鐘,內部的命令的發送與數據的傳輸都以該時鐘為基準。

動態:存儲陣列需要不斷的刷新來保證數據不丟失。

隨機:是指數據不是線性依次存儲,而是自由指定地址進行數據讀寫。

備註:2440開發板上使用的內存通常是SDRAM

 

DDR (Double Data Rate SDRAM),即“雙倍速率同步動態隨機存儲器”。與早期的SDRAM相比,DDR 除了可以在時鐘脈衝的上升沿傳輸數據,還可以在下降沿傳輸信號,這意味着在相同的工作頻率下,DDR 的理論傳輸速率為SDRAM的兩倍。DDR2 則在DDR 的基礎上再次進行了改進,使得數據傳輸速率在DDR 的基礎上再次翻倍。
備註:6410開發板通常採用DDR內存    210開發板通常採用DDR2內存

 

2440內存初始化:

  1:地址空間:
(1)地址線:2440對外提供27條地址線,只能訪問128MB的外設空間。
(2)片選信號:8個片選信號,擴大可訪問的外設空間到1GB。
(3)外設空間:有2440的datasheet知道他將1GB分成8部分,即8塊,通過不同的片選信號來訪問不同的塊空間。其中內存從band6開始(0x30000000),有可能佔用band7。
(4)存儲器控制器:所謂對內存初始化,實質上是對CPU的存儲器控制器進行初始化,由他對給出的地址進行分析轉換得到片選信號和行列地址。而CPU和內部寄存器之間的訪問則是通過CPU內部的32位總線進行的。


2:內存芯片連接
由於每個單元格的容量是16bit,即內存芯片的數據寬度是16bit,而CPU的數據寬度是32bit,為了避免浪費,就用兩塊內存芯片並聯,使得每一次cpu對內存訪問的時候可以一次性取出32bit的數據。分為高16bit和低16bit。當然不可避免的要涉及到片選信號,L_BANK選擇信號,行列地址信號。


3存儲器控制器寄存器
設置13個寄存器,要查閲2440的datasheet以及內存的datasheet,然後看時序圖,找出寄存器的某些位控制的參數所需要設置的值。最後要學會在彙編裏用循環的方式來給寄存器賦值。


4.  理論上2440可以尋址4GB,總體上分為內部空間和外設空間。外設空間又分為8個bank,每個bank為128MB

 

6410內存初始化:    

  6410也可以尋址4GB空間,但是6410把地址空間劃分為三個部分,一個是保留區(高2GB),一個是外設區(256MB)--主要放置寄存器,一個是主存儲區(1972MB)。
主存儲區又分為五個部分


(1)boot鏡像區:不匹配任意硬件外設,負責把相應的外設映射到該處。CPU上電後從這裏取指運行。
(2)內部存儲區:分兩個部分:IROM和ISRAM,雖然理論上各有64MB,但是IROM實際有效的只有32KB,ISRAM有效的只有8KB
(3)靜態存儲區:類似於2440的外設區,分成6個bank,可以接NORFLASH,onenand等外設。
(4)保留區:256MB,不用
(5)動態存儲區:就是用來連接內存的,所以6410的內存起始地址是0x50000000


7.6410的內存初始化要按順序進行,2440不需要順序。還要注意設置數據線和地址線的選擇。以及檢查是否已將ready信號寫入寄存器。

具體初始化步驟參考手冊

板載內存memoryinit_數據

板載內存memoryinit_寄存器_02