mkimage使用详解

uboot源代码的tools 目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动镜像文件。

mkimage在制作镜像文件的时候,是在原来的可执行镜像文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个镜像文件的CPU体系结构的、操作系统、加载内存的位置, 入口地址等。

使用mkimage命令前,最好将mkimage 命令复制到 /usr/bin 目录下。这样使用的时候不需要mkimage 命令的路径,更为方便。


一、查看mkimage 参数

[root@codeMonkey]# 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'          // 用于指定CPU类型,比如ARM
          -O ==> set operating system to 'os'        // 用于指定操作系统,比如Linux
          -T ==> set image type to 'type'            // 用于指定image类型,比如Kernel
          -C ==> set compression type 'comp'         // 指定压缩类型
          -a ==> set load address to 'addr' (hex)    // 指定image的加载地址
          -e ==> set entry point to 'ep' (hex)       // 指定内核的入口地址,一般是image的载入地址+0x40(信息头的大小)
          -n ==> set image name to 'name'            // image在头结构中的命名
          -d ==> use image data from 'datafile'      // 无头信息的image文件名
          -x ==> set XIP (execute in place)          // 设置执行位置

参数说明:
-A 指定CPU的体系结构:
取值 表示的体系结构 
alpha Alpha 
arm ARM 
x86 Intel x86 
ia64 IA64 
mips MIPS 
mips64 MIPS 64 Bit 
ppc PowerPC 
s390 IBM S390 
sh SuperH 
sparc SPARC 
sparc64 SPARC 64 Bit 
m68k MC68000 

-O 指定操作系统类型,可以取以下值: 
openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos 


-T 指定镜像类型,可以取以下值: 
standalone、kernel、ramdisk、multi、firmware、script、filesystem 


-C 指定镜像压缩方式,可以取以下值: 
none 不压缩 
gzip 用gzip的压缩方式 
bzip2 用bzip2的压缩方式 


-a 指定镜像在内存中的加载地址,镜像下载到内存中时,要按照用mkimage制作镜像时,这个参数所指定的地址值来下载。
-e 指定镜像运行的入口点地址,这个地址就是-a参数指定的值加上0x40。(因为前面有个mkimage添加的0x40个字节的头)
-n 指定镜像名 。
-d 指定制作镜像的源文件 。


二、制作uImage 镜像文件

使用mkimage命令制作uImage 镜像文件

[root@codeMonkey boot]# mkimage -n 'linux-2.6.32' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage
Image Name:   linux-2.6.32
Created:      Sat May 13 14:40:57 2017
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    5697876 Bytes = 5564.33 kB = 5.43 MB
Load Address: 30008000
Entry Point:  30008040

关于各个参数的使用,可以根据上面的实际命令再进行详细分析。

注意:执行这条命令的时候,要到arch/arm/boot 目录下执行!最终会在arch/arm/boot 目录下生成uImage镜像文件。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值