您好,登錄后才能下訂單哦!
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?
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。