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