UBOOT和uImage

UBOOT和uImage

Inch_D 2018-05-24 19:07:00  4096  收藏 3

分类专栏: UBOOT

版权

1. UImage介绍

UImage是为了配合uboot而定义的一种image格式。在原有的image基础之上,mkimage工具会自动添加一个64字节的头部信息供uboot启动系统来使用。

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

/*

* Legacy format image header,

* all data in network byte order (aka natural aka bigendian).

*/

typedef struct image_header {

uint32_tih_magic;/* Image Header Magic Number*/

uint32_tih_hcrc;/* Image Header CRC Checksum*/

uint32_tih_time;/* Image Creation Timestamp*/

uint32_tih_size;/* Image Data Size*/

uint32_tih_load;/* Data Load  Address*/

uint32_tih_ep;/* Entry Point Address*/

uint32_tih_dcrc;/* Image Data CRC Checksum*/

uint8_tih_os;/* Operating System*/

uint8_tih_arch;/* CPU architecture*/

uint8_tih_type;/* Image Type*/

uint8_tih_comp;/* Compression Type*/

uint8_tih_name[IH_NMLEN];/* Image Name*/

} image_header_t;

里面定义了许多系统镜像相关的 属性,在kernel build的时候会在zImage基础上附加这些信息,行程uImage的头部

2. U-boot 启动UImage

如上图所示,U-BOOT 在boot image的时候会用到两个load地址,其中一个是固定在u-boot image里或者可以通过env变量来调整的load地址,在boot的过程中,uboot从load下来的uImage里拿到头部指定的uImage的loadaddr然后把uImage拷贝到这个指定的地址。uImage头部的

uboot启动系统image的过程如下

从flash或者network下载image到loadaddr

将uImage从loadaddr搬移到uImage指定的loadaddr

PC跳转到uImage header指定的entryaddr,启动系统

————————————————

版权声明:本文为CSDN博主「Inch_D」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_42300045/article/details/80433278

(0)

相关推荐