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

linux uImage/zImage生成过程相关推荐

  1. imx6q调试android7问题Unrecognized filesystem type Bad Linux ARM zImage magic!

    在freescale imx6q板上移植android7到时遇到一个很麻烦的问题: 用mfgtools工具下载android镜像后,启动日志: U-Boot 2015.04-dirty (Aug 15 ...

  2. Linux-Android启动之zImage生成过程详解

    可以看到,在顶层makefile的第278行,包含了scripts/Kbuild.include文件,在这里定义了大量的函数和变量,供顶层makefile和其他makefile文件使用.   在顶层m ...

  3. uImage zImage

    在make内核的时候 在arch/arm/boot/目录下面 会同时生成zImage uImage两个文件 其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M, ...

  4. Linux内核映像vmlinux、Image、zImage、uImage区别

    本文介绍几种常用的Linux内核映像的区别. 一.vmlinux vmlinux:Linux内核编译出来的原始的内核文件,elf格式,未做压缩处理. 该映像可用于定位内核问题,但不能直接引导Linux ...

  5. linux中Image、zImage、bzImage、uImage、vmlinux和vmlinux的区别

    (1)vmlinux:是内核编译出来的原始的内核文件未经压缩的.是ELF格式的,即编译出来的最原始的文件.用于kernel-debug,产生system.map符号表,不能用于直接加载,不可以作为启动 ...

  6. 比较zImage和uImage的区别

    一.vmlinuz vmlinuz是可引导的.压缩的内核."vm"代表"Virtual Memory".Linux 支持虚拟内存,不像老的操作系统比如DOS有6 ...

  7. U-boot mkimage指定Linux内核地址时的两种方式

    uImage的制作是使用的u-boot工具mkimage,build完u-boot后也会将mkimage build出來到/tools目录下,可以直接拿來用,它的作用就是在zImage的前面加上64个 ...

  8. Arm Linux交叉编译和连接过程分析(2)

    二.编译内核镜像过程 1.编译过程中涉及到到文件: /Makefile 编译产生顶层vmlinux镜像文件 /scripts/Kbuild.include make过程中到一些基本定义 /script ...

  9. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程

    Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...

最新文章

  1. 改善用户体验之密码强度提示
  2. pytorch torch.cumsum(input, dim, out=None)函数(沿轴逐级累加)
  3. [codevs 1911] 孤岛营救问题
  4. C#程序中设置全局代理(Global Proxy)
  5. android studio 中 .9.png的制作
  6. MySQL数据库创建用户_修改用户_删除用户_设置用户
  7. *【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐打游戏(bfs,双元bfs,思维)
  8. 国科大prml15-基于浅层模型的计算机视觉--以人脸识别为例
  9. MVVM模式的一个小例子
  10. 巨杉数据库 CTO 王涛:新一代分布式数据库
  11. 吴恩达《机器学习》第十一章:机器学习系统的设计
  12. BigDecimal参数8种舍入方式
  13. Maven pom.xml配置详解
  14. datatable java排序,Java实现DataTable的过滤,排序,聚合功能
  15. python删除指定路径文件_基于python实现删除指定文件类型
  16. 微软 Fluent 设计体系, Fluent UI
  17. 程序反编译找pdf打开密码_即时密码保护PDF文件的免费工具
  18. 皮尔逊、斯皮尔曼、肯德尔相关系数
  19. 图解yarn的作业提交流程
  20. response.sendRedirect 加域名或者不加域名的重定向加locahost或者不加localhost

热门文章

  1. 刷题记录(2023.3.14 - 2023.3.18)
  2. 2019年途家 秋招 研发笔试
  3. OpenFlow协议简介-ielab
  4. win10系统可以做补丁服务器,关于win10从wsus服务器更新补丁的问题
  5. Vue中获取滚动条的高度的方法
  6. git未提交代码找回
  7. ELITEBOOK 惠普 限制功能
  8. Json之JArray的使用方法
  9. Solidity优化 - 减少智能合约gas消耗
  10. Springboot集成oshi远程监控主机