linux的uboot启动映像,zImage和uImage的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux的uboot启动映像,zImage和uImage的区别相关的知识,希望对你有一定的参考价值。
uboot只是一个启动引导部分的代码 也就是硬件的初始化,堆栈初始化,分配内存这些 后面的image就是系统镜像,真正的操作系统,包括文件管理,内存管理,进程调度这些 zimage和uimage vmlinux是内核文件,zImage是一般情况下默认的压缩内核映像文件,压缩vmlinux,加上一段解压启动代码得到。而uImage则是使用工具mkimage对普通的压缩内核映像文件(zImage)加工而得。它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。其实就是一个自动跟手动的区别,有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需要自己手动去搞那些参数。如何生成uImage文件?首先在uboot的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就完成制作工具。然后在内核目录下运行make uImage,如果成功,便可以在arch/arm/boot/目录下发现uImage文件,其大小比 zImage多64个字节。此外,平时调试用uImage,不用去管调整了哪些东西;zImage则是一切OK后直接烧0X0。开机就运行 参考技术A uboot只是一个启动引导部分的代码也就是硬件的初始化,堆栈初始化,分配内存这些
后面的image就是系统镜像,真正的操作系统,包括文件管理,内存管理,进程调度这些
zimage和uimage
vmlinux是内核文件,zImage是一般情况下默认的压缩内核映像文件,压缩vmlinux,加上一段解压启动代码得到。而uImage则是使用工具mkimage对普通的压缩内核映像文件(zImage)加工而得。它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。其实就是一个自动跟手动的区别,有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需要自己手动去搞那些参数。如何生成uImage文件?首先在uboot的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就完成制作工具。然后在内核目录下运行make uImage,如果成功,便可以在arch/arm/boot/目录下发现uImage文件,其大小比 zImage多64个字节。此外,平时调试用uImage,不用去管调整了哪些东西;zImage则是一切OK后直接烧0X0。开机就运行本回答被提问者和网友采纳 参考技术B uboot启动zImage(go)和uImage(bootm)分析 1.bootm加载linux镜像是加载uIamge,uIamge是由mkimage制作而来,和zIamge的差异是uIamge是zIamge压缩过的,bootm需要先对uIamge解压,解压地址为内核入口地址。当解压完成时uIamge和zIamge几乎是相同的,具体差异可以论述。uboot目前只能支持uImage启动,不支持zImage启动 2.bootm解压过程 --------------------------------------------------------------------------- ## Booting image at 08808000 ... Image Name: Linux-2.6.14.7 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 989172 Bytes = 966 kB Load Address: 08008000 Entry Point: 08008000 Verifying Checksum ... OK 参考技术C 那是你没有mkimage这个工具,这个工具的功能主要把zImage变成板子启动是uboot认可的uImage。
以上是关于linux的uboot启动映像,zImage和uImage的区别的主要内容,如果未能解决你的问题,请参考以下文章
[架构之路-25]:目标系统 - 系统软件 - bootloader uboot内存映射与启动流程
uboot移植之do_bootm函数和do_bootm_linux函数解析