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)
     {
