歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> S3C2440 SDRAM內存驅動

S3C2440 SDRAM內存驅動

日期:2017/3/1 10:08:18   编辑:Linux編程

SDRAM(Synchronous Dynamic Random Access Memory,同步動態隨機存儲器)也就是通常所說的內存。內存的工作原理、控制時序、及相關控制器的配置方法一直是嵌入式系統學習、開發過程中的一個難點。我們從其硬件的角度來分析其原理,然後再引出SDRAM的驅動編寫過程。

內存是代碼的執行空間,以PC機為例,程序是以文件的形式保存在硬盤裡面的,程序在運行之前先由操作系統裝載入內存中,由於內存是RAM(隨機訪問存儲器),可以通過地址去定位一個字節的數據,CPU在執行程序時將PC的值設置為程序在內存中的開始地址, CPU會依次的從內存裡取址,譯碼,執行,在內存沒有被初始化之前,內存好比是未建好的房子,是不能讀取和存儲數據的,因此我們要想讓MTOS運行在內存裡必須進行內存的初始化。

通用存儲設備:

在介紹內存工作原理之前有必要了解下存儲設備的存儲方式:ROM,RAM

l ROM(Read-Only Memory):只讀存儲器,是一種只能讀出事先所存數據的固態半導體存儲器。其特性是一旦儲存資料就無法再將之改變或刪除。通常用在不需經常變更資料的電子或電腦系統中,資料並且不會因為電源關閉而消失。如:PC裡面的BIOS。

l RAM(Random Access Memory) :隨機訪問存儲器,存儲單元的內容可按需隨意取出或存入,且存取的速度與存儲單元的位置無關的存儲器。可以理解為,當你給定一個隨機有效的訪問地址,RAM會返回其存儲內容(隨機尋址),它訪問速度與地址的無關。這種存儲器在斷電時將丟失其存儲內容,故主要用於存儲短時間內隨機訪問使用的程序。計算機系統裡內存地址是一個四字節對齊的地址(32位機),CPU的取指,執行,存儲都是通過地址進行的,因此它可以用來做內存。

RAM按照硬件設計的不同,隨機存儲器又分為DRAM(Dynamic RAM)動態隨機存儲器和SRAM(Static RAM) 靜態隨機存儲器。

l DRAM它的基本原件是小電容,電容可以在兩個極板上短時間內保留電荷,可以通過兩極之間有無電壓差代表計算機裡的0和1,由於電容的物理特性,要定期的為其充電,否則數據會丟失。對電容的充電過程叫做刷新,但是制作工藝較簡單,體積小,便於集成化,經常做為計算機裡內存制作原件。比如:PC的內存,SDRAM, DDR, DDR2, DDR3等,缺點:由於要定期刷新存儲介質,存取速度較慢。

l SRAM它是一種具有靜止存取功能的內存,不需要刷新電路即能保存它內部存儲的數據。因此其存取速度快,但是體積較大,功耗大,成本高,常用作存儲容量不高,但存取速度快的場合,比如CPU的L1 cache,L2cache(一級,二級緩存) ,寄存器。

為了滿足開發的需要MINI2440在出廠時搭載了三種存儲介質:

(1)NOR FLASH(2M):ROM存儲器,通常用來保存BootLoader,引導系統啟動

(2)NAND FLASH(256M,型號不一樣,Nandflash大小不一樣):保存操作系統映像文件和文件系統

(3)SDRAM(64M):內存,執行程序

l NOR FLASH它的特點是支持XIP芯片內執行(eXecute In Place),這樣應用程序可以直接在Flash閃存內運行,不必再把代碼讀到系統RAM中,也就是說可以隨機尋址。NOR FLASH的成本較高。

l NAND FLASH:它能提供極高的單元密度,可以達到高存儲密度,並且寫入和擦除的速度也很快。其成本較低,不支持XIP。可做嵌入式裡的數據存儲介質。如:手機存儲卡,SD卡等。

1.1.1 S3C2440存儲器地址段(Bank)

S3C2440對外引出了27根地址線ADDR0~ADDR26,它最多能夠尋址128MB,而S3C2440的尋址空間可以達到1GB,這是由於S3C2440將1GB的地址空間分成了8個BANKS(Bank0~Bank7),其中每一個BANK對應一根片選信號線nGCS0~nGCS7,當訪問BANKx的時候,nGCSx管腳電平拉低,用來選中外接設備, S3C2440通過8根選信號線和27根地址線,就可以訪問1GB。如圖2-48所示。

圖2-48 S3C2440存儲器BANK

如圖所示,左側圖對應不使用Nandflash啟動時(通過跳線設置),存儲器Bank分布圖,通常在這種啟動方式裡選擇Norflash啟動,將Norflash焊接在Bank0, 系統上電後,CPU從Bank0的開始地址0x00000000開始取指運行。

上圖右側是選擇從Nandflash引導啟動(通過跳線設置),系統上電後,CPU會自動將Nandflash裡前4K的數據復制到S3C2440內部一個4K大小 SRAM類型存儲器裡(叫做Steppingstone),然後從Steppingstone取指啟動。

Copyright © Linux教程網 All Rights Reserved