1. 程式人生 > >朱老師ARM裸機學習筆記(四):S5PV210啟動過程詳解

朱老師ARM裸機學習筆記(四):S5PV210啟動過程詳解

常用器件特性

記憶體:
SRAM 靜態記憶體 特點就是容量小、價格高,優點是不需要軟體初始化直接上電就能用
DRAM 動態記憶體 特點就是容量大、價格低,缺點就是上電後不能直接使用,需要軟體初始化後才可以使用。

微控制器中:記憶體需求量小,而且希望開發儘量簡單,適合全部用SRAM
嵌入式系統:記憶體需求量大,而且沒有NorFlash等可啟動介質
PC機: 記憶體需求量大,而且軟體複雜,不在乎DRAM的初始化開銷,適合全部用DRAM

外存:
NorFlash:特點是容量小,價格高,優點是可以和CPU直接匯流排式相連,CPU上電後可以直接讀取,所以一般用作啟動介質。
NandFlash(跟硬碟一樣):特點是容量大,價格低,缺點是不能匯流排式訪問,也就是說不能上電CPU直接讀取,需要CPU先執行一些初始化軟體,然後通過時序介面讀寫。

所以一般PC機都是:很小容量的BIOS(NorFlash)+ 很大容量的硬碟(類似於NandFlash)+ 大容量的DRAM
一般的微控制器: 很小容量的NorFlash + 很小容量的SRAM
嵌入式系統:因為NorFlash很貴,所以現在很多嵌入式系統傾向於不用NorFlash,
直接用:外接的大容量Nand + 外接大容量DRAM + SoC內建SRAM

S5PV210使用的啟動方式是:外接的大容量Nand + 外接大容量DRAM + SoC內建SRAM

S5PV210啟動過程詳解

概述

關於S5PV210的啟動過程和方式,samsung專門提供了一份文件,《S5PV210_iROM_Application Note》,以下啟動過程分析大多翻譯自這本手冊。
S5PV210啟動概述


在這張圖中可以看出S5PV210的啟動可大致分為五個步驟
1、iROM階段(BL0)
2、BL1階段
3、BL2階段
4、拷貝OS到SDRAM
5、啟動OS

samsung在S5PV210內部的IROM中固化了一段程式碼,用於初始化時鐘,識別使用者選擇的啟動模式,並從相應的地方拷貝boot-loader第一階段程式碼到SRAM中執行。此外samsung在S5PV210內部也集成了96KB的內部SRAM,由於SRAM不需要初始化,上電就能使用,因此可當作DRAM初始化之前的程式碼執行空間。

iROM都做了些什麼?

1、關閉看門狗;
2、初始化icache;
3、初始化棧;
4、初始化堆;
5、初始化塊裝置拷貝函式


6、初始化PLL,設定系統時鐘;
7、拷貝BL1到內部的SRAM區域;
8、檢查BL1的校驗和;
9、檢查是否是安全啟動模式;
10、跳轉到BL1的起始程式碼處。

剛開始看S5PV210的啟動過程時有一個地方一直想不明白:Boot-loader程式碼都在Flash中儲存著,iROM是怎麼不初始化Flash並將BL1拷貝到SRAM中執行的(Nand Flash 的初始化程式碼在BL1階段才執行),後來通讀了《S5PV210_iROM_Application Note》後才明白。iROM中固化了一系列的塊裝置拷貝函式,這個塊裝置拷貝函式,就是用來初始化不同種Nand並拷貝程式碼的,關於這些函式手冊2.7節有介紹
Device Copy Function

S5PV210啟動流程圖

這裡寫圖片描述
從圖可以看出210在啟動的時候首先會判斷,系統是從休眠中喚醒還是剛上電,從而決定是重新引導系統還是直接跳轉到OS繼續執行休眠前的程式碼。

然後還有一個”Checksum OK?”的判斷,如果BL1的程式碼檢驗出錯會自動跳轉嘗試用“2nd”方式啟動

S5PV210還提供了一個”Secure Boot” 安全啟動的模式。

S5PV210提供多種啟動方式,其中”1st啟動”可以通過引腳選擇,當”1st啟動”失敗後會嘗試從”2nd啟動”,也就是從SD卡通道2,通過SD卡啟動方式啟動。如果”2nd啟動”仍然失敗,會嘗試從“Uart boot”啟動,如果仍然失敗將會嘗試從 “USB boot”啟動。

iROM 2nd boot-up sequence when 1st bootfail (當1st啟動失敗後的2nd啟動流程)

2nd boot sequence

啟動方式選擇引腳的配置

啟動方式選擇引腳

bootloader、Kernel、filesystem等在nand中的分佈

這裡寫圖片描述

S5PV210的啟動方式很多種,第一次學習的理解就這麼多,做個記錄,相信隨著學習的深入理解也會不一樣,到時候再回來更新。