2025年U-Boot 学习

U-Boot 学习相关概念 参考文章 u boot FIT image 介绍 wowotech net X 010 UBOOT 使用 booti 命令启动 kernel Bubblegum 96 平台 wowotech net FDT device tree 全称是 flattened device tree 后续将会以 FDT 代称

大家好,我是讯享网,很高兴认识大家。

相关概念

参考文章:

u-boot FIT image介绍 (wowotech.net)X-010-UBOOT-使用booti命令启动kernel(Bubblegum-96平台) (wowotech.net)

FDT

device tree(全称是flattened device tree,后续将会以FDT代称)的时候,让同一个Image可以支持多个不同的平台:

Image

linux内核经过编译后会生成一个elf格式的可执行程序,叫vmlinux或vmlinuz,这个就是原始的未经任何处理加工的原版内核elf文件;嵌入式系统部署时烧录的一般不是这个vmlinuz/vmlinux,而是要用objcopy工具去制作成烧录镜像格式,经过制作加工后的烧录镜像文件就叫Image

zImage

对Image进行压缩,并且在image压缩后的文件的前端附加了一部分解压缩代码,构成了一个压缩格式的镜像就叫zImage。运行的时候,通过zImage镜像头部的解压缩代码进行自解压,然后执行解压出来的内核镜像。


讯享网

uImage

uboot为了启动linux内核,还发明了一种内核格式叫uImage。uImage是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其64字节之后与zImage没区别。

此处描述的uImage即为Legacy uImage,uIamge还有另一个版本FIT uImage。

Legacy uImage

 在kernel镜像的基础上,加上64Byte的信息提供给uboot使用,定义在include/image.h中。

/* * 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;

讯享网
小讯
上一篇 2025-01-16 12:40
下一篇 2025-02-20 22:52

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/74646.html