# Boot之bootrom啟動順序是怎么樣的
## 引言
在計算機系統啟動過程中,bootrom(啟動只讀存儲器)扮演著至關重要的角色。它是系統上電后最先執行的代碼,負責初始化硬件、加載引導加載程序(bootloader)并最終將控制權交給操作系統。本文將深入探討bootrom的啟動順序,從硬件初始化到操作系統的加載,詳細解析這一復雜而精密的過程。
---
## 1. 什么是bootrom?
bootrom是嵌入在處理器或主板上的只讀存儲器(ROM),包含系統啟動時必需的固件代碼。它的主要功能包括:
- **硬件初始化**:配置CPU、內存控制器、時鐘等關鍵硬件
- **安全驗證**:檢查后續加載的代碼(如bootloader)的完整性和真實性
- **引導加載**:從存儲設備(如Flash、eMMC、SD卡等)加載bootloader
bootrom通常由芯片廠商預先燒錄,用戶無法直接修改,這保證了系統啟動的基礎安全性。
---
## 2. bootrom啟動的硬件基礎
### 2.1 復位向量(Reset Vector)
當系統上電或復位時,CPU會從預定義的地址(復位向量)開始執行指令。這個地址通常指向bootrom的起始位置。
```assembly
示例(ARM架構):
復位向量地址:0x00000000
第一條指令:LDR PC, =Reset_Handler
bootrom需要首先配置: - 系統時鐘(PLL/DLL) - 電源管理單元(PMU) - 電壓調節器
在DRAM可用之前,bootrom可能使用: - 芯片內部SRAM - Cache作為臨時內存(如ARM的TCM)
// 偽代碼示例
void start_bootrom() {
disable_interrupts();
setup_exception_vectors();
init_stack_pointer(0x20000000); // 使用內部SRAM
}
外設 | 初始化動作 |
---|---|
時鐘 | 配置PLL,設置CPU/總線頻率 |
串口 | 初始化調試輸出接口(可選) |
GPIO | 設置關鍵引腳狀態(如啟動模式選擇) |
定時器 | 初始化看門狗定時器 |
bootrom會按預設順序嘗試從不同設備加載bootloader:
graph TD
A[開始] --> B{檢測啟動介質}
B -->|eMMC| C[加載eMMC boot分區]
B -->|SPI Flash| D[讀取0x8000偏移]
B -->|SD卡| E[讀取MBR]
B -->|無設備| F[進入USB下載模式]
現代bootrom通常包含安全機制: - 數字簽名驗證:使用RSA/ECC驗證bootloader簽名 - 哈希校驗:計算SHA-256等哈希值比對 - 防回滾:檢查鏡像版本號是否高于最低允許版本
驗證失敗會導致系統進入恢復模式或完全鎖定。
# 典型串口輸出示例
[BOOTROM] Version 1.2.3
[CLOCK] PLL locked at 800MHz
[DRAM] Initializing DDR4...
bootrom的啟動順序是計算機系統中最精密的基礎過程之一。從硬件初始化到安全驗證,每個步驟都至關重要。理解這一過程不僅有助于系統調試,也是設計可靠嵌入式系統的關鍵。隨著技術的發展,bootrom的功能將更加豐富,但其核心目標始終不變——為系統提供安全、可靠的啟動基礎。
“計算機的啟動過程就像一場精心編排的交響樂,而bootrom就是那位舉起指揮棒的第一人。” —— 匿名工程師 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。