ARM引導過程(s5pv210)
1. 引導過程
s5pv210處理器有 iROM 與 iRAM 兩個存儲器作爲內部存儲器。iROM 有 64k 的空間,而 iRAM 有 96k 的空間。iROM 位於內部 ROM 中,而 iRAM 位於內部 SRAM 中。
在進行安全啓動的過程中,引導程序固化在 iROM 中。採用了 e-fuse (只能進行一次編程,以後便不能再進行更改)的形式。
引導程序主要由 iROM、第一引導順序(the first booting loader, BL1)與第二引導順序(the second booting loader, BL2)組成。iROM 又稱爲 BL0。其詳細內容見如下表格:
名字 | 依賴關係 | 存儲位置 |
---|---|---|
iROM | 平臺獨立 | 內部存儲區 |
BL1 | 平臺獨立 | 外部存儲區 |
BL2 | 指定平臺 | 外部存儲區 |
2. 引導順序
其引導順序如下圖所示:
- iROM 初始化時鐘,堆棧等
iROM將來自指定的引導設備的第一引導順序相關代碼加載到 SRAM 中,然後進行完整性檢測(160 個 e-fuse 會對加載驗證公鑰進行驗證),然後對BL1進行完整性檢測。引導設備由OM引腳指定,引導設備可以是
• General NAND Flash memory
• OneNAND memory
• SD/ MMC memory (such as MoviNAND and iNAND)
• eMMC memory
• eSSD memory
• UART and USB devicesBL1 對 BL2 進行加載並進行完整性檢測。
- BL2 對時鐘、UART、DRAM進行初始化,在完成對 DRAM 的初始化檢測後,加載OS(操作系統)鏡像,由引導設備加載到 DRAM 。然後對 OS 鏡像進行完整性檢測。
- 引導完成後,將一切都交給操作系統。
3. 引導順序例子
例子中的引導過程可以分爲三個部分,如下圖所示:
- 內部 iROM 加載過程
1-1. 關閉看門狗
1-2. 初始化指令緩存控制器
1-3. 初始化堆棧與堆區域
1-4. 檢查安全鑰匙
1-5. 設置時鐘分頻,時鐘節拍,鎖相環(PLL)和時鐘源
1-6. 檢測OM引腳及從 iRAM 加載 BL1。
1-7. 如果安全啓動成功,則執行完整性檢測。
1-8.完整性檢測通過,則將跳轉到BL1進行執行(0xDOO2_0010)。前16個字節存儲安全祕鑰。 - 內部 iRAM 加載過程
2-1. 將BL2從引導驅動設備加載到 iRAM。
2-2. 如果安全啓動成功,則執行完整性檢測。
2-3. 如果完整性檢測通過,則將跳轉到BL2進行執行。
2-4. 如果完整性檢測失敗,則停止BL1。
2-5. BL2 初始化 DRAM 控制器。
2-6. 從指定的引導設備中加載 OS 鏡像到 DRAM
2-7. 跳轉到 OS 代碼進行執行(在 DRAM 中,0x2000_0000或者0x4000_0000)。 - DRAM加載過程
3-1. 如果s5pv210在睡眠,深度睡眠等狀態中甦醒,則恢復原先裝載
3-2. 跳轉到 OS 代碼進行執行
參考文獻
[1] S5PV210芯片手冊