前言
内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。
uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的tag。
一 编译制作上的区别
制作zImage文件内核顶层目录下的Makefile中设置好相关参数后,make zImage即可生成
制作uImage文件首先在uboot的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就完成制作工具。然后在内核目录下运行make uImage。
Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。
生成 zImage的Makefile 和生成uImage有什么不同?加了什么支持?
E:\my works\SourceInsight\linux-2.6.32.2-20130614\arch\arm\boot\Makefile
14行 MKIMAGE := $(srctree)/scripts/mkuboot.sh
63行 quiet_cmd_uimage = UIMAGE $@
cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
-C none -a $(LOADADDR) -e $(STARTADDR) \
-n 'Linux-$(KERNELRELEASE)' -d $< $@
E:\my works\SourceInsight\linux-2.6.32.2-20130614\scripts\mkuboot.sh
-
MKIMAGE=$(type -path "${CROSS_COMPILE}mkimage")
-
-
if [ -z "${MKIMAGE}" ]; then
-
MKIMAGE=$(type -path mkimage)
-
if [ -z "${MKIMAGE}" ]; then
-
# Doesn't exist
-
echo '"mkimage" command not found - U-Boot images will not be built
-
exit 0;
-
fi
-
fi
-
# Call "mkimage" to create U-Boot image
-
${MKIMAGE} "$@"
二 zImage和uImage本体上的区别
zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。
三 放在NAND Flash中启动时的区别
阅读(996) | 评论(0) | 转发(0) |