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