天天看點

X210(三星S5PV210)開發闆啟動過程小結

    最近在學習朱有鵬老師的linux嵌入式核心課程中的第一部分《ARM裸機部分》,學到了S5PV210的啟動過程,在這裡做個小結以加深了解。我使用的開發闆是深圳九鼎創展的X210V3S版本的開發闆。

1. CPU上電後先從内部ROM(三星文檔中稱作iROM)讀取預先燒錄好的代碼BL0(BootLoader 0)執行。這個内部ROM是一塊NorFlash,是以不需要初始化工作,可以直接讀取其中的程式。BL0這段代碼做了一些基本的初始化工作:

1.1 關閉看門狗

1.2 初始化指令Cache

1.3 初始化棧和堆(為了能使用C語言,之前的代碼都要用彙編寫)

1.4 初始化塊裝置的複制函數(後面讀取外部寄存器需要用到)

1.5 初始化PLL和設定系統時鐘

1.6 複制BL1(BootLoader 1)程式到内部SRAM存儲器

1.7 檢查校驗和,若校驗和錯誤,嘗試第二啟動方案

1.8 檢視是否安全啟動模式并做相應的檢查(我暫時不知道啥是安全模式,不影響後面的學習)

1.9 跳轉到BL1程式去執行

注意:由于S5PV210這顆CPU支援休眠模式,事實上在執行步驟1.3之前會判斷目前是否是從休眠模式中喚醒的,如果是從休眠模式喚醒的話就直接跳到步驟1.9去執行BL1程式了;不是休眠模式喚醒的話才按順序執行上面的步驟。為了簡化學習過程,我們假定CPU是從上電開始複位的。

在執行步驟1.6的時候,會根據OM引腳來判斷目前從哪個外設去讀取BL1程式。按照三星給出的官方文檔,支援的外設有SSD/NAND/ONENAND/NORFLASH/SD/USB。我手上這塊開發闆隻支援兩種方式,SD啟動或者USB啟動。把撥碼開關撥到SD卡這邊就會從SD卡讀取BL1程式,撥到USB這邊就會從USB去下載下傳BL1程式。

2. 跳轉到BL1之後就由BL1說了算了,我們來看下BL1程式都幹了哪些活:

2.1 下載下傳BL2(BootLoader 2)程式到SRAM存儲器

2.2 檢視是否安全啟動模式并做相應的檢查(繼續忽略它)

2.3 跳轉到BL2程式去執行

BL1幹的活還是蠻簡單的,就是下載下傳并執行BL2的程式。

3. 跳轉到BL2以後執行的任務就是兩個:

3.1 初始化DRAM控制器,為加載OS(作業系統)做準備

3.2 加載OS鏡像到DRAM,并跳轉到DRAM去執行OS

作業系統開始運作之後,啟動過程就順利結束了。

繼續閱讀