校验流程
这块也不算复杂,后面整理好了之后,一并上传。
下面是u-boot的实验log:
zImage的校验方式
zImage的第37-40个字节存放这zImage的 “魔数”
依据 :
路径 : uboot/common/cmd_bootm.c
函数 : do_bootm( ) ;
#ifdef CONFIG_ZIMAGE_BOOT
#define LINUX_ZIMAGE_MAGIC 0x16f2818
if(argc < 2){
...
}else{
...
}
/**
看 addr + 9 * 4 判断从addr往后的第36个字节后 即 37 ~ 40个字节是否为0x16f2818
好,下面我用 winhex 打开zImage 。
*/
if (*(ulong *)(addr + 9*4) == LINUX_ZIMAGE_MAGIC) {
printf("Boot with zImage\n");
...
}
#endif
uImage的校验方式
uImage = 64字节头信息 + zImage
1 : 为什么这么说?
2 : 64字节头信息又是什么?代表了什么含义?
那么我们来看一下 uImage 和 zImage 的镜像内容。
平台 : hi3520