搞清除,uimage zimage 以及转换方法

时间:2021-04-08 16:37:09

1.首先咱们得搞清除uimage 和zimage的定义和概念

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

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

         3)如何生成uImage文件呢?

               (1)在uboot的/tools目录下寻找mkimage文件mkimage /usr/local/bin目录

                 搞清除,uimage zimage 以及转换方法

                然后cp mkimage /usr/local/bin,这样就完成了制作工具。

                (2)但是咱们还需要一个类似引导文件的脚本,于是有如下脚本:

mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -n "Linux kernel Image by embedclub" -d zImage uImage

              -A 架构 优化等级 操作系统 -T 类型是kernel -C 没有经过解压的 -a(加载地址)  0x30008000 -e(入口) 0x30008040 -n(名字)  -d(源文件) zImage  uImage(目标)

                

                  这当中的-A  -C  什么的编译选项不太懂,望大神指教

        3)把mkaz2uimage 拷贝到 linux---xxxx/arch/arm/boot/

        4)直接执行./mkz2uimage 

              可以看见如下信息搞清除,uimage zimage 以及转换方法

         说明了创建时间,kernel类型,数据大小,下载地址,入口地址。

         5)这时候就看见uImage 出来了

---------------------扩展--------------------------------
2.现在我们回头来看看刚刚编译完内核的时候生成的几个镜像文件

       1)vmlinux  

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

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

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