參考U-Boot
U-Boot是什么
嵌入式Linux系統需要一個bootloader來加載系統
U-boot就是一個通用開源的嵌入式Linux bootloader
主要實現的功能:
- 初始化硬件資源(如內存、串口、存儲器等)
- 從存儲介質加載Linux內核到內存中
- 傳遞啟動參數給內核
- 啟動Linux內核
從U-Boot到Linux的具體執行步驟
具體步驟分為匯編和c兩部分
一階段 匯編
初始化時鐘系統
關閉看門狗(防止系統誤復位)
關閉中斷
啟動指令Cache(ICache)
關閉數據Cache與TLB
關閉MMU
初始化SDRAM(用于加載后續程序)
初始化NAND Flash
代碼重定位(將U-Boot代碼搬運至SDRAM中運行)
二階段 C語言階段
初始化串口(便于調試)
打印啟動信息
檢測內存映射情況
從存儲介質讀取Linux內核鏡像和根文件系統(initrd)將內核映象和根文件系統映象從 Flash上讀到SDRAM空間中
設置內核啟動參數
跳轉到Linux內核執行入口(直接修改PC指針指向Linux內核位置)