zImage內(nèi)核鏡像下載到開發(fā)板之后,可以使用u-boot的go命令進(jìn)行直接跳轉(zhuǎn),這個(gè)時(shí)候內(nèi)核直接解壓啟動。
但是此時(shí)的內(nèi)核無法掛載文件系統(tǒng),因?yàn)間o命令沒有將內(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個(gè)byte,即為0x40。
(這里你應(yīng)該知道了為什么要使用bootm命令,以及為什么要是有uImage格式)
在前面我們曾經(jīng)分析過Uboot的啟動流程,兩個(gè)階段。
程序最終執(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)系錯(cuò)綜復(fù)雜,而且摻雜關(guān)系復(fù)雜的條件編譯,我們抓住與命令實(shí)現(xiàn)密切相關(guān)的操作來分析命令的實(shí)現(xiàn)原理。
命令實(shí)現(xiàn)的大致流程如下圖所示。
-
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208721 -
命令
+關(guān)注
關(guān)注
5文章
676瀏覽量
21965 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
4896瀏覽量
97059 -
Uboot
+關(guān)注
關(guān)注
4文章
125瀏覽量
28125
發(fā)布評論請先 登錄
相關(guān)推薦
評論