zImage內(nèi)核鏡像下載到開發(fā)板之后,可以使用u-boot的go命令進(jìn)行直接跳轉(zhuǎn),這個時候內(nèi)核直接解壓啟動。
但是此時的內(nèi)核無法掛載文件系統(tǒng),因為go命令沒有將內(nèi)核需要的相關(guān)啟動參數(shù)從u-boot中傳遞給內(nèi)核。
傳遞相關(guān)啟動參數(shù)必須使用u-boot的bootm命令進(jìn)行跳轉(zhuǎn),但是u-boot的bootm命令只能處理uImage鏡像。
uImage相對于zImage在頭部多了64個byte,即為0x40。
(這里你應(yīng)該知道了為什么要使用bootm命令,以及為什么要是有uImage格式)
在前面我們曾經(jīng)分析過Uboot的啟動流程,兩個階段。
程序最終執(zhí)行common/main.c中的main_loop。在此之前都是進(jìn)行一些初始化工作,U-Boot的main_loop函數(shù)相當(dāng)于main主函數(shù)。
main_loop函數(shù)的結(jié)構(gòu)很復(fù)雜,它所做的工作與具體的平臺無關(guān),主要目的是處理用戶輸入的命令和引導(dǎo)內(nèi)核啟動。
(終于看到了引導(dǎo)內(nèi)核加載)
main_loop 函數(shù)的調(diào)用關(guān)系錯綜復(fù)雜,而且摻雜關(guān)系復(fù)雜的條件編譯,我們抓住與命令實現(xiàn)密切相關(guān)的操作來分析命令的實現(xiàn)原理。
命令實現(xiàn)的大致流程如下圖所示。
-
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209323 -
命令
+關(guān)注
關(guān)注
5文章
683瀏覽量
22011 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97371 -
Uboot
+關(guān)注
關(guān)注
4文章
125瀏覽量
28214
發(fā)布評論請先 登錄
相關(guān)推薦
評論