1. 程式人生 > >Cortex A8系列S5PV210的啟動概述

Cortex A8系列S5PV210的啟動概述

S5PV210啟動 BL0 BL1

1、硬件特性:
(1)內存:內存有兩種類型,SRAM(Static RAM)和DRAM(Dynamic RAM),分別稱為靜態內存和動態內存。
SRAM:靜態內存,特點是容量小、價格高。優點是不需要軟件初始化就可以直接上電使用,讀取執行內部存儲的信息。
DRAM:動態內存,特點是容量大,價格便宜。缺點是上電後不能直接使用,需要經過軟件初始化後才可以使用。
(2)外存:外存很多類型,這裏只簡單的說兩種,NandFlash和NorFlash。
NorFlash:特點是容量小,價格高。優點是可以和CPU直接總線相連,CPU上電後就可以直接讀取存取在裏面的代碼,一般用作啟動介質。
NandFlash:特點是容量大,價格便宜。缺點是不能直接總線式訪問,即不能上電後直接讀取裏面的代碼來執行,需要CPU進行軟件初始化,然後通過時序接口的方式來讀寫執行。
2、S5PV210芯片的硬件特性:
技術分享圖片
上面的截圖來自sumsung S5PV210的數據手冊。
S5PV210微處理器是基於Cortex A8的,SoC內內置了一個64KB的IROM(NorFlash類型),一個96KB的SRAM,還有各種類型的控制器,包含:SDRAM控制器、4位/8位的高速SD/MMC控制器、NandFlash控制器、OneNand控制器、eSSD控制器、UART/USB控制器。
S5PV210芯片內置了多種類型的控制器,所以S5PV210支持多種方式(以上內置控制器)的啟動,只需將OM引腳的撥碼開關調至相應的類型,即可以相應的方式啟動。S5PV210支持的啟動方式如下圖:
技術分享圖片
3、OM引腳配置:
技術分享圖片
4、現在,我們來看看S5PV210的啟動過程:
技術分享圖片
技術分享圖片
(1)CPU上電後,先從S5PV210內部的IROM中讀取預先設置的代碼(BL0)(這段代碼是芯片出廠時就內置的,因為不知道將來外部設備接的是什麽,所以只是對芯片內部進行簡單的初始化),然後執行。這段代碼BL0做了什麽呢?如下圖:
技術分享圖片
BL0首先關閉了看門口定時器,然後初始化指令cache(指令緩存)、初始化棧跟堆、初始化塊設備復制函數和初始化系統時鐘和鎖相環。下一步,BL0根據我們在板子上OM引腳的跳線設置,使用塊設備復制函數從相應的外部存儲設備中復制一段代碼(BL1,這段代碼最大不能超過16KB)到SoC內部的SRAM中,然後檢驗其校驗和,若是校驗和正確,則跳轉至BL1這段代碼在SRAM中的起始地址去執行。若是檢驗和不正確,則跳轉到第二啟動方式啟動,接步驟5。
(2)BL1這段代碼繼續從外部存儲設備中讀取剩余的啟動配置代碼BL2(這段代碼最多不能超過80KB,因為SRAM最大96KB,BL1最大16KB),然後跳轉到BL2這段代碼去執行。
(3)BL2這段代碼首先對內存DRAM進行初始化配置(DRAM上電後不能直接使用,需要經過初始化後才能),然後再將外部存儲設備(外存)中存儲的關於OS(操作系統)初始化的代碼讀至DRAM(內存)中去執行操作系統的初始化,初始化完成後,就可以在內存中啟動操作系統並進行操作了。ps:內存說:終於輪到我上場了,哈哈。
(4)這裏的外部存儲設備(外存)也是要經過初始化才能使用的,這裏應該是在BL0使用塊設備函數從外存復制BL1時執行了初始化。不然就不可以從外存中讀取信息。
(5)上面說的過程是在第一啟動方式成功的情況下的流程,如果第一啟動方式不成功,那麽S5PV210就會跳轉到第二啟動方式去啟動,第一啟動方式是可以通過OM引腳來選擇從哪個外存啟動的,然而第二啟動方式則是固定從SD卡的通道2啟動。具體的實現方式與上面的第一啟動方式差不多,只不過外存介質換了,依舊是從步驟2開始執行。如圖:
技術分享圖片
(6)如果第二啟動方式即SD卡通道2啟動失敗,則跳轉至UART啟動,UART失敗,則跳轉至USB方式啟動,再不行,GG。很好,已經是一塊磚頭了。

5、疑惑:
(1)為啥要將BL1和BL2分開來在SRAM中執行?96KB不是剛好包含了BL1和BL2了嗎?
我聽一位老師說是因為BL0對於外存的初始化力度不夠,因為本身IROM也就64KB,沒辦法做太多的事。只能初始化讀取外存的BL1部分。然後通過BL1繼續初始化外存,再讀取BL2來執行。
(2)BL1固定的16KB?BL2固定的80KB?
技術分享圖片

Cortex A8系列S5PV210的啟動概述