1.概述
- Bootloader是在系統上電時開始執行一段小程序,
- 主要功能是初始化硬件設備、准備好軟件環境,最后調用操作系統內核。
Bootloader包含兩種不同的操作模式: “啟動加載”模式和“下載”模式,
- 啟動加載模式:這種模式也稱為“自主”模式。也就是 Bootloader 從目標機上的某個固態存儲設備上將操作系統加載到 RAM 中運行,整個過程並沒有用戶的介入。這種模式是嵌入式產品發布時的通用模式。工作在啟動加載模式時,uboot會自動執行bootcmd命令,比如:bootcmd=“nand read 0x100000 0x80000000 0x300000; bootm 0x80000000”。
- 下載模式:在這種模式下,目標機上的 Bootloader 將通過串口連接或網絡連接等通信手段從主機(Host)下載文件,比如:下載內核映像和根文件系統映像等。從主機下載的文件通常首先被 Bootloader 保存到目標機的 RAM 中,然后再被 Bootloader 寫到目標機上的FLASH 類固態存儲設備中。Bootloader 的這種模系統是在更新時使用。工作於這種模式下的Bootloader 通常都會向它的終端用戶提供一個簡單的命令行接口。Bootloader 與主機之間進行文件傳輸常通過以太網連接並借助TFTP協議來下載文件。Ps:tftp a0000000 uImage;tftp b0000000 ramdisk.bin;tftp 90000000 fsl-ls1046a-rdb.dtb
2.Bootloader中典型分區結構圖
- Bootloader是上電后的第一個程序。
- Boot parameteres分區中可設置的參數(IP,串口,傳遞給內核的命令行參數)。
- DTB設備樹文件
- Rootfs文件系統
3.Bootloader啟動流程
Bootloader的啟動流程一般分兩個階段:
Stage1(階段一主要通過匯編語言實現,依賴cpu體系結構初始化
- 進行硬件的初始化(watchdog,ram初始化)。復制Stage2階段代碼到RAM空間。
- 為Stage2加載代碼准備RAM空間。
- 設置好棧。
- 跳轉到第二階段代碼的入口點。
Stage2(階段2主要通過c語言實現,具有好的可讀性和移植性)
- 初始化該階段所用到的硬件設備。
- 檢測系統內存映射。
- 將uImage ,Rootfs,dtb文件從flash讀取到RAM內存中。
- 設置內核啟動參數。(如通過寄存器傳遞設備樹文件的內存地址)