arm32上uImage镜像的生成过程

arm32上uImage镜像的生成过程

arch/arm/boot/.Image.cmd :

cmd_arch/arm/boot/Image := arm-himix200-linux-objcopy -O binary -R .comment -S  vmlinux arch/arm/boot/Image

objcopy选项:

  • -O : 输出目标文件格式,这里是二进制格式
  • -R : 移除目标段,这里移除目标的.comment端
  • -S : --strip-all

这里就是用arm-himix200-linux-objcopy工具,将源文件vmlinux生成目标二进制文件arch/arm/boot/Image,中间移除.comment段,并strip all将符合信息去除。

arch/arm/boot/.zImage.cmd :

cmd_arch/arm/boot/zImage := arm-himix200-linux-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage

zImage的来源与Image有差异,规则无差异。

arch/arm/boot/.uImage.cmd :

cmd_arch/arm/boot/uImage := /bin/sh ./scripts/mkuboot.sh -A arm -O linux -C none  -T kernel -a 0x22008000 -e 0x22008000 -n 'Linux-4.9.37' -d arch/arm/boot/zImage-dtb arch/arm/boot/uImage

这里的./scripts/mkuboot.sh脚本实际是调用mkimage工具去生成uImage

mkimage使用说明:

Usage: mkimage -l image
          -l ==> list image header information
       mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image
          -A ==> set architecture to 'arch'
          -O ==> set operating system to 'os'
          -T ==> set image type to 'type'
          -C ==> set compression type 'comp'
          -a ==> set load address to 'addr' (hex)
          -e ==> set entry point to 'ep' (hex)
          -n ==> set image name to 'name'
          -d ==> use image data from 'datafile'
          -x ==> set XIP (execute in place)
       mkimage [-D dtc_options] -f fit-image.its fit-image

使用选项:

  • -A : 指定架构,这里是 arm
  • -O : 指定操作系统,这里是 linux 操作系统
  • -C : 指定压缩方法,这里没有压缩
  • -T : 指定镜像类型,这里是内核镜像
  • -a : 指定加载地址,这里是 0x22008000
  • -e : 指定入口地址,这里是 0x22008000
  • -n : 指定镜像名字,这里是 Linux-4.9.37
  • -d : 指定数据源,这里是 arch/arm/boot/zImage-dtb

arch/arm/boot/Makefile中可以看到zImage-dtb的来源:

$(obj)/zImage:	$(obj)/compressed/vmlinux FORCE
	$(call if_changed,objcopy)

$(obj)/zImage-dtb:	$(obj)/zImage $(DTB_OBJS_FULL) FORCE
	@cat $(obj)/zImage $(DTB_OBJS_FULL) > $@
	@$(kecho) '  Kernel: $@ is ready'

zImage-dtb就是由zImage镜像和$(DTB_OBJS_FULL)目标组成的,这里配置了CONFIG_ARCH_HI3519AV100,生成了hi3519av100-smp-flash.dtb,所以zImage-dtb就是由zImagehi3519av100-smp-flash.dtb组成的。

可以看下面两个图的比较:

在这里插入图片描述

在这里插入图片描述

整个uImage镜像生成的流程大概如下:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值