2.6 内核树的 Makefile 提供了创建 uImage 的方法,但需要我们提供相应的 mkimage 命令。所以首先拷贝 uboot 中 tools目录下编译后生成的 mkimage 到/usr/bin/下,然后便可以在内核根目录下通过make uImage来创建uImage 文件。该文件生成在 arch/arm/boot/下。
2.2.2 修改内核的 Makefile 文件
[arm@localhost linux2.6.14.1]$ vi arch/arm/boot/Makefile
#MKIMAGE 变量记录 mkimage 命令的路径 mkuboot.sh 脚本文件可以 scripts 目录中找到
MKIMAGE := $(srctree)/scripts/mkuboot.sh
#zreladdry 与 params_physy 可以在 arch/arm/machs3c2410/Makefile.boot 当中找到
ZRELADDR := $(zreladdry)
PARAMS_PHYS := $(params_physy)
INITRD_PHYS := $(initrd_physy)
#生成 uImage 的 mkImage 命令行,其中需要关注的就是a 与 e 参数。
#参数a:指明 uImage 加载的 SDRAM 地址,内核默认指定加载地址为 0x30008000。
#uboot 引导时,bootm 命令跳到与上相同位置执行,检查完镜像头后,它会跳到内核真正的入口点开
始执行。
#参数e:指明 uImage 中刨去镜像头后真正的内核入口地址。
#镜像头为 0x40 长,故此处指定为 0x30008040。
#uboot 引导时,go 命令可以直接指定此位置。go 命令不检查镜像头。
quiet_cmd_uimage = UIMAGE $@
cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) A arm O linux T kernel \
-C none a $(ZRELADDR) e 0x30008040 \
-n 'Linux$(KERNELRELEASE)' d $< $@
本文介绍如何在2.6内核树中使用Makefile创建uImage文件,涉及mkimage命令的配置与使用,以及内核Makefile中关键参数的设置,如加载地址与入口地址。
9195

被折叠的 条评论
为什么被折叠?



