朱老師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的啓動方式很多種,第一次學習的理解就這麼多,做個記錄,相信隨着學習的深入理解也會不一樣,到時候再回來更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章