它们之间有什么区别?
我知道u-boot需要uImage格式的内核。
我使用的系统首先从第一阶段加载程序启动,然后调用 u-boot。我想放弃 u-boot 并直接从第一阶段加载程序启动。我必须使用哪种类型的内核映像?
它们之间有什么区别?
Image:通用 Linux 内核二进制映像文件。
zImage:自解压的 Linux 内核映像的压缩版本。
uImage:具有 U-Boot 包装器的映像文件(由mkimage实用程序),包括操作系统类型和加载程序信息。
一种非常常见的做法(例如典型的 Linux 内核 Makefile)是使用 zImage 文件。由于 zImage 文件是自解压的(即不需要外部解压缩器),因此包装器将指示该内核“未压缩”,即使它实际上是压缩的。
请注意,U-Boot 的作者/维护者认为在 uImage 中使用 zImage 的(广泛)使用是有问题的:
实际上,在 uImage 中使用 zImage 是相当愚蠢的。这是
最好使用普通(未压缩)内核映像,压缩它
仅使用 gzip,并将其用作 mkimage 的 poayload。这边走
U-Boot 进行解压缩,而不是包含另一个
每个内核映像的解压缩器。
(引自https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html)
我必须使用哪种类型的内核映像?
您可以选择任何您想要编程的内容。
为了节省存储空间,您可能应该选择压缩图像而不是未压缩图像。
请注意,执行内核(大概是 Linux 内核)不仅仅涉及将内核映像加载到内存中。根据架构(例如 ARM)和 Linux 内核版本(例如带或不带 DTB),可能需要为内核准备寄存器和内存缓冲区。在一种情况下,U-Boot 执行的硬件初始化也必须被复制。
ADDENDUM
我知道u-boot需要uImage格式的内核。
这对于所有版本的 U-Boot 来说都是准确的,它们只具有bootm命令。
但更新版本的 U-Boot 也可能具有bootz可以启动 zImage 的命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)