[Feature][ZXW-241]merge P56U01 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: I7985538dde6951dd824c36149bf9a1e3ca23c734
diff --git a/ap/lib/libflags/flags_api.c b/ap/lib/libflags/flags_api.c
index ca52fc2..a0c9ff3 100755
--- a/ap/lib/libflags/flags_api.c
+++ b/ap/lib/libflags/flags_api.c
@@ -668,7 +668,8 @@
int already_write = 0;
unsigned int crc_32 = 0;
-
+ unsigned int crc_32_1 = 0;
+
flags_info.magic_start = FLAGS_MAGIC;
flags_info.boot_fota_flag.boot_to = DUAL_SYSTEM;
@@ -685,10 +686,16 @@
flags_info.magic_end = FLAGS_MAGIC;
crc32init_le();
- crc_32 = crc32_le(0, (unsigned char const *)(&flags_info), sizeof(flags_info));
+ crc_32 = crc32_le(0, (unsigned char const *)(&flags_info), 512);
flags_log("init crc_32=%u", crc_32);
flags_info.crc32 = crc_32;
+
+ crc32init_le();
+ crc_32_1 = crc32_le(0, (unsigned char const *)(&flags_info), sizeof(flags_info));
+ flags_log("init crc_32_1=%u", crc_32_1);
+
+ flags_info.crc32_1 = crc_32_1;
ret = mtd_get(PARTITION_NAME_FLAGS, DEVICE_MTD, mtd_path, MAX_PATH_LEN);
if (ret < 0)
@@ -787,6 +794,7 @@
T_FLAGS_INFO main_flag = {0};
T_FLAGS_INFO backup_flag = {0};
T_FLAGS_INFO p_flags_info_tmp = {0};
+ char delta_F[IMG_NAME_LEN] = {0};
int main_index = 0;
int backup_index = 1;
@@ -811,38 +819,35 @@
return -1;
}
- flags_log("main_flag crc32=%u", main_flag.crc32);
- flags_log("backup_flag crc32=%u", backup_flag.crc32);
-
- if ((0 == main_flag.crc32) && (0 == backup_flag.crc32))
+ flags_log("main_flag crc32=%u, crc32_1=%u", main_flag.crc32, main_flag.crc32_1);
+ flags_log("backup_flag crc32=%u, crc32_1=%u", backup_flag.crc32, backup_flag.crc32_1);
+
+ memset(delta_F, 0xFF, IMG_NAME_LEN);
+
+ if ((0 == memcmp(main_flag.img_size[0].name, delta_F, IMG_NAME_LEN)) && (0 == memcmp(backup_flag.img_size[0].name, delta_F, IMG_NAME_LEN)))
{
- if ((FLAGS_MAGIC == main_flag.magic_start) && (FLAGS_MAGIC == main_flag.magic_end))
+ memcpy(&p_flags_info_tmp, &main_flag, sizeof(T_FLAGS_INFO));
+ memset(p_flags_info_tmp.img_size[0].name, 0, sizeof(T_FLAGS_INFO)-512);
+
+ crc32init_le();
+ p_flags_info_tmp.crc32_1 = crc32_le(0, (unsigned char const *)(&p_flags_info_tmp), sizeof(T_FLAGS_INFO));
+ flags_log("fix old, set crc32_1=%u", p_flags_info_tmp.crc32_1);
+
+ if (set_flags_info(&p_flags_info_tmp, &main_index, &backup_index) != 0)
{
- if ((FLAGS_MAGIC == backup_flag.magic_start) && (FLAGS_MAGIC == backup_flag.magic_end))
- {
- memcpy(&p_flags_info_tmp, &main_flag, sizeof(T_FLAGS_INFO));
- crc32init_le();
- p_flags_info_tmp.crc32 = 0;
- p_flags_info_tmp.crc32 = crc32_le(0, (unsigned char const *)(&p_flags_info_tmp), sizeof(T_FLAGS_INFO));
- flags_log("old version, set crc32=%u", p_flags_info_tmp.crc32);
-
- if (set_flags_info(&p_flags_info_tmp, &main_index, &backup_index) != 0)
- {
- flags_err("old version, set flags info fail");
- return -1;
- }
-
- copy_flags_info(p_flags_info, &main_flag);
- return 0;
- }
+ flags_err("fix old, set flags info fail");
+ return -1;
}
+
+ copy_flags_info(p_flags_info, &main_flag);
+ return 0;
}
- crc32_main = main_flag.crc32;
- crc32_backup = backup_flag.crc32;
+ crc32_main = main_flag.crc32_1;
+ crc32_backup = backup_flag.crc32_1;
- main_flag.crc32 = 0;
- backup_flag.crc32 = 0;
+ main_flag.crc32_1 = 0;
+ backup_flag.crc32_1 = 0;
crc32init_le();
@@ -902,8 +907,13 @@
crc32init_le();
p_flags_info->crc32 = 0;
- p_flags_info->crc32 = crc32_le(0, (unsigned char const *)p_flags_info, sizeof(T_FLAGS_INFO));
+ p_flags_info->crc32 = crc32_le(0, (unsigned char const *)p_flags_info, 512);
flags_log("set crc32=%u", p_flags_info->crc32);
+
+ crc32init_le();
+ p_flags_info->crc32_1 = 0;
+ p_flags_info->crc32_1 = crc32_le(0, (unsigned char const *)p_flags_info, sizeof(T_FLAGS_INFO));
+ flags_log("set crc32_1=%u", p_flags_info->crc32_1);
if (set_flags_info(p_flags_info, &main_index, &backup_index) != 0)
{