linux uImage/zImage生成过程

uImage是zImage通过mkimage工具(在u-boot代码的tools目录中)在前面加了一个64Byte的头生成的。

/usr/bin/mkimage也可以用来生成uImage.

 

也可以直接在Image(未压缩)的基础上加64Byte的头生成uImage, 如下修改。

linux-3.18.19/arch/arm/boot/Makefile:

-$(obj)/uImage: $(obj)/zImage FORCE
+$(obj)/uImage: $(obj)/Image FORCE
 
 
生成uImage 的Makefile部分
nux-3.18.19/arch/arm/boot/Makefile:
$(obj)/uImage:  $(obj)/Image FORCE
    @$(check_for_multiple_loadaddr)
    $(call if_changed,uimage)
    @$(kecho) '  Image $@ is ready'
    @cp $@ $(KBUILD_OUTPUT)/

$(call if_changed,uimage)命令,参考 scripts/Makefile.lib中的cmd_uimage

341 # U-Boot mkimage
342 # ---------------------------------------------------------------------------
343
344 MKIMAGE := $(srctree)/scripts/mkuboot.sh
345
346 # SRCARCH just happens to match slightly more than ARCH (on sparc), so reduces
347 # the number of overrides in arch makefiles
348 UIMAGE_ARCH ?= $(SRCARCH)
349 UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
350 UIMAGE_OPTS-y ?=
351 UIMAGE_TYPE ?= kernel
352 UIMAGE_LOADADDR ?= arch_must_set_this
353 UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
354 UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE) - OmniVision ASIC'
355 UIMAGE_IN ?= $<
356 UIMAGE_OUT ?= $@
357
358 quiet_cmd_uimage = UIMAGE  $(UIMAGE_OUT)
359       cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \
360             -C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \
361             -T $(UIMAGE_TYPE) \
362             -a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
363             -n $(UIMAGE_NAME) -d $(UIMAGE_IN) $(UIMAGE_OUT)

 

scripts/mkuboot.sh:

  1 #!/bin/bash
  2
  3 #
  4 # Build U-Boot image when `mkimage' tool is available.
  5 #
  6
  7 MKIMAGE=$(type -path "${CROSS_COMPILE}mkimage")
  8 if [ -z "${MKIMAGE}" ]; then
  9     MKIMAGE=$(type -path mkimage)
 10     if [ -z "${MKIMAGE}" ]; then
 11         # Doesn't exist
 12         echo '"mkimage" command not found - U-Boot images will not be built' >&2
 13         exit 1;
 14     fi
 15 fi
 16
 17 # Call "mkimage" to create U-Boot image
 18 ${MKIMAGE} "$@"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


scripts/mkuboot.sh

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值