嵌入式開發學習(2)<S5PV210啟動過程詳解>
基本概念:
內存:
SRAM 靜態內存 特點:容量小、價格高,優點:不需要軟件初始化,上電就能用。
DRAM 動態內存 特點:容量大、價格低,缺點:上電不能用,需要軟件初始化。
單片機中:內存需求量小,而且希望開發盡量簡單,適合全部用SRAM。
嵌入式系統:內存需求量大,而且沒有NorFlash等可啟動介質。(介於單片機和PC機中間)。
PC機:內存需求量大,而且軟件復雜,不在乎DRAM的初始化開銷,適合全部用DRAM。
外存:
NorFlash 容量小,價格高,可以和cpu總線式相連,上電cpu直接能讀取。所以一般用來作啟動。
NandFlash(跟硬盤一樣,容量大,價格低,缺點:不能總線式訪問,不能上電
所以
一般的PC機都是:很小容量的BIOS(NorFlash)+很大容量的硬盤(類似於NorFlash)。
一般的單片機:很小容量的NorFlash + 很少容量的SRAM。
嵌入式系統:因為NorFlash很貴,所以現在的嵌入式系統不傾向於用NorFlash,直接用:外接的大容量的NandFlash+外接大容量的DRAM+Soc內置SRAM。
S5PV210啟動過程:
S5PV210的啟動方式:外接的大容量的NandFlash+外接大容量的DRAM+Soc內置SRAM。
實際上啟動還要更復雜一些,210內置了一塊96kb大小的SRAM(叫iRAM),還有一塊內置的64kb的NorFlash(
第一步:CPU上電後先從內部的IROM中讀取預先設置的代碼(BL0),並執行。這一段IROM代碼做了一些基本的初始化(cpu始終,看門狗。。。)(這一段IROM代碼是三星出廠前設置的,三星也不知道我們板子上將來要接什麽樣的DRAM,因此這一段代碼不負責初始化外接的DRAM的,因此這一段代碼只能初始化SoC內部的東西);然後這一段代碼會判斷我們選擇的啟動模式(我們可以設置硬件開關可以改變板子的啟動模式)然後從外部存儲器讀取相應的第一部分(BL1,16kb)啟動代碼(uboot)到內置的SRAM(iRAM)。
第二步:從iRAM去運行上一步讀取來的代碼(BL1 16kb),BL1負責初始化NandFlash,然後將BL2讀取到iRAM(剩余的80kb)
第三步:從iRAM運行BL2,BL2初始化DRAM(SDRAM),然後將OS讀取到DRAM(SDRAM)中,然後啟動OS,啟動過程結束。
嵌入式開發學習(2)<S5PV210啟動過程詳解>