uimage zimage

uimage 和zimage的定义和概念

         1)大小:内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M.

         2)用途:  uimage是uboot专用的映像文件。它是在zImage之前加上一个长度为64字节"头",说明这个内核的版本,加载位置,生成时间,大小等信息。其0x40之后与zImage没区别

64字节的头部信息定义如下:

/*
 * Legacy format image header,
 * all data in network byte order (aka natural aka bigendian).
 */
typedef struct image_header {
    uint32_t    ih_magic;    /* Image Header Magic Number    */
    uint32_t    ih_hcrc;    /* Image Header CRC Checksum    */
    uint32_t    ih_time;    /* Image Creation Timestamp    */
    uint32_t    ih_size;    /* Image Data Size        */
    uint32_t    ih_load;    /* Data     Load  Address        */
    uint32_t    ih_ep;        /* Entry Point Address        */
    uint32_t    ih_dcrc;    /* Image Data CRC Checksum    */
    uint8_t     ih_os;        /* Operating System        */
    uint8_t     ih_arch;    /* CPU architecture        */
    uint8_t     ih_type;    /* Image Type            */
    uint8_t     ih_comp;    /* Compression Type        */
    uint8_t     ih_name[IH_NMLEN];    /* Image Name        */
} image_header_t;

刚刚编译完内核的时候生成的几个镜像文件

       1)vmlinux            在linux的根目录下,是编译出来的最原始内核文件,未压缩

       2)zImage             是vmlinux经过gzip压缩后的文件

       3)uimage           是u-boot专用内核映像文件

uboot启动系统image的过程如下

  • 从flash或者network下载  image  到  loadaddr
  • 将  uImage  从 loadaddr 搬移到  uImage 指定的  loadaddr
  • PC跳转到uImage header指定的entryaddr,启动系统

如何生成uImage文件

首先在uboot的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就完成制作工具。然后在内核目录下运行make uImage,如果成功,便可以在arch/arm/boot/目录下发现uImage文件,其大小比 zImage多64个字节。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值