参考 uboot引导内核 Load Address Entry Point
- u-boot引导内核的相关地址 概念
tftp 0x60003000 uImage; //将 uImage 下载到 0x60003000
bootm 0x60003000; // 从 0x60003000 开始解析 uImage ,并按照要求(在uImage头中)行事. 注意: 此时不是从 0x60003000 启动.
$cat arch/arm/boot/.uImage.cmd
cmd_arch/arm/boot/uImage := /bin/bash ./scripts/mkuboot.sh -A arm -O linux -C none -T kernel -a 0x60004000 -e 0x60004000 -n 'Linux-4.0.0' -d arch/arm/boot/zImage arch/arm/boot/uImage
Load Address // 默认 为 ZRELADDR
表示 内核镜像(zImage)想要 住宿 的 内存地址
-a 0x60004000
这个参数 在 uImage头 中有体现, 被 u-boot 解析,u-boot将 zImage 搬移到 0x60004000
Entry Point
表示 当 内核镜像已经 住宿 到内存中去, uboot 要 将控制权 转移到 Entry Point ,也就是 uboot 的 最后一句 kernel_entry(0, machid, r2);
kernel_entry 函数调用前,kernel(zImage)镜像已经在Load Address了.
这个函数的 地址 就是 Entry Point.
这个 Entry Point 就是 解压代码的第一条指令.
-e 0x60004000