[Feature][ZXW-452]merge P54U02 version
Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No
Change-Id: I17e6795ab66e2b9d1cbbfec4b7c0028d666e177d
diff --git a/boot/common/src/uboot/drivers/misc/load.c b/boot/common/src/uboot/drivers/misc/load.c
index 2c9c8e7..5c3a2b3 100755
--- a/boot/common/src/uboot/drivers/misc/load.c
+++ b/boot/common/src/uboot/drivers/misc/load.c
@@ -65,6 +65,9 @@
uint8_t p_uncompress_size[8];
}lzma_header_t;
+extern void crc32init_le(void);
+extern unsigned int crc32_le(unsigned int crc, unsigned char const *p, size_t len);
+
extern uint32_t ztelzma_compresssize;
extern int lzmanodeflag;
#endif
@@ -1222,6 +1225,9 @@
uint32_t fota_size = sizeof(T_FLAGS_INFO);
nand_info_t *nand = &nand_info[nand_curr_device];
struct fsl_qspi *nor = &spi_nor_flash;
+ unsigned long crc = 0;
+ unsigned long crc_cal = 0;
+ u32 crc_size = sizeof(T_FLAGS_INFO);
flush_dcache_all();
flash_dmabuf_disable_flag = 1;
@@ -1277,8 +1283,15 @@
BOOT_PRINTF(UBOOT_ERR, "[%s]: read the flags error!\n", part_name);
return 1;
}
+
+ /*crc32УÑé*/
+ crc = fotaFlagInfo->crc32;
+ fotaFlagInfo->crc32 = 0;
+ crc32init_le();
+ crc_cal = crc32_le(0,(unsigned char*)fotaFlagInfo,crc_size);
+ printf("crc is 0x%x,crc_cal is 0x%x\n",crc,crc_cal);
- if(fotaFlagInfo->magic_start != FLAGS_MAGIC)
+ if(fotaFlagInfo->magic_start != FLAGS_MAGIC || (crc!= crc_cal && crc != 0))
{
flush_dcache_all();
ret = flash->read(nand,(loff_t)backup_area_offset,
@@ -1294,7 +1307,20 @@
{
printf("flags magic err.\n");
return -1;
- }
+ }
+
+ /*crc32УÑé*/
+ crc = fotaFlagInfo->crc32;
+ fotaFlagInfo->crc32 = 0;
+ crc32init_le();
+ crc_cal = crc32_le(0,(unsigned char*)fotaFlagInfo,crc_size);
+
+ if(crc!= crc_cal && crc != 0)
+ {
+ printf("flags crc err.\n");
+ return -1;
+ }
+
}
}
else if(type == IF_TYPE_NOR)