- ? 1.uboot 調(diào)用do_bootm_linux 中的 theKernel (0, machid, bd->bi_boot_params)進入kernel部分代碼
該函數(shù)最終會通過r0,r1,r2這三個寄存器分別把0、machid、傳遞傳參的首地址傳給kernel。
- ? 2.Kernel 的入口 在head.S中ENTRY(stext)處, 此階段是匯編階段 ,此階段會解析r0,r1,r2(也就是uboot的傳參)最終會通過進入start_kernel,進入到c語言環(huán)境執(zhí)行。
經(jīng)過前面uboot的準備工作,通過theKernel (0, machid, bd->bi_boot_params);
開始進入到kernel部分開始執(zhí)行。
其中 第二個參數(shù)為機器 ID,第三參數(shù)為 u-boot 傳遞給內(nèi)核參數(shù)存放在內(nèi)存中的首地址 ,此處是 0x30000100
由 zImage 的生成過程我們可以知道,第一階段運行的內(nèi)核映像實際就是arch/arm/boot/compressed/vmlinux,而這一階段所涉及的文件也只有三個:
- ? (1)arch/arm/boot/compressed/vmlinux.lds
- ? (2)arch/arm/boot/compressed/head.S
- ? (3)arch/arm/boot/compressed/misc.c
下面我們的分析集中在 arch/arm/boot/compressed/head.S, 適當參考 vmlinux.lds 。
從linux/arch/arm/boot/compressed/vmlinux.lds文件可以看出head.S的入口地址為ENTRY(_start),也就是head.S匯編文件的_start標號開始的第一條指令。
-
內(nèi)核
+關注
關注
4文章
1427瀏覽量
42220 -
Linux
+關注
關注
88文章
11576瀏覽量
216622 -
Uboot
+關注
關注
4文章
129瀏覽量
29574 -
Kernel
+關注
關注
0文章
49瀏覽量
11923
發(fā)布評論請先 登錄
學習單片機的第一步是什么??
怎么讓直流電源執(zhí)行時 一步一步執(zhí)行
用JTAG調(diào)試ARM程序第一步就跳飛了是什么原因
請問SPT3.1 PeakSearch第一步怎么用?
踏出成功職業(yè)生涯的第一步
R2推動微軟向云計算邁出第一步
MP3選購第一步 了解存儲介質和格式
邁出邁向更可持續(xù)未來的第一步

評論