该函数最终会通过r0,r1,r2这三个寄存器分别把0、machid、传递传参的首地址传给kernel。
经过前面uboot的准备工作,通过theKernel (0, machid, bd->bi_boot_params);
开始进入到kernel部分开始执行。
其中 第二个参数为机器 ID,第三参数为 u-boot 传递给内核参数存放在内存中的首地址 ,此处是 0x30000100
由 zImage 的生成过程我们可以知道,第一阶段运行的内核映像实际就是arch/arm/boot/compressed/vmlinux,而这一阶段所涉及的文件也只有三个:
下面我们的分析集中在 arch/arm/boot/compressed/head.S, 适当参考 vmlinux.lds 。
从linux/arch/arm/boot/compressed/vmlinux.lds文件可以看出head.S的入口地址为ENTRY(_start),也就是head.S汇编文件的_start标号开始的第一条指令。
全部0条评论
快来发表一下你的评论吧 !