【ARM學(xué)習(xí)筆記】三、S3C2440A的存儲控制器及啟動過程
存儲控制器
S3C2440A是32位處理器,理論上擁有32根地址線,尋址空間0x00000000~0xFFFFFFFF,即4G
而實際上,S3C2440A只擁有27根地址線,實際物理尋址空間為0x00000000~0x07FFFFFF,即128MB
除了這27根地址線,S3C2440A還對外引出了8根片選信號線,這樣組合起來就能達(dá)到1G的物理尋址空間,即0x00000000~0x3FFFFFFF每一塊稱為一個BANK,每一塊都有128MB,共有BANK0~BANK7,其中BANK0、BANK6、BANK7比較特殊。
為了便于使用,S3C2440A擁有獨立的存儲控制器,這樣,CPU只要將地址發(fā)送給存儲控制器,由存儲控制器自動選擇相對應(yīng)的外部存儲設(shè)備,上圖就是S3C2440A的尋址空間圖
同時,S3C2440A中也內(nèi)置了一個4K大小的SRAM內(nèi)存,稱為“Steppingstone”。另外S3C2440的寄存器也占用總線地址的,例如GPxCON,USB Host等等
上圖左邊表示不使用Nand Flash作為啟動ROM時的映射圖,一般情況指的是使用Nor Flash作為啟動ROM,這時,Nor Flash使用BANK0,使用的總線地址空間為0x00000000~0x08000000,片內(nèi)內(nèi)存“Steppingstone”使用的總線地址空間為0x40000000~0x40000FFF
上圖右邊表示使用Nand Flash作為啟動ROM,這時,片內(nèi)內(nèi)存“Steppingstone”占用總線地址空間為0x00000000~0x00000FFF,Nor Flash將無法使用(至于原因,看完下面就知道了)
啟動方式
S3C2440A在上電后,將開始從總線地址0x00000000讀取指令執(zhí)行,而S3C2440A的啟動方式由其兩個引腳OM0和OM1控制,請看下圖
由上圖可知,S3C2440A支持兩種啟動模式:Nand和非Nand(一般是Nor Flash),具體采用的方式取決于OM0、OM1兩個引腳的狀態(tài)。
Nor Flash擁有與內(nèi)存相同的接口,可以接在存儲控制器上被CPU直接訪問,但由于壽命低,容量小,價格貴,一般都使用Nand Flash作為首選啟動方式
而根據(jù)Nand Flash的特性,其訪問方式較Nor Flash復(fù)雜,只能接在Nand Flash控制器上被CPU間接訪問
如果S3C2440被配置成從Nand Flash啟動,在S3C2440上電后,Nand Flash控制器的會自動的把Nand Flash上的前4K數(shù)據(jù)復(fù)制到內(nèi)部SRAM中,也就是所謂的“Steppingstone”,同時把這段片內(nèi)SRAM映射到nGCS0片選的空間(即0x00000000)。系統(tǒng)會從這個內(nèi)部SRAM中啟動,程序員需要完成的工作,就是把最核心的啟動程序放在Nand Flash的前4K中,也就是說,你需要編寫一個長度小于4K的引導(dǎo)程序,作用是將主程序拷貝到外部RAM (一般是SDRAM)中運行。
而在Nand Flash方式啟動的情況下,系統(tǒng)是“看不到”Nor Flash的,因為Nor Flash也是掛在nGCS0(nGCSx指的是片選引腳,nGCS0對應(yīng)BANK0)上的,而nGCS0的地址空間已經(jīng)被占用了。
當(dāng)選擇從Nor Flash啟動時,需要根據(jù)Nor Flash的位寬來配置OM1和OM0引腳,當(dāng)位寬為16bit時,OM1和OM0應(yīng)該分別是低電平和高電平;當(dāng)位寬為32bit時,OM1和OM0應(yīng)該分別是高電平和低電平。
此時,Nor Flash被映射到0x00000000地址(就是nGCS0,這里就不需要片內(nèi)SRAM來輔助了,而片內(nèi)SRAM的起始地址映射到了0x40000000)。 然后S3C2440A從0x00000000開始運行(也就是在Nor Flash中運行)。
從上面可知,CPU只能從總線地址0x00000000啟動,所以在使用Nor Flash啟動時,程序可以直接在Nor Flash執(zhí)行,而無需片內(nèi)SRAM輔助,Nor Flash占用總線地址0x00000000
如果使用Nand Flash啟動時,需要片內(nèi)SRAM輔助啟動,片內(nèi)SRAM占用總線地址0x00000000,Nor Flash無法使用(貌似Nor Flash只能接在BANK0上面)
<完結(jié)>