[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/boot/common/src/loader/drivers/flash.h b/boot/common/src/loader/drivers/flash.h
index 2fe2ddb..4a8088e 100755
--- a/boot/common/src/loader/drivers/flash.h
+++ b/boot/common/src/loader/drivers/flash.h
@@ -20,6 +20,7 @@
 #define _FLASH_H_

 

 #include <linux/types.h>

+#include "pub_flags.h"

 

 #define 	NOR_BOOT		0x0

 #define 	NAND_BOOT		0x1

@@ -41,6 +42,20 @@
 	void (*read_oob)(uint8_t *buf, uint32_t offset, uint32_t len);

 };

 

+typedef struct

+{

+	unsigned int magic_start;  /* Êý¾ÝÓÐЧÐÔħÊõ×Ö */

+	

+    T_BOOT_FOTA_FLAG 	boot_fota_flag;

+    T_BOOT_ENV 			boot_env;

+	T_UBIFS_STATUS		ubifs_status;

+	unsigned int        nvro_flag;

+	unsigned int		crc32;

+	T_BOOT_TARGET		ota_system; /* Éý¼¶Ê±ÊÇϵͳA»¹ÊÇϵͳB */

+	T_AA_PARTITION_INFO ota_partiton_info[OTA_PARTITION_NUM_MAX]; /* ÈÝÄÉ×î¶à15¸öÉý¼¶·ÖÇøµÄimage¾µÏñ´óС */

+	char reserve[52];

+	unsigned int magic_end;  /* Êý¾ÝÓÐЧÐÔħÊõ×Ö */

+} T_FLAGS;

 

 extern struct flash_type flash;

 

diff --git a/boot/common/src/loader/lib/board.c b/boot/common/src/loader/lib/board.c
index f6651cb..b72ce93 100755
--- a/boot/common/src/loader/lib/board.c
+++ b/boot/common/src/loader/lib/board.c
@@ -147,7 +147,7 @@
 	uint32_t amt_value = 0;
 	int32_t err_flag = 0;
     T_BOOT_TARGET bootTarget;
-	T_FLAGS_INFO flagsData;
+	T_FLAGS flagsData;
 	T_FLAGS_INFO *fotaFlag;
 	T_BOOT_DUALSYSTEM_TYPE dualSystemType;
 
diff --git a/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_mdl_ab.c b/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_mdl_ab.c
index 8b0e1ae..50140b7 100755
--- a/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_mdl_ab.c
+++ b/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_mdl_ab.c
@@ -81,6 +81,7 @@
 extern uint32_t g_gmac_init_flag;
 extern uint32_t g_gmac_init_overtime;
 extern unsigned char g_ddr_size_flag;
+extern T_IMG_SIZE img_size[IMG_NUM];
 
 unsigned int g_uiDebugLevel = UBOOT_NOTICE;
 unsigned int g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM32_A9_SIZE;
@@ -492,44 +493,42 @@
 	return offset;
 }
 
-int rewrite_flags(void)
+int write_flags_partition(void)
 {
-    uint32_t off = 0;
-	uint32_t flags_size = 0;/*flags·ÖÇø2M*/
-	uint32_t blockNum = 0;
-	uint32_t work_area_offset = 0;
-	uint32_t backup_area_offset = 0;
 	int ret = 0;
-	int type = 0;
-	uchar * flags_name = "flags";
 	T_FLAGS_INFO fotaFlagInfo = {0};
-	T_DualSystem_Status system_status;
-	system_status.status = DUALSYSTEM_STATUS_UNBOOTABLE;
-	u32 fota_size = sizeof(T_FLAGS_INFO);
-	fota_size = page_align(fota_size);
-	unsigned long crc = 0;
-	u32 crc_size = sizeof(T_FLAGS_INFO);
 	
-	nand_info_t *nand = &nand_info[nand_curr_device];
-	struct fsl_qspi *nor = &spi_nor_flash;
-	uint32_t part_offset = 0;
-	struct flash_ops *flash = NULL;
-	flash_dmabuf_disable_flag = 1;
-	nand_erase_options_t opts;
-
-	flash = get_flash_ops();
-	type = read_boot_flashtype();
-
-	/* ѰÕÒ·ÖÇø */
-	partition_entry_t * entry = find_partition_para(flags_name);
-	if( entry == NULL )
+	/*¶ÁÈ¡flags·ÖÇø*/
+	ret = load_flags(&fotaFlagInfo);
+	if(ret != 0)
 	{
-		BOOT_PRINTF(UBOOT_ERR, "[%s]: can't find the partition...\n", flags_name);
+		printf("read flags partition err.\n");
 		return -1;
 	}
-	/* »ñµÃ·ÖÇøÊ×µØÖ·ºÍ´óС */
-	part_offset = entry->part_offset;
-	flags_size = entry->part_size;
+
+	/*д»Øflags·ÖÇø*/
+	fotaFlagInfo.ota_system = 0;
+	fotaFlagInfo.sync_system = 0;
+	//memset(fotaFlagInfo.img_size, 0, sizeof(fotaFlagInfo) - 512);
+	memcpy(fotaFlagInfo.img_size, img_size, sizeof(img_size));
+
+	ret = write_flags(&fotaFlagInfo);
+	if(ret != 0)
+	{
+		printf("write flags partition err.\n");
+		return -1;
+	}
+	
+	printf("already write flags partition!\n");
+	//system_reset();
+	
+    return 0;
+}
+
+int rewrite_flags(void)
+{
+	int ret = 0;
+	T_FLAGS_INFO fotaFlagInfo = {0};
 	
 	/*ÉèÖÃĬÈÏflags·ÖÇøÊý¾Ý*/
     fotaFlagInfo.magic_start = FLAGS_MAGIC;
@@ -539,151 +538,27 @@
 	fotaFlagInfo.boot_fota_flag.system2.status = DUALSYSTEM_STATUS_BOOTABLE;
     fotaFlagInfo.boot_env.dualsys_type = DUALSYSTEM_AB;
 	fotaFlagInfo.magic_end = FLAGS_MAGIC;
-	/*crc32*/
-	fotaFlagInfo.crc32 = 0;
-	crc32init_le();
-	crc = crc32_le(0,(unsigned char*)(&fotaFlagInfo),crc_size);
-	fotaFlagInfo.crc32 = crc;
 
-	/*дÈëflags·ÖÇø*/
-	if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+	/*д»Øflags·ÖÇø*/	
+
+	ret = write_flags(&fotaFlagInfo);
+	if(ret != 0)
 	{
-        
-	   /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-		for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
-		{
-			if (!(nand_block_isbad(nand,off))) 
-				blockNum += 1;
-			
-			if(blockNum == 1)
-				work_area_offset = off;
-			
-			else if(blockNum == 2)
-			{
-				 backup_area_offset = off;
-				 break;
-			}		
-		}
-	
-		if(blockNum < 2)
-		{
-			printf("flags partition have not enough space!\n");
-				
-			return -1;
-		}
-		
-		/*²Á³ýflagsÖ÷·ÖÇø*/
-		memset(&opts, 0, sizeof(opts));
-		opts.offset = work_area_offset;
-		opts.length = fota_size;
-		ret = flash->erase(nand,&opts);
-
-		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
- 			return 1;
- 		}
-
-		ret = flash->write(nand,(loff_t)(work_area_offset),
-				  &fota_size,(u_char *)(&fotaFlagInfo),0);
-		
- 		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
- 			return 1;
- 		}
-	
-		/*²Á³ýflags±¸ÓÃÇø*/
-		memset(&opts, 0, sizeof(opts));
-		opts.offset = backup_area_offset;
-		opts.length = fota_size;
-		ret += flash->erase(nand,&opts);
-
-		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
- 			return 1;
- 		}
-		
-		ret += flash->write(nand,(loff_t)(backup_area_offset),
-				  &fota_size,(u_char *)(&fotaFlagInfo),0);
- 		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
- 			return 1;
- 		}
-	}
-	else if(type == IF_TYPE_NOR)
-	{   
-        /*²Á³ýflags·ÖÇø*/
-		work_area_offset = part_offset;
-        backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-		ret = nand_erase(&(nor->nor[0].mtd), (loff_t)(work_area_offset), fota_size);
-		ret += nand_erase(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), fota_size);
-		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs error!\n", flags_name);
- 			return 1;
- 		}
-		
-		ret = nand_write(&(nor->nor[0].mtd), (loff_t)(work_area_offset), 
-						&fota_size, (u_char *)(&fotaFlagInfo));
-		ret += nand_write(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), 
-						&fota_size, (u_char *)(&fotaFlagInfo));
-		if(ret != 0)
-		{
-			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs error!\n", flags_name);
-			return 1;
-		}
+		printf("rewrite flags partition err.\n");
+		return -1;
 	}
 	
-	printf("flags partition data is error,already rewrite default parameters!\n");
-	//system_reset();
+	printf("already rewrite flags partition!\n");
 	
-	flash_dmabuf_disable_flag = 0; 
-    flush_dcache_all();
     return 0;
 }
 
 int writeback_flags(void)
 {
-    uint32_t off = 0;
-	uint32_t flags_size = 0;/*flags·ÖÇø2M*/
-	uint32_t blockNum = 0;
-	uint32_t work_area_offset = 0;
-	uint32_t backup_area_offset = 0;
 	int ret = 0;
-	int type = 0;
-	uchar * flags_name = "flags";
 	T_FLAGS_INFO fotaFlagInfo = {0};
 	T_DualSystem_Status system_status;
 	system_status.status = DUALSYSTEM_STATUS_UNBOOTABLE;
-	u32 fota_size = sizeof(T_FLAGS_INFO);
-	fota_size = page_align(fota_size);
-	
-	nand_info_t *nand = &nand_info[nand_curr_device];
-	struct fsl_qspi *nor = &spi_nor_flash;
-	uint32_t part_offset = 0;
-	struct flash_ops *flash = NULL;
-	flash_dmabuf_disable_flag = 1;
-	nand_erase_options_t opts;
-
-	flash = get_flash_ops();
-	type = read_boot_flashtype();
-
-	unsigned long crc = 0;
-	u32 crc_size = sizeof(T_FLAGS_INFO);
-	
-	/* ѰÕÒ·ÖÇø */
-	partition_entry_t * entry = find_partition_para(flags_name);
-	if( entry == NULL )
-	{
-		BOOT_PRINTF(UBOOT_ERR, "[%s]: can't find the partition...\n", flags_name);
-		return -1;
-	}
-	/* »ñµÃ·ÖÇøÊ×µØÖ·ºÍ´óС */
-	part_offset = entry->part_offset;
-	flags_size = entry->part_size;
 	
 	/*¶ÁÈ¡flags·ÖÇø*/
 	ret = load_flags(&fotaFlagInfo);
@@ -699,210 +574,33 @@
         fotaFlagInfo.boot_fota_flag.boot_to = DUAL_SYSTEM2;
 		fotaFlagInfo.boot_fota_flag.system = system_status;
 		fotaFlagInfo.boot_fota_flag.fota_status = 1;
-		/*crc32*/
-		fotaFlagInfo.crc32 = 0;
-		crc32init_le();
-    	crc = crc32_le(0,(unsigned char*)(&fotaFlagInfo),crc_size);
-		fotaFlagInfo.crc32 = crc;
 
-		if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+		ret = write_flags(&fotaFlagInfo);
+		if(ret != 0)
 		{
-            
-		   /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-			for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
-			{
-				if (!(nand_block_isbad(nand,off))) 
-					blockNum += 1;
-				
-				if(blockNum == 1)
-					work_area_offset = off;
-				
-				else if(blockNum == 2)
-				{
-					 backup_area_offset = off;
-					 break;
-				}		
-			}
-		
-			if(blockNum < 2)
-			{
-				printf("flags partition have not enough space!\n");
-					
-				return -1;
-			}
-			
-			/*²Á³ýflagsÖ÷·ÖÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = work_area_offset;
-			opts.length = fota_size;
-			ret = flash->erase(nand,&opts);
+			printf("writeback flags partition err.\n");
+			return -1;
+		}	
 
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-
-			ret = flash->write(nand,(loff_t)(work_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			/*²Á³ýflags±¸ÓÃÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = backup_area_offset;
-			opts.length = fota_size;
-			ret += flash->erase(nand,&opts);
-
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret += flash->write(nand,(loff_t)(backup_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
-		}
-		else if(type == IF_TYPE_NOR)
-		{   
-            /*²Á³ýflags·ÖÇø*/
-			work_area_offset = part_offset;
-	        backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-			ret = nand_erase(&(nor->nor[0].mtd), (loff_t)(work_area_offset), fota_size);
-			ret += nand_erase(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), fota_size);
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret = nand_write(&(nor->nor[0].mtd), (loff_t)(work_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			ret += nand_write(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			if(ret != 0)
-			{
-				BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs error!\n", flags_name);
-				return 1;
-			}
-		}
 		printf("system boot status is changed to unbootable!\n");
-		//system_reset();
+
 	}
 	else if(fotaFlagInfo.boot_fota_flag.boot_to == DUAL_SYSTEM2)
     {
         fotaFlagInfo.boot_fota_flag.boot_to = DUAL_SYSTEM;
 		fotaFlagInfo.boot_fota_flag.system2 = system_status;
 		fotaFlagInfo.boot_fota_flag.fota_status = 1;
-		/*crc32*/
-		fotaFlagInfo.crc32 = 0;
-		crc32init_le();
-    	crc = crc32_le(0,(unsigned char*)(&fotaFlagInfo),crc_size);
-		fotaFlagInfo.crc32 = crc;
 
-		if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+		ret = write_flags(&fotaFlagInfo);
+		if(ret != 0)
 		{
-            /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-			for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
-			{
-				if (!(nand_block_isbad(nand,off))) 
-					blockNum += 1;
-				
-				if(blockNum == 1)
-					work_area_offset = off;
-				
-				else if(blockNum == 2)
-				{
-					 backup_area_offset = off;
-					 break;
-				}		
-			}
-		
-			if(blockNum < 2)
-			{
-				printf("flags partition have not enough space!\n");
-					
-				return -1;
-			}
-			
-			/*²Á³ýflagsÖ÷·ÖÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = work_area_offset;
-			opts.length = fota_size;
-			ret = flash->erase(nand,&opts);
-
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-
-			ret = flash->write(nand,(loff_t)(work_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-		
-			/*²Á³ýflags±¸ÓÃÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = backup_area_offset;
-			opts.length = fota_size;
-			ret += flash->erase(nand,&opts);
-
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret += flash->write(nand,(loff_t)(backup_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
+			printf("writeback flags partition err.\n");
+			return -1;
 		}
-		else if(type == IF_TYPE_NOR)
-		{
-            /*²Á³ýflags·ÖÇø*/
-			work_area_offset = part_offset;
-	        backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-			ret = nand_erase(&(nor->nor[0].mtd), (loff_t)(work_area_offset), fota_size);
-			ret += nand_erase(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), fota_size);
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret = nand_write(&(nor->nor[0].mtd), (loff_t)(work_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			ret += nand_write(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			if(ret != 0)
-			{
-				BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs error!\n", flags_name);
-				return -1;
-			}
-		}
-		//flash.write(nand,(loff_t)part_offset,&flagsSize,(u_char *)(&fotaFlag),0);
+
 		printf("system2 boot status is changed to unbootable!\n");
 	}
-	
-	flash_dmabuf_disable_flag = 0; 
-    flush_dcache_all();
+
     return 0;
 }
 
@@ -935,6 +633,7 @@
 static int read_imagefs_flag(void)
 {
     int ret = 0;
+	char name[IMG_NAME_LEN];
     /* ¶ÁÈ¡flags·ÖÇø */
 	T_FLAGS_INFO fotaFlagInfo;
 	ret = load_flags(&fotaFlagInfo);
@@ -943,6 +642,12 @@
 		printf("read flags partition err.\n");
 		return -1;
 	}
+
+    memset(name, 0xff, IMG_NAME_LEN);
+	if(!memcmp(fotaFlagInfo.img_size[0].name, name, IMG_NAME_LEN)){
+		printf("update the image size...\n");
+        write_flags(&fotaFlagInfo);
+	}
 	
     if(fotaFlagInfo.boot_fota_flag.boot_to == DUAL_SYSTEM)
     {
diff --git a/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc.c b/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc.c
index 23bf246..bc89988 100755
--- a/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc.c
+++ b/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc.c
@@ -81,6 +81,7 @@
 extern uint32_t g_gmac_init_flag;
 extern uint32_t g_gmac_init_overtime;
 extern unsigned char g_ddr_size_flag;
+extern T_IMG_SIZE img_size[IMG_NUM];
 
 unsigned int g_uiDebugLevel = UBOOT_NOTICE;
 unsigned int g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM32_A9_SIZE;
@@ -493,44 +494,42 @@
 	return offset;
 }
 
-int rewrite_flags(void)
+int write_flags_partition(void)
 {
-    uint32_t off = 0;
-	uint32_t flags_size = 0;/*flags·ÖÇø2M*/
-	uint32_t blockNum = 0;
-	uint32_t work_area_offset = 0;
-	uint32_t backup_area_offset = 0;
 	int ret = 0;
-	int type = 0;
-	uchar * flags_name = "flags";
 	T_FLAGS_INFO fotaFlagInfo = {0};
-	T_DualSystem_Status system_status;
-	system_status.status = DUALSYSTEM_STATUS_UNBOOTABLE;
-	u32 fota_size = sizeof(T_FLAGS_INFO);
-	fota_size = page_align(fota_size);
-	unsigned long crc = 0;
-	u32 crc_size = sizeof(T_FLAGS_INFO);
 	
-	nand_info_t *nand = &nand_info[nand_curr_device];
-	struct fsl_qspi *nor = &spi_nor_flash;
-	uint32_t part_offset = 0;
-	struct flash_ops *flash = NULL;
-	flash_dmabuf_disable_flag = 1;
-	nand_erase_options_t opts;
-
-	flash = get_flash_ops();
-	type = read_boot_flashtype();
-
-	/* ѰÕÒ·ÖÇø */
-	partition_entry_t * entry = find_partition_para(flags_name);
-	if( entry == NULL )
+	/*¶ÁÈ¡flags·ÖÇø*/
+	ret = load_flags(&fotaFlagInfo);
+	if(ret != 0)
 	{
-		BOOT_PRINTF(UBOOT_ERR, "[%s]: can't find the partition...\n", flags_name);
+		printf("read flags partition err.\n");
 		return -1;
 	}
-	/* »ñµÃ·ÖÇøÊ×µØÖ·ºÍ´óС */
-	part_offset = entry->part_offset;
-	flags_size = entry->part_size;
+
+	/*д»Øflags·ÖÇø*/
+	fotaFlagInfo.ota_system = 0;
+	fotaFlagInfo.sync_system = 0;
+	//memset(fotaFlagInfo.img_size, 0, sizeof(fotaFlagInfo) - 512);
+	memcpy(fotaFlagInfo.img_size, img_size, sizeof(img_size));
+
+	ret = write_flags(&fotaFlagInfo);
+	if(ret != 0)
+	{
+		printf("write flags partition err.\n");
+		return -1;
+	}
+	
+	printf("already write flags partition!\n");
+	//system_reset();
+	
+    return 0;
+}
+
+int rewrite_flags(void)
+{
+	int ret = 0;
+	T_FLAGS_INFO fotaFlagInfo = {0};
 	
 	/*ÉèÖÃĬÈÏflags·ÖÇøÊý¾Ý*/
 	fotaFlagInfo.magic_start = FLAGS_MAGIC;
@@ -540,151 +539,27 @@
 	fotaFlagInfo.boot_fota_flag.system2.status = DUALSYSTEM_STATUS_BOOTABLE;
     fotaFlagInfo.boot_env.dualsys_type = DUALSYSTEM_AB;
 	fotaFlagInfo.magic_end = FLAGS_MAGIC;
-	/*crc32*/
-	fotaFlagInfo.crc32 = 0;
-	crc32init_le();
-	crc = crc32_le(0,(unsigned char*)(&fotaFlagInfo),crc_size);
-	fotaFlagInfo.crc32 = crc;
 
-	/*дÈëflags·ÖÇø*/
-	if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+	/*д»Øflags·ÖÇø*/	
+
+	ret = write_flags(&fotaFlagInfo);
+	if(ret != 0)
 	{
-        
-	   /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-		for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
-		{
-			if (!(nand_block_isbad(nand,off))) 
-				blockNum += 1;
-			
-			if(blockNum == 1)
-				work_area_offset = off;
-			
-			else if(blockNum == 2)
-			{
-				 backup_area_offset = off;
-				 break;
-			}		
-		}
-	
-		if(blockNum < 2)
-		{
-			printf("flags partition have not enough space!\n");
-				
-			return -1;
-		}
-		
-		/*²Á³ýflagsÖ÷·ÖÇø*/
-		memset(&opts, 0, sizeof(opts));
-		opts.offset = work_area_offset;
-		opts.length = fota_size;
-		ret = flash->erase(nand,&opts);
-
-		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
- 			return 1;
- 		}
-
-		ret = flash->write(nand,(loff_t)(work_area_offset),
-				  &fota_size,(u_char *)(&fotaFlagInfo),0);
-		
- 		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
- 			return 1;
- 		}
-	
-		/*²Á³ýflags±¸ÓÃÇø*/
-		memset(&opts, 0, sizeof(opts));
-		opts.offset = backup_area_offset;
-		opts.length = fota_size;
-		ret += flash->erase(nand,&opts);
-
-		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
- 			return 1;
- 		}
-		
-		ret += flash->write(nand,(loff_t)(backup_area_offset),
-				  &fota_size,(u_char *)(&fotaFlagInfo),0);
- 		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
- 			return 1;
- 		}
-	}
-	else if(type == IF_TYPE_NOR)
-	{   
-        /*²Á³ýflags·ÖÇø*/
-		work_area_offset = part_offset;
-        backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-		ret = nand_erase(&(nor->nor[0].mtd), (loff_t)(work_area_offset), fota_size);
-		ret += nand_erase(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), fota_size);
-		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs error!\n", flags_name);
- 			return 1;
- 		}
-		
-		ret = nand_write(&(nor->nor[0].mtd), (loff_t)(work_area_offset), 
-						&fota_size, (u_char *)(&fotaFlagInfo));
-		ret += nand_write(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), 
-						&fota_size, (u_char *)(&fotaFlagInfo));
-		if(ret != 0)
-		{
-			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs error!\n", flags_name);
-			return 1;
-		}
+		printf("rewrite flags partition err.\n");
+		return -1;
 	}
 	
-	printf("flags partition data is error,already rewrite default parameters!\n");
-	//system_reset();
+	printf("already rewrite flags partition!\n");
 	
-	flash_dmabuf_disable_flag = 0; 
-    flush_dcache_all();
     return 0;
 }
 
 int writeback_flags(void)
 {
-    uint32_t off = 0;
-	uint32_t flags_size = 0;/*flags·ÖÇø2M*/
-	uint32_t blockNum = 0;
-	uint32_t work_area_offset = 0;
-	uint32_t backup_area_offset = 0;
 	int ret = 0;
-	int type = 0;
-	uchar * flags_name = "flags";
 	T_FLAGS_INFO fotaFlagInfo = {0};
 	T_DualSystem_Status system_status;
 	system_status.status = DUALSYSTEM_STATUS_UNBOOTABLE;
-	u32 fota_size = sizeof(T_FLAGS_INFO);
-	fota_size = page_align(fota_size);
-	
-	nand_info_t *nand = &nand_info[nand_curr_device];
-	struct fsl_qspi *nor = &spi_nor_flash;
-	uint32_t part_offset = 0;
-	struct flash_ops *flash = NULL;
-	flash_dmabuf_disable_flag = 1;
-	nand_erase_options_t opts;
-
-	flash = get_flash_ops();
-	type = read_boot_flashtype();
-
-	unsigned long crc = 0;
-	u32 crc_size = sizeof(T_FLAGS_INFO);
-	
-	/* ѰÕÒ·ÖÇø */
-	partition_entry_t * entry = find_partition_para(flags_name);
-	if( entry == NULL )
-	{
-		BOOT_PRINTF(UBOOT_ERR, "[%s]: can't find the partition...\n", flags_name);
-		return -1;
-	}
-	/* »ñµÃ·ÖÇøÊ×µØÖ·ºÍ´óС */
-	part_offset = entry->part_offset;
-	flags_size = entry->part_size;
 	
 	/*¶ÁÈ¡flags·ÖÇø*/
 	ret = load_flags(&fotaFlagInfo);
@@ -700,210 +575,33 @@
         fotaFlagInfo.boot_fota_flag.boot_to = DUAL_SYSTEM2;
 		fotaFlagInfo.boot_fota_flag.system = system_status;
 		fotaFlagInfo.boot_fota_flag.fota_status = 1;
-		/*crc32*/
-		fotaFlagInfo.crc32 = 0;
-		crc32init_le();
-    	crc = crc32_le(0,(unsigned char*)(&fotaFlagInfo),crc_size);
-		fotaFlagInfo.crc32 = crc;
 
-		if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+		ret = write_flags(&fotaFlagInfo);
+		if(ret != 0)
 		{
-            
-		   /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-			for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
-			{
-				if (!(nand_block_isbad(nand,off))) 
-					blockNum += 1;
-				
-				if(blockNum == 1)
-					work_area_offset = off;
-				
-				else if(blockNum == 2)
-				{
-					 backup_area_offset = off;
-					 break;
-				}		
-			}
-		
-			if(blockNum < 2)
-			{
-				printf("flags partition have not enough space!\n");
-					
-				return -1;
-			}
-			
-			/*²Á³ýflagsÖ÷·ÖÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = work_area_offset;
-			opts.length = fota_size;
-			ret = flash->erase(nand,&opts);
+			printf("writeback flags partition err.\n");
+			return -1;
+		}	
 
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-
-			ret = flash->write(nand,(loff_t)(work_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			/*²Á³ýflags±¸ÓÃÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = backup_area_offset;
-			opts.length = fota_size;
-			ret += flash->erase(nand,&opts);
-
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret += flash->write(nand,(loff_t)(backup_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
-		}
-		else if(type == IF_TYPE_NOR)
-		{   
-            /*²Á³ýflags·ÖÇø*/
-			work_area_offset = part_offset;
-	        backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-			ret = nand_erase(&(nor->nor[0].mtd), (loff_t)(work_area_offset), fota_size);
-			ret += nand_erase(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), fota_size);
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret = nand_write(&(nor->nor[0].mtd), (loff_t)(work_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			ret += nand_write(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			if(ret != 0)
-			{
-				BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs error!\n", flags_name);
-				return 1;
-			}
-		}
 		printf("system boot status is changed to unbootable!\n");
-		//system_reset();
+
 	}
 	else if(fotaFlagInfo.boot_fota_flag.boot_to == DUAL_SYSTEM2)
     {
         fotaFlagInfo.boot_fota_flag.boot_to = DUAL_SYSTEM;
 		fotaFlagInfo.boot_fota_flag.system2 = system_status;
 		fotaFlagInfo.boot_fota_flag.fota_status = 1;
-		/*crc32*/
-		fotaFlagInfo.crc32 = 0;
-		crc32init_le();
-    	crc = crc32_le(0,(unsigned char*)(&fotaFlagInfo),crc_size);
-		fotaFlagInfo.crc32 = crc;
 
-		if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+		ret = write_flags(&fotaFlagInfo);
+		if(ret != 0)
 		{
-            /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-			for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
-			{
-				if (!(nand_block_isbad(nand,off))) 
-					blockNum += 1;
-				
-				if(blockNum == 1)
-					work_area_offset = off;
-				
-				else if(blockNum == 2)
-				{
-					 backup_area_offset = off;
-					 break;
-				}		
-			}
-		
-			if(blockNum < 2)
-			{
-				printf("flags partition have not enough space!\n");
-					
-				return -1;
-			}
-			
-			/*²Á³ýflagsÖ÷·ÖÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = work_area_offset;
-			opts.length = fota_size;
-			ret = flash->erase(nand,&opts);
-
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-
-			ret = flash->write(nand,(loff_t)(work_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-		
-			/*²Á³ýflags±¸ÓÃÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = backup_area_offset;
-			opts.length = fota_size;
-			ret += flash->erase(nand,&opts);
-
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret += flash->write(nand,(loff_t)(backup_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
+			printf("writeback flags partition err.\n");
+			return -1;
 		}
-		else if(type == IF_TYPE_NOR)
-		{
-            /*²Á³ýflags·ÖÇø*/
-			work_area_offset = part_offset;
-	        backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-			ret = nand_erase(&(nor->nor[0].mtd), (loff_t)(work_area_offset), fota_size);
-			ret += nand_erase(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), fota_size);
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret = nand_write(&(nor->nor[0].mtd), (loff_t)(work_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			ret += nand_write(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			if(ret != 0)
-			{
-				BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs error!\n", flags_name);
-				return -1;
-			}
-		}
-		//flash.write(nand,(loff_t)part_offset,&flagsSize,(u_char *)(&fotaFlag),0);
+
 		printf("system2 boot status is changed to unbootable!\n");
 	}
-	
-	flash_dmabuf_disable_flag = 0; 
-    flush_dcache_all();
+
     return 0;
 }
 
@@ -936,6 +634,7 @@
 static int read_imagefs_flag(void)
 {
     int ret = 0;
+	char name[IMG_NAME_LEN];
     /* ¶ÁÈ¡flags·ÖÇø */
 	T_FLAGS_INFO fotaFlagInfo;
 	ret = load_flags(&fotaFlagInfo);
@@ -944,6 +643,12 @@
 		printf("read flags partition err.\n");
 		return -1;
 	}
+
+    memset(name, 0xff, IMG_NAME_LEN);
+	if(!memcmp(fotaFlagInfo.img_size[0].name, name, IMG_NAME_LEN)){
+		printf("update the image size...\n");
+        write_flags(&fotaFlagInfo);
+	}
 	
     if(fotaFlagInfo.boot_fota_flag.boot_to == DUAL_SYSTEM)
     {
diff --git a/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc_ref.c b/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc_ref.c
index 0872ca4..10c8b7b 100755
--- a/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc_ref.c
+++ b/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_vehicle_dc_ref.c
@@ -81,6 +81,7 @@
 extern uint32_t g_gmac_init_flag;
 extern uint32_t g_gmac_init_overtime;
 extern unsigned char g_ddr_size_flag;
+extern T_IMG_SIZE img_size[IMG_NUM];
 
 unsigned int g_uiDebugLevel = UBOOT_NOTICE;
 unsigned int g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM32_A9_SIZE;
@@ -493,44 +494,42 @@
 	return offset;
 }
 
-int rewrite_flags(void)
+int write_flags_partition(void)
 {
-    uint32_t off = 0;
-	uint32_t flags_size = 0;/*flags·ÖÇø2M*/
-	uint32_t blockNum = 0;
-	uint32_t work_area_offset = 0;
-	uint32_t backup_area_offset = 0;
 	int ret = 0;
-	int type = 0;
-	uchar * flags_name = "flags";
 	T_FLAGS_INFO fotaFlagInfo = {0};
-	T_DualSystem_Status system_status;
-	system_status.status = DUALSYSTEM_STATUS_UNBOOTABLE;
-	u32 fota_size = sizeof(T_FLAGS_INFO);
-	fota_size = page_align(fota_size);
-	unsigned long crc = 0;
-	u32 crc_size = sizeof(T_FLAGS_INFO);
 	
-	nand_info_t *nand = &nand_info[nand_curr_device];
-	struct fsl_qspi *nor = &spi_nor_flash;
-	uint32_t part_offset = 0;
-	struct flash_ops *flash = NULL;
-	flash_dmabuf_disable_flag = 1;
-	nand_erase_options_t opts;
-
-	flash = get_flash_ops();
-	type = read_boot_flashtype();
-
-	/* ѰÕÒ·ÖÇø */
-	partition_entry_t * entry = find_partition_para(flags_name);
-	if( entry == NULL )
+	/*¶ÁÈ¡flags·ÖÇø*/
+	ret = load_flags(&fotaFlagInfo);
+	if(ret != 0)
 	{
-		BOOT_PRINTF(UBOOT_ERR, "[%s]: can't find the partition...\n", flags_name);
+		printf("read flags partition err.\n");
 		return -1;
 	}
-	/* »ñµÃ·ÖÇøÊ×µØÖ·ºÍ´óС */
-	part_offset = entry->part_offset;
-	flags_size = entry->part_size;
+
+	/*д»Øflags·ÖÇø*/
+	fotaFlagInfo.ota_system = 0;
+	fotaFlagInfo.sync_system = 0;
+	//memset(fotaFlagInfo.img_size, 0, sizeof(fotaFlagInfo) - 512);
+	memcpy(fotaFlagInfo.img_size, img_size, sizeof(img_size));
+
+	ret = write_flags(&fotaFlagInfo);
+	if(ret != 0)
+	{
+		printf("write flags partition err.\n");
+		return -1;
+	}
+	
+	printf("already write flags partition!\n");
+	//system_reset();
+	
+    return 0;
+}
+
+int rewrite_flags(void)
+{
+	int ret = 0;
+	T_FLAGS_INFO fotaFlagInfo = {0};
 	
 	/*ÉèÖÃĬÈÏflags·ÖÇøÊý¾Ý*/
 	fotaFlagInfo.magic_start = FLAGS_MAGIC;
@@ -540,151 +539,27 @@
 	fotaFlagInfo.boot_fota_flag.system2.status = DUALSYSTEM_STATUS_BOOTABLE;
     fotaFlagInfo.boot_env.dualsys_type = DUALSYSTEM_AB;
 	fotaFlagInfo.magic_end = FLAGS_MAGIC;
-	/*crc32*/
-	fotaFlagInfo.crc32 = 0;
-	crc32init_le();
-	crc = crc32_le(0,(unsigned char*)(&fotaFlagInfo),crc_size);
-	fotaFlagInfo.crc32 = crc;
 
-	/*дÈëflags·ÖÇø*/
-	if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+	/*д»Øflags·ÖÇø*/	
+
+	ret = write_flags(&fotaFlagInfo);
+	if(ret != 0)
 	{
-        
-	   /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-		for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
-		{
-			if (!(nand_block_isbad(nand,off))) 
-				blockNum += 1;
-			
-			if(blockNum == 1)
-				work_area_offset = off;
-			
-			else if(blockNum == 2)
-			{
-				 backup_area_offset = off;
-				 break;
-			}		
-		}
-	
-		if(blockNum < 2)
-		{
-			printf("flags partition have not enough space!\n");
-				
-			return -1;
-		}
-		
-		/*²Á³ýflagsÖ÷·ÖÇø*/
-		memset(&opts, 0, sizeof(opts));
-		opts.offset = work_area_offset;
-		opts.length = fota_size;
-		ret = flash->erase(nand,&opts);
-
-		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
- 			return 1;
- 		}
-
-		ret = flash->write(nand,(loff_t)(work_area_offset),
-				  &fota_size,(u_char *)(&fotaFlagInfo),0);
-		
- 		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
- 			return 1;
- 		}
-	
-		/*²Á³ýflags±¸ÓÃÇø*/
-		memset(&opts, 0, sizeof(opts));
-		opts.offset = backup_area_offset;
-		opts.length = fota_size;
-		ret += flash->erase(nand,&opts);
-
-		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
- 			return 1;
- 		}
-		
-		ret += flash->write(nand,(loff_t)(backup_area_offset),
-				  &fota_size,(u_char *)(&fotaFlagInfo),0);
- 		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
- 			return 1;
- 		}
-	}
-	else if(type == IF_TYPE_NOR)
-	{   
-        /*²Á³ýflags·ÖÇø*/
-		work_area_offset = part_offset;
-        backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-		ret = nand_erase(&(nor->nor[0].mtd), (loff_t)(work_area_offset), fota_size);
-		ret += nand_erase(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), fota_size);
-		if( ret != 0 )
- 		{
- 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs error!\n", flags_name);
- 			return 1;
- 		}
-		
-		ret = nand_write(&(nor->nor[0].mtd), (loff_t)(work_area_offset), 
-						&fota_size, (u_char *)(&fotaFlagInfo));
-		ret += nand_write(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), 
-						&fota_size, (u_char *)(&fotaFlagInfo));
-		if(ret != 0)
-		{
-			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs error!\n", flags_name);
-			return 1;
-		}
+		printf("rewrite flags partition err.\n");
+		return -1;
 	}
 	
-	printf("flags partition data is error,already rewrite default parameters!\n");
-	//system_reset();
+	printf("already rewrite flags partition!\n");
 	
-	flash_dmabuf_disable_flag = 0; 
-    flush_dcache_all();
     return 0;
 }
 
 int writeback_flags(void)
 {
-    uint32_t off = 0;
-	uint32_t flags_size = 0;/*flags·ÖÇø2M*/
-	uint32_t blockNum = 0;
-	uint32_t work_area_offset = 0;
-	uint32_t backup_area_offset = 0;
 	int ret = 0;
-	int type = 0;
-	uchar * flags_name = "flags";
 	T_FLAGS_INFO fotaFlagInfo = {0};
 	T_DualSystem_Status system_status;
 	system_status.status = DUALSYSTEM_STATUS_UNBOOTABLE;
-	u32 fota_size = sizeof(T_FLAGS_INFO);
-	fota_size = page_align(fota_size);
-	
-	nand_info_t *nand = &nand_info[nand_curr_device];
-	struct fsl_qspi *nor = &spi_nor_flash;
-	uint32_t part_offset = 0;
-	struct flash_ops *flash = NULL;
-	flash_dmabuf_disable_flag = 1;
-	nand_erase_options_t opts;
-
-	flash = get_flash_ops();
-	type = read_boot_flashtype();
-
-	unsigned long crc = 0;
-	u32 crc_size = sizeof(T_FLAGS_INFO);
-	
-	/* ѰÕÒ·ÖÇø */
-	partition_entry_t * entry = find_partition_para(flags_name);
-	if( entry == NULL )
-	{
-		BOOT_PRINTF(UBOOT_ERR, "[%s]: can't find the partition...\n", flags_name);
-		return -1;
-	}
-	/* »ñµÃ·ÖÇøÊ×µØÖ·ºÍ´óС */
-	part_offset = entry->part_offset;
-	flags_size = entry->part_size;
 	
 	/*¶ÁÈ¡flags·ÖÇø*/
 	ret = load_flags(&fotaFlagInfo);
@@ -700,210 +575,33 @@
         fotaFlagInfo.boot_fota_flag.boot_to = DUAL_SYSTEM2;
 		fotaFlagInfo.boot_fota_flag.system = system_status;
 		fotaFlagInfo.boot_fota_flag.fota_status = 1;
-		/*crc32*/
-		fotaFlagInfo.crc32 = 0;
-		crc32init_le();
-    	crc = crc32_le(0,(unsigned char*)(&fotaFlagInfo),crc_size);
-		fotaFlagInfo.crc32 = crc;
 
-		if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+		ret = write_flags(&fotaFlagInfo);
+		if(ret != 0)
 		{
-            
-		   /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-			for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
-			{
-				if (!(nand_block_isbad(nand,off))) 
-					blockNum += 1;
-				
-				if(blockNum == 1)
-					work_area_offset = off;
-				
-				else if(blockNum == 2)
-				{
-					 backup_area_offset = off;
-					 break;
-				}		
-			}
-		
-			if(blockNum < 2)
-			{
-				printf("flags partition have not enough space!\n");
-					
-				return -1;
-			}
-			
-			/*²Á³ýflagsÖ÷·ÖÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = work_area_offset;
-			opts.length = fota_size;
-			ret = flash->erase(nand,&opts);
+			printf("writeback flags partition err.\n");
+			return -1;
+		}	
 
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-
-			ret = flash->write(nand,(loff_t)(work_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			/*²Á³ýflags±¸ÓÃÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = backup_area_offset;
-			opts.length = fota_size;
-			ret += flash->erase(nand,&opts);
-
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret += flash->write(nand,(loff_t)(backup_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
-		}
-		else if(type == IF_TYPE_NOR)
-		{   
-            /*²Á³ýflags·ÖÇø*/
-			work_area_offset = part_offset;
-	        backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-			ret = nand_erase(&(nor->nor[0].mtd), (loff_t)(work_area_offset), fota_size);
-			ret += nand_erase(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), fota_size);
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret = nand_write(&(nor->nor[0].mtd), (loff_t)(work_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			ret += nand_write(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			if(ret != 0)
-			{
-				BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs error!\n", flags_name);
-				return 1;
-			}
-		}
 		printf("system boot status is changed to unbootable!\n");
-		//system_reset();
+
 	}
 	else if(fotaFlagInfo.boot_fota_flag.boot_to == DUAL_SYSTEM2)
     {
         fotaFlagInfo.boot_fota_flag.boot_to = DUAL_SYSTEM;
 		fotaFlagInfo.boot_fota_flag.system2 = system_status;
 		fotaFlagInfo.boot_fota_flag.fota_status = 1;
-		/*crc32*/
-		fotaFlagInfo.crc32 = 0;
-		crc32init_le();
-    	crc = crc32_le(0,(unsigned char*)(&fotaFlagInfo),crc_size);
-		fotaFlagInfo.crc32 = crc;
 
-		if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+		ret = write_flags(&fotaFlagInfo);
+		if(ret != 0)
 		{
-            /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-			for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
-			{
-				if (!(nand_block_isbad(nand,off))) 
-					blockNum += 1;
-				
-				if(blockNum == 1)
-					work_area_offset = off;
-				
-				else if(blockNum == 2)
-				{
-					 backup_area_offset = off;
-					 break;
-				}		
-			}
-		
-			if(blockNum < 2)
-			{
-				printf("flags partition have not enough space!\n");
-					
-				return -1;
-			}
-			
-			/*²Á³ýflagsÖ÷·ÖÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = work_area_offset;
-			opts.length = fota_size;
-			ret = flash->erase(nand,&opts);
-
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-
-			ret = flash->write(nand,(loff_t)(work_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
-	 			return 1;
-	 		}
-		
-			/*²Á³ýflags±¸ÓÃÇø*/
-			memset(&opts, 0, sizeof(opts));
-			opts.offset = backup_area_offset;
-			opts.length = fota_size;
-			ret += flash->erase(nand,&opts);
-
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret += flash->write(nand,(loff_t)(backup_area_offset),
-					  &fota_size,(u_char *)(&fotaFlagInfo),0);
-	 		if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
-	 			return 1;
-	 		}
+			printf("writeback flags partition err.\n");
+			return -1;
 		}
-		else if(type == IF_TYPE_NOR)
-		{
-            /*²Á³ýflags·ÖÇø*/
-			work_area_offset = part_offset;
-	        backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-			ret = nand_erase(&(nor->nor[0].mtd), (loff_t)(work_area_offset), fota_size);
-			ret += nand_erase(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), fota_size);
-			if( ret != 0 )
-	 		{
-	 			BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs error!\n", flags_name);
-	 			return 1;
-	 		}
-			
-			ret = nand_write(&(nor->nor[0].mtd), (loff_t)(work_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			ret += nand_write(&(nor->nor[0].mtd), (loff_t)(backup_area_offset), 
-							&fota_size, (u_char *)(&fotaFlagInfo));
-			if(ret != 0)
-			{
-				BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs error!\n", flags_name);
-				return -1;
-			}
-		}
-		//flash.write(nand,(loff_t)part_offset,&flagsSize,(u_char *)(&fotaFlag),0);
+
 		printf("system2 boot status is changed to unbootable!\n");
 	}
-	
-	flash_dmabuf_disable_flag = 0; 
-    flush_dcache_all();
+
     return 0;
 }
 
@@ -936,6 +634,7 @@
 static int read_imagefs_flag(void)
 {
     int ret = 0;
+	char name[IMG_NAME_LEN];
     /* ¶ÁÈ¡flags·ÖÇø */
 	T_FLAGS_INFO fotaFlagInfo;
 	ret = load_flags(&fotaFlagInfo);
@@ -944,6 +643,12 @@
 		printf("read flags partition err.\n");
 		return -1;
 	}
+
+    memset(name, 0xff, IMG_NAME_LEN);
+	if(!memcmp(fotaFlagInfo.img_size[0].name, name, IMG_NAME_LEN)){
+		printf("update the image size...\n");
+        write_flags(&fotaFlagInfo);
+	}
 	
     if(fotaFlagInfo.boot_fota_flag.boot_to == DUAL_SYSTEM)
     {
diff --git a/boot/common/src/uboot/downloader/cmd_compat_write.c b/boot/common/src/uboot/downloader/cmd_compat_write.c
index f4db84f..6b4c462 100755
--- a/boot/common/src/uboot/downloader/cmd_compat_write.c
+++ b/boot/common/src/uboot/downloader/cmd_compat_write.c
@@ -29,9 +29,14 @@
 #include "downloader_serial.h"
 #include "errno.h"
 #include <boot_mode.h>
+#include "pub_flags.h"
+
 /****************************************************************************
 *							Global Function Prototypes
 ****************************************************************************/
+T_IMG_SIZE img_size[IMG_NUM] = {{"uboot",0,0},{"imagefs",0,0},{"rootfs",0,0},{"caprootfs",0,0},{"oem",0,0}};
+int flags_partiton_write = 0;
+
 extern int g_iftype;
 extern partition_table_t * g_partition_table_dl;
 /*******************************************************************************
@@ -55,6 +60,8 @@
 	unsigned int offset = 0;
 	unsigned int size = 0;
 	unsigned int ret = 0;
+	unsigned int i = 0;
+	flags_partiton_write = 1;
 	
 	if(argc<4)
     {
@@ -71,6 +78,25 @@
         downloader_serial_write(ack, strlen(ack)+1);
 	    return -1;
 	}
+
+	/*record image size*/
+	for(i=0; i<IMG_NUM; i++)
+	{
+		if(memcmp((char *)img_size[i].name , par, strlen(img_size[i].name)) == 0){
+			if(!memcmp(par,"oemdata",7))
+				break;
+			if(strlen(img_size[i].name) == strlen(par))
+			{
+				img_size[i].size_a = size;
+				printf("partition is %s,size_a is 0x%x.\n",par,size);
+			}
+			else
+			{
+				img_size[i].size_b = size;
+				printf("partition is %s,size_b is 0x%x.\n",par,size);
+			}
+		}
+	}  
 	
 #if defined (CONFIG_ZX297520V3E_VEHICLE_DC) || defined (CONFIG_ZX297520V3E_VEHICLE_DC_REF)
 	if(g_nor_flag == 1)
diff --git a/boot/common/src/uboot/downloader/cmd_cp_reset.c b/boot/common/src/uboot/downloader/cmd_cp_reset.c
old mode 100644
new mode 100755
index fc75ad8..a521b9b
--- a/boot/common/src/uboot/downloader/cmd_cp_reset.c
+++ b/boot/common/src/uboot/downloader/cmd_cp_reset.c
@@ -35,6 +35,7 @@
 
 extern int downloader_serial_write(const char * buffer,unsigned int len);
 extern char *tsp_console_buffer;
+extern int flags_partiton_write;
 
 /*******************************************************************************
  * Function:do_reboot
@@ -53,7 +54,14 @@
 {
     char *ack = tsp_console_buffer;
     uint32_t reg_start = 0;
-		
+	
+#if defined(CONFIG_ZX297520V3E_MDL_AB) || defined(CONFIG_ZX297520V3E_VEHICLE_DC) || defined(CONFIG_ZX297520V3E_VEHICLE_DC_REF)	
+	/*ÅжÏÊÇ·ñ»ØÐ´flags·ÖÇø*/
+	if(1 == flags_partiton_write){
+        write_flags_partition();
+	}
+#endif	
+
     if(argc < 1)
     {
         return cmd_usage(cmdtp);
diff --git a/boot/common/src/uboot/downloader/cmd_set.c b/boot/common/src/uboot/downloader/cmd_set.c
index 8831694..93950b1 100755
--- a/boot/common/src/uboot/downloader/cmd_set.c
+++ b/boot/common/src/uboot/downloader/cmd_set.c
@@ -33,7 +33,7 @@
 #include "boot_mode.h"

 

 

-#define ZLOAD_PARTITION_SIZE	0x3000

+#define ZLOAD_PARTITION_SIZE	0x10000

 

 

 /****************************************************************************

@@ -47,7 +47,7 @@
 

 extern char *tsp_console_buffer;

 extern struct fsl_qspi spi_nor_flash;

-

+extern int g_iftype;

 

 /*******************************************************************************

  * Function:do_set

@@ -408,22 +408,37 @@
         return cmd_usage(cmdtp);

     }

 	sign = argv[1];	

-	type = read_boot_flashtype();

 

-	if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)

+	if(g_nor_flag == 1)

 	{

-        ret = set_nand_dlflag(sign);

-	}

-	else if(type == IF_TYPE_NOR)

-	{

+	    g_iftype = IF_TYPE_NOR;

+		nand_init();

 		ret = set_nor_dlflag(sign);

+		/*Çл»³õʼ»¯spi_nand*/

+		g_iftype = IF_TYPE_SPI_NAND;

+		nand_init();

+

+	}

+	else

+	{

+	    type = read_boot_flashtype();

+

+		if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)

+		{

+	        ret = set_nand_dlflag(sign);

+		}

+		else if(type == IF_TYPE_NOR)

+		{

+			ret = set_nor_dlflag(sign);

+		}

+		

 	}

 

 	if(ret != 0)

 	{

 		return -1;

 	}

-		

+	

 	return 0;

 

 }

diff --git a/boot/common/src/uboot/drivers/misc/load.c b/boot/common/src/uboot/drivers/misc/load.c
index 5c3a2b3..827201d 100755
--- a/boot/common/src/uboot/drivers/misc/load.c
+++ b/boot/common/src/uboot/drivers/misc/load.c
@@ -1228,9 +1228,11 @@
 	unsigned long crc = 0;
 	unsigned long crc_cal = 0;
 	u32 crc_size = sizeof(T_FLAGS_INFO);
+	char name[IMG_NAME_LEN];
 
 	flush_dcache_all();
-    flash_dmabuf_disable_flag = 1;
+    //flash_dmabuf_disable_flag = 1;
+	
 	flash = get_flash_ops();
 	type = read_boot_flashtype();
 
@@ -1246,53 +1248,57 @@
 	part_offset = entry->part_offset;
 	part_size = entry->part_size;
 	//while(flag);
-	if(type == IF_TYPE_NAND || type == IF_TYPE_SPI_NAND)
+
+    /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
+	for (off = part_offset; off < part_offset+part_size; off += nand->erasesize)
 	{
-        /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
-		for (off = part_offset; off < part_offset+part_size; off += nand->erasesize)
+        if (!(nand_block_isbad(nand,off)))
 		{
-            if (!(nand_block_isbad(nand,off)))
-			{
-	            blockNum += 1;
-			}   
+            blockNum += 1;
+		}   
+	
+		if((blockNum == 1) && (flag_one == 0))
+		{
+            work_area_offset = off;
+			flag_one = 1;
+		}
 		
-			if((blockNum == 1) && (flag_one == 0))
-			{
-	            work_area_offset = off;
-				flag_one = 1;
-			}
+		else if(blockNum == 2)
+		{
+             backup_area_offset = off;
+			 break;
+		}		
+	}
+
+	if(blockNum < 2)
+	{
+        printf("flags partition have not enough space!\n");
 			
-			else if(blockNum == 2)
-			{
-	             backup_area_offset = off;
-				 break;
-			}		
-		}
+		return -1;
+	}
+   
+	ret = flash->read(nand,(loff_t)work_area_offset,
+					  &fota_size,(u_char *)(fotaFlagInfo));
+	if( ret != 0 )
+	{
+		BOOT_PRINTF(UBOOT_ERR, "[%s]: read the flags error!\n", part_name);
+		return 1;
+	}
 
-		if(blockNum < 2)
-		{
-	        printf("flags partition have not enough space!\n");
-				
-			return -1;
-		}
-	   
-		ret = flash->read(nand,(loff_t)work_area_offset,
-						  &fota_size,(u_char *)(fotaFlagInfo));
-		if( ret != 0 )
-		{
-			BOOT_PRINTF(UBOOT_ERR, "[%s]: read the flags error!\n", part_name);
-			return 1;
-		}
+	/*crc32УÑé*/
+	crc = fotaFlagInfo->crc32_1;
+	fotaFlagInfo->crc32_1 = 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);
+	//printf("work_area_offset is 0x%x,backup_area_offset is 0x%x,crc_size is 0x%x\n",work_area_offset,backup_area_offset,crc_size);
 
-		/*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 || (crc!= crc_cal && crc != 0))
+	memset(name, 0xff, IMG_NAME_LEN);
+	if(!memcmp(fotaFlagInfo->img_size[0].name, name, IMG_NAME_LEN)){
+		printf("image name is null.\n");
+		if(fotaFlagInfo->magic_start != FLAGS_MAGIC)
 		{	
+		    printf("work_area_offset magic err.\n");
 			flush_dcache_all();
 			ret = flash->read(nand,(loff_t)backup_area_offset,
 						  &fota_size,(u_char *)(fotaFlagInfo));
@@ -1307,59 +1313,186 @@
 			{
 	            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)
-	{
-        work_area_offset = part_offset;
-	    backup_area_offset = part_offset + nor->nor[0].mtd.erasesize;
-		ret = nand_read(&(nor->nor[0].mtd), (loff_t)work_area_offset, 
-						&fota_size, (u_char *)(fotaFlagInfo));
-		if(ret)
+	else if(fotaFlagInfo->magic_start != FLAGS_MAGIC || (crc!= crc_cal && crc != 0))
+	{	
+		flush_dcache_all();
+		printf("work_area_offset magic is 0x%x.\n",fotaFlagInfo->magic_start);
+		ret = flash->read(nand,(loff_t)backup_area_offset,
+					  &fota_size,(u_char *)(fotaFlagInfo));
+		if(ret != 0)
 		{
-			BOOT_PRINTF(UBOOT_ERR, "[%s]: read the flags error!\n", part_name);
+			printf("read flags backup partition err.\n");
+			
 			return -1;
 		}
+		
 		if(fotaFlagInfo->magic_start != FLAGS_MAGIC)
 		{
-            flush_dcache_all();
-			ret = nand_read(&(nor->nor[0].mtd), (loff_t)backup_area_offset, 
-						&fota_size, (u_char *)(fotaFlagInfo));
-			if(ret != 0)
-			{
-				printf("read flags backup partition err.\n");
-				
-				return -1;
-			}
-			
-			if(fotaFlagInfo->magic_start != FLAGS_MAGIC)
-			{
-	            printf("flags magic err.\n");
-			    return -1;
-			}	
+		    printf("backup_area_offset magic is 0x%x.\n",fotaFlagInfo->magic_start);
+            printf("flags magic err.\n");
+		    return -1;
 		}
+
+		/*crc32УÑé*/
+		crc = fotaFlagInfo->crc32_1;
+		fotaFlagInfo->crc32_1 = 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;
+		}
+		
 	}
-	
+
 	flash_dmabuf_disable_flag = 0;
 	flush_dcache_all();
 
 	return 0;
 }
 
+int write_flags(T_FLAGS_INFO *fotaFlagInfo)
+{
+    uint32_t off = 0;
+	uint32_t flags_size = 0;/*flags·ÖÇø2M*/
+	uint32_t blockNum = 0;
+	uint32_t work_area_offset = 0;
+	uint32_t backup_area_offset = 0;
+	int ret = 0;
+	int type = 0;
+	uchar * flags_name = "flags";
+	u32 fota_size = sizeof(T_FLAGS_INFO);
+	//fota_size = page_align(fota_size);
+	unsigned long crc = 0;
+	u32 crc_size = sizeof(T_FLAGS_INFO);
+	char name[IMG_NAME_LEN];
+	
+	nand_info_t *nand = &nand_info[nand_curr_device];
+	struct fsl_qspi *nor = &spi_nor_flash;
+	uint32_t part_offset = 0;
+	struct flash_ops *flash = NULL;
+	nand_erase_options_t opts;
+	
+	flush_dcache_all();
+	//flash_dmabuf_disable_flag = 1;
+
+	flash = get_flash_ops();
+	type = read_boot_flashtype();
+
+	/* ѰÕÒ·ÖÇø */
+	partition_entry_t * entry = find_partition_para(flags_name);
+	if( entry == NULL )
+	{
+		BOOT_PRINTF(UBOOT_ERR, "[%s]: can't find the partition...\n", flags_name);
+		return -1;
+	}
+	/* »ñµÃ·ÖÇøÊ×µØÖ·ºÍ´óС */
+	part_offset = entry->part_offset;
+	flags_size = entry->part_size;
+	
+	/*crc32*/
+	memset(name, 0xff, IMG_NAME_LEN);
+	if(!memcmp(fotaFlagInfo->img_size[0].name, name, IMG_NAME_LEN)){
+		printf("the image name is null.\n");
+		fotaFlagInfo->crc32_1 = 0;	
+	    memset((unsigned char*)(fotaFlagInfo->img_size[0].name), 0, (crc_size - 512));
+		crc32init_le();
+		crc = crc32_le(0,(unsigned char*)fotaFlagInfo,crc_size);
+		fotaFlagInfo->crc32_1 = crc;
+		printf("flags partition crc32_1 is 0x%x\n",crc);
+		
+	}else{
+		fotaFlagInfo->crc32 = 0;
+		crc32init_le();
+		crc = crc32_le(0,(unsigned char*)fotaFlagInfo,512);
+		fotaFlagInfo->crc32 = crc;
+		
+		fotaFlagInfo->crc32_1 = 0;
+		crc32init_le();
+		crc = crc32_le(0,(unsigned char*)fotaFlagInfo,crc_size);
+		fotaFlagInfo->crc32_1 = crc;
+		printf("flags partition crc32 is 0x%x,crc32_1 is 0x%x\n",fotaFlagInfo->crc32,fotaFlagInfo->crc32_1);
+	}	
+
+	/*дÈëflags·ÖÇø*/
+        
+   /*È·¶¨¹¤×÷ÇøºÍ±¸·ÝÇøÆ«ÒÆµØÖ·*/
+	for (off = part_offset; off < part_offset+flags_size; off += nand->erasesize)
+	{
+		if (!(nand_block_isbad(nand,off))) 
+			blockNum += 1;
+		
+		if(blockNum == 1)
+			work_area_offset = off;
+		
+		else if(blockNum == 2)
+		{
+			 backup_area_offset = off;
+			 break;
+		}		
+	}
+
+	if(blockNum < 2)
+	{
+		printf("flags partition have not enough space!\n");
+			
+		return -1;
+	}
+
+	//printf("work_area_offset is 0x%x,backup_area_offset is 0x%x,crc_size is 0x%x\n",work_area_offset,backup_area_offset,crc_size);
+
+	/*²Á³ýflagsÖ÷·ÖÇø*/
+	memset(&opts, 0, sizeof(opts));
+	opts.offset = work_area_offset;
+	opts.length = fota_size;
+	ret = flash->erase(nand,&opts);
+
+	if( ret != 0 )
+	{
+		BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs work area error!\n", flags_name);
+		return 1;
+	}
+
+	ret = flash->write(nand,(loff_t)(work_area_offset),
+			  &fota_size,(u_char *)fotaFlagInfo,0);
+	
+	if( ret != 0 )
+	{
+		BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs work area error!\n", flags_name);
+		return 1;
+	}
+
+	/*²Á³ýflags±¸ÓÃÇø*/
+	memset(&opts, 0, sizeof(opts));
+	opts.offset = backup_area_offset;
+	opts.length = fota_size;
+	ret += flash->erase(nand,&opts);
+
+	if( ret != 0 )
+	{
+		BOOT_PRINTF(UBOOT_ERR, "[%s]: erase the flags imagefs backup area error!\n", flags_name);
+		return 1;
+	}
+	
+	ret += flash->write(nand,(loff_t)(backup_area_offset),
+			  &fota_size,(u_char *)fotaFlagInfo,0);
+	if( ret != 0 )
+	{
+		BOOT_PRINTF(UBOOT_ERR, "[%s]: write the flags imagefs backup area error!\n", flags_name);
+		return 1;
+	}
+	
+	flash_dmabuf_disable_flag = 0; 
+    flush_dcache_all();
+    return 0;
+}
+
 #endif
 /* ================================================================================
  *  get_fota_update_flag  :
diff --git a/boot/common/src/uboot/drivers/power/zx234290.c b/boot/common/src/uboot/drivers/power/zx234290.c
index 90a52e2..e8f083f 100755
--- a/boot/common/src/uboot/drivers/power/zx234290.c
+++ b/boot/common/src/uboot/drivers/power/zx234290.c
@@ -125,6 +125,43 @@
 #endif
 }
 
+
+void zx234290_set_rtc_alarm_off(void)
+{
+    int ret = 0;
+    uchar tmp = 0;
+
+   //set alarm active bit 1 disable
+    ret = zx234290_i2c_read_reg(ZX234290_REG_ADDR_ALARM_MINUTE, &tmp);
+    tmp |= (1<<ZX234290_RTC_AlARM_ACTIVATED_LSH);
+    ret |= zx234290_i2c_write_reg(ZX234290_REG_ADDR_ALARM_MINUTE, &tmp);
+
+    ret |= zx234290_i2c_read_reg(ZX234290_REG_ADDR_ALARM_HOUR, &tmp);
+    tmp |= (1<<ZX234290_RTC_AlARM_ACTIVATED_LSH);
+    ret |= zx234290_i2c_write_reg(ZX234290_REG_ADDR_ALARM_HOUR, &tmp);
+
+	ret |= zx234290_i2c_read_reg(ZX234290_REG_ADDR_ALARM_DAY, &tmp);
+    tmp |= (1<<ZX234290_RTC_AlARM_ACTIVATED_LSH);
+    ret |= zx234290_i2c_write_reg(ZX234290_REG_ADDR_ALARM_DAY, &tmp);
+
+	ret = zx234290_i2c_read_reg(ZX234290_REG_ADDR_ALARM_WEEK, &tmp);
+    tmp |= (1<<ZX234290_RTC_AlARM_ACTIVATED_LSH);
+    ret |= zx234290_i2c_write_reg(ZX234290_REG_ADDR_ALARM_WEEK, &tmp);
+
+	
+	ret |= zx234290_i2c_read_reg(ZX234290_REG_ADDR_ALARM_SECOND, &tmp);
+    tmp |= (1<<ZX234290_RTC_AlARM_ACTIVATED_LSH);
+    ret |= zx234290_i2c_write_reg(ZX234290_REG_ADDR_ALARM_SECOND, &tmp);
+	
+    /*disable AIE bit && AF*/
+    ret |= zx234290_i2c_read_reg(ZX234290_REG_RTC_CONTROL2, &tmp);
+    tmp &= ~(RTC_CONTROL2_AIE|RTC_CONTROL2_AF);
+    ret |= zx234290_i2c_write_reg(ZX234290_REG_RTC_CONTROL2, &tmp);
+
+	if(ret)		
+		printf( "[%s] fail ret=%d...\n", __FUNCTION__, ret);
+		
+}
 /*******************************************************************************
  * Function:    zx234290_get_boot_reason
  * Description:
@@ -222,6 +259,7 @@
 
 		if (rtc_ctrl2 & RTC_CONTROL2_AF) {
 			s_boot_reason = RB_RTC;
+			zx234290_set_rtc_alarm_off();
 		} else if (rtc_ctrl2 & RTC_CONTROL2_TF) {
 			s_boot_reason = RB_RESET_NOMAL;
 		}
@@ -375,12 +413,11 @@
     pmu.ps_hold_pull_off = pmu_pull_off_ps_hold;
     pmu.power_off = zx234290_power_off;
     ret = register_pmu_opt(&pmu);
-	/*
     if( ret != 0 )
     {
         return -EIO;
     }
-	*/
+
 	ret = zx234290_get_boot_reason_prev();
 	ret +=zx234290_i2c_read_reg(ZX234297_REG_ADDR_SINK_CONTROL,&reg_val);
 	if(reg_val==0x7f){//means 296G C
diff --git a/boot/common/src/uboot/drivers/serial/uart.c b/boot/common/src/uboot/drivers/serial/uart.c
index c5eb337..a8d7f6b 100755
--- a/boot/common/src/uboot/drivers/serial/uart.c
+++ b/boot/common/src/uboot/drivers/serial/uart.c
@@ -172,6 +172,19 @@
 
 
 #ifdef CONFIG_CTRL_X_SWTCH_UART
+/*******************************************************************************
+ * Function:  check if user press ctrl +x from uboot serial
+ * Description: read console flag before start kernel
+ * Parameters: us °´¼ü·À¶¶Ê±¼ä£¬wait µÈ´ý°´¼ü×Üʱ¼ä
+ *   Input:
+ *
+ *   Output:
+ *
+ * Returns:     
+ *
+ *
+ * Others: 
+ ********************************************************************************/
 extern bool g_flg_ctrl_x;
 void serial_getc_cons_key_flag(unsigned long us,unsigned int wait)
 {
diff --git a/boot/common/src/uboot/include/partition_table.h b/boot/common/src/uboot/include/partition_table.h
index 6d27ca4..306a64c 100755
--- a/boot/common/src/uboot/include/partition_table.h
+++ b/boot/common/src/uboot/include/partition_table.h
@@ -211,6 +211,7 @@
 #define PARTITION_CRC               0x12345678
 #define PARTITION_SIZE              0X1000                  /* ·ÖÇø±íµÄ´óС */
 
+#define IMG_NUM  5
 
 typedef struct partition_entry {
     unsigned char	part_name[16]; 
diff --git a/boot/common/src/uboot/include/zx234290.h b/boot/common/src/uboot/include/zx234290.h
index 2c0853f..d0dc5a7 100755
--- a/boot/common/src/uboot/include/zx234290.h
+++ b/boot/common/src/uboot/include/zx234290.h
@@ -60,6 +60,15 @@
 #define ZX234297_REG_ADDR_SINK_CONTROL	0X29
 
 #define ZX234290_REG_RTC_CONTROL2	0x31
+
+/*RTC ALARM Enable*/
+#define ZX234290_REG_ADDR_ALARM_MINUTE      0x39
+#define ZX234290_REG_ADDR_ALARM_HOUR  		0x3A
+#define ZX234290_REG_ADDR_ALARM_DAY        	0x3B
+#define ZX234290_REG_ADDR_ALARM_WEEK      	0x3C
+#define ZX234290_REG_ADDR_ALARM_SECOND     	0x3D
+#define ZX234290_RTC_AlARM_ACTIVATED_LSH	(7)
+
 #define	RTC_CONTROL2_TIE			(1 << 0)
 #define	RTC_CONTROL2_AIE			(1 << 1)
 #define	RTC_CONTROL2_TF				(1 << 2)
diff --git a/boot/prj/zx297520v3/bootrom/dl_off/loader2.bin b/boot/prj/zx297520v3/bootrom/dl_off/loader2.bin
index 4a7d48e..343a176 100755
--- a/boot/prj/zx297520v3/bootrom/dl_off/loader2.bin
+++ b/boot/prj/zx297520v3/bootrom/dl_off/loader2.bin
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom/dl_off/z-load b/boot/prj/zx297520v3/bootrom/dl_off/z-load
index 11bd1dd..305591e 100755
--- a/boot/prj/zx297520v3/bootrom/dl_off/z-load
+++ b/boot/prj/zx297520v3/bootrom/dl_off/z-load
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom/dl_off/z-load.map b/boot/prj/zx297520v3/bootrom/dl_off/z-load.map
index fb2ebb9..07ae1fd 100755
--- a/boot/prj/zx297520v3/bootrom/dl_off/z-load.map
+++ b/boot/prj/zx297520v3/bootrom/dl_off/z-load.map
@@ -300,35 +300,35 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x341f
- .debug_info    0x0000000000000000      0x658 lib/libarm.a(board.o)
- .debug_info    0x0000000000000658      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000883      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000bac      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000e4c      0x6d3 drivers/libdrivers.a(image.o)
- .debug_info    0x000000000000151f      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x00000000000016e2      0x62d drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000001d0f      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000002a6e      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000002c56      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x000000000000300a      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x0000000000003219      0x17b cpu/m0/libm0.a(cpu.o)
- .debug_info    0x0000000000003394       0x8b cpu/m0/libm0.a(clk.o)
+.debug_info     0x0000000000000000     0x34d2
+ .debug_info    0x0000000000000000      0x70b lib/libarm.a(board.o)
+ .debug_info    0x000000000000070b      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000936      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000c5f      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000eff      0x6d3 drivers/libdrivers.a(image.o)
+ .debug_info    0x00000000000015d2      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x0000000000001795      0x62d drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000001dc2      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000002b21      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000002d09      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000030bd      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000032cc      0x17b cpu/m0/libm0.a(cpu.o)
+ .debug_info    0x0000000000003447       0x8b cpu/m0/libm0.a(clk.o)
 
-.debug_abbrev   0x0000000000000000     0x1290
- .debug_abbrev  0x0000000000000000      0x286 lib/libarm.a(board.o)
- .debug_abbrev  0x0000000000000286       0xb7 lib/libarm.a(string.o)
- .debug_abbrev  0x000000000000033d      0x12f drivers/libdrivers.a(ddr.o)
- .debug_abbrev  0x000000000000046c      0x19e drivers/libdrivers.a(uart.o)
- .debug_abbrev  0x000000000000060a      0x212 drivers/libdrivers.a(image.o)
- .debug_abbrev  0x000000000000081c      0x11d drivers/libdrivers.a(efuse.o)
- .debug_abbrev  0x0000000000000939      0x258 drivers/libdrivers.a(secure_verify.o)
- .debug_abbrev  0x0000000000000b91      0x280 drivers/libdrivers.a(nor.o)
- .debug_abbrev  0x0000000000000e11       0xde drivers/libdrivers.a(drv_hash.o)
- .debug_abbrev  0x0000000000000eef      0x1e2 drivers/libdrivers.a(drv_rsa.o)
- .debug_abbrev  0x00000000000010d1       0xb5 drivers/libdrivers.a(flash.o)
- .debug_abbrev  0x0000000000001186       0xc8 cpu/m0/libm0.a(cpu.o)
- .debug_abbrev  0x000000000000124e       0x42 cpu/m0/libm0.a(clk.o)
+.debug_abbrev   0x0000000000000000     0x12c2
+ .debug_abbrev  0x0000000000000000      0x2b8 lib/libarm.a(board.o)
+ .debug_abbrev  0x00000000000002b8       0xb7 lib/libarm.a(string.o)
+ .debug_abbrev  0x000000000000036f      0x12f drivers/libdrivers.a(ddr.o)
+ .debug_abbrev  0x000000000000049e      0x19e drivers/libdrivers.a(uart.o)
+ .debug_abbrev  0x000000000000063c      0x212 drivers/libdrivers.a(image.o)
+ .debug_abbrev  0x000000000000084e      0x11d drivers/libdrivers.a(efuse.o)
+ .debug_abbrev  0x000000000000096b      0x258 drivers/libdrivers.a(secure_verify.o)
+ .debug_abbrev  0x0000000000000bc3      0x280 drivers/libdrivers.a(nor.o)
+ .debug_abbrev  0x0000000000000e43       0xde drivers/libdrivers.a(drv_hash.o)
+ .debug_abbrev  0x0000000000000f21      0x1e2 drivers/libdrivers.a(drv_rsa.o)
+ .debug_abbrev  0x0000000000001103       0xb5 drivers/libdrivers.a(flash.o)
+ .debug_abbrev  0x00000000000011b8       0xc8 cpu/m0/libm0.a(cpu.o)
+ .debug_abbrev  0x0000000000001280       0x42 cpu/m0/libm0.a(clk.o)
 
 .debug_loc      0x0000000000000000     0x1c6c
  .debug_loc     0x0000000000000000       0xcc lib/libarm.a(board.o)
@@ -380,47 +380,47 @@
  .debug_ranges  0x0000000000000068       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000090       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x1422
- .debug_line    0x0000000000000000      0x2e5 lib/libarm.a(board.o)
- .debug_line    0x00000000000002e5      0x152 lib/libarm.a(string.o)
- .debug_line    0x0000000000000437      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x00000000000006d0      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x00000000000007e2      0x228 drivers/libdrivers.a(image.o)
- .debug_line    0x0000000000000a0a      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000000b22      0x2ad drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000dcf      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x0000000000001071       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x00000000000010f9      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001210      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x000000000000131a       0xa7 cpu/m0/libm0.a(cpu.o)
- .debug_line    0x00000000000013c1       0x61 cpu/m0/libm0.a(clk.o)
+.debug_line     0x0000000000000000     0x1425
+ .debug_line    0x0000000000000000      0x2e8 lib/libarm.a(board.o)
+ .debug_line    0x00000000000002e8      0x152 lib/libarm.a(string.o)
+ .debug_line    0x000000000000043a      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x00000000000006d3      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000007e5      0x228 drivers/libdrivers.a(image.o)
+ .debug_line    0x0000000000000a0d      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000000b25      0x2ad drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000dd2      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001074       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x00000000000010fc      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001213      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x000000000000131d       0xa7 cpu/m0/libm0.a(cpu.o)
+ .debug_line    0x00000000000013c4       0x61 cpu/m0/libm0.a(clk.o)
 
-.debug_str      0x0000000000000000      0xe62
- .debug_str     0x0000000000000000      0x47c lib/libarm.a(board.o)
-                                        0x4f6 (松开之前的大小)
- .debug_str     0x000000000000047c       0x4c lib/libarm.a(string.o)
+.debug_str      0x0000000000000000      0xebb
+ .debug_str     0x0000000000000000      0x4d5 lib/libarm.a(board.o)
+                                        0x554 (松开之前的大小)
+ .debug_str     0x00000000000004d5       0x4c lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x00000000000004c8       0xa1 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x0000000000000521       0xa1 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x0000000000000569       0x8a drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005c2       0x8a drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x00000000000005f3      0x229 drivers/libdrivers.a(image.o)
+ .debug_str     0x000000000000064c      0x229 drivers/libdrivers.a(image.o)
                                         0x4a0 (松开之前的大小)
- .debug_str     0x000000000000081c       0x7b drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000000875       0x7b drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x0000000000000897      0x177 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000008f0      0x177 drivers/libdrivers.a(secure_verify.o)
                                         0x407 (松开之前的大小)
- .debug_str     0x0000000000000a0e      0x2c3 drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000000a67      0x2c3 drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000000cd1       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000000d2a       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000000d58       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x0000000000000db1       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000000dd1       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000000e2a       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000000de3       0x79 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000000e3c       0x79 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
- .debug_str     0x0000000000000e5c        0x6 cpu/m0/libm0.a(clk.o)
+ .debug_str     0x0000000000000eb5        0x6 cpu/m0/libm0.a(clk.o)
                                         0x1bd (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0x6a0
diff --git a/boot/prj/zx297520v3/bootrom/dl_off/z-load2 b/boot/prj/zx297520v3/bootrom/dl_off/z-load2
index 5abaa83..65ef38e 100755
--- a/boot/prj/zx297520v3/bootrom/dl_off/z-load2
+++ b/boot/prj/zx297520v3/bootrom/dl_off/z-load2
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom/dl_off/z-load2.map b/boot/prj/zx297520v3/bootrom/dl_off/z-load2.map
index e422c41..0163e41 100755
--- a/boot/prj/zx297520v3/bootrom/dl_off/z-load2.map
+++ b/boot/prj/zx297520v3/bootrom/dl_off/z-load2.map
@@ -2,6 +2,7 @@
 
 lib/libarm.a(board.o)         cpu/m0/start.o (start_armboot)
 lib/libarm.a(string.o)        lib/libarm.a(board.o) (memcpy)
+drivers/libdrivers.a(ddr.o)   lib/libarm.a(board.o) (nsdelay)
 drivers/libdrivers.a(uart.o)  lib/libarm.a(board.o) (uart_puts)
 drivers/libdrivers.a(image.o)
                               lib/libarm.a(board.o) (read_flags_image)
@@ -13,7 +14,6 @@
 drivers/libdrivers.a(sha256.o)
                               drivers/libdrivers.a(secure_verify.o) (sha256_csum_wd)
 drivers/libdrivers.a(nor.o)   lib/libarm.a(board.o) (nor_init)
-drivers/libdrivers.a(ddr.o)   drivers/libdrivers.a(spifc_loader2.o) (nsdelay)
 drivers/libdrivers.a(drv_hash.o)
                               drivers/libdrivers.a(secure_verify.o) (Hash_Calculate)
 drivers/libdrivers.a(drv_rsa.o)
@@ -34,7 +34,7 @@
                 0x0000000000000000                . = 0x0
                 0x0000000000000000                . = ALIGN (0x4)
 
-.text           0x0000000020300000     0x4b3c
+.text           0x0000000020300000     0x4ddc
  cpu/m0/start.o(.text)
  .text          0x0000000020300000      0x220 cpu/m0/start.o
                 0x00000000203001a4                _bss_start
@@ -44,209 +44,212 @@
                 0x00000000203001b8                _start
                 0x00000000203001fe                run_at
  *(.text)
- .text          0x0000000020300220      0x24c lib/libarm.a(board.o)
+ .text          0x0000000020300220      0x4ec lib/libarm.a(board.o)
                 0x0000000020300220                print_info
                 0x0000000020300230                copy_to_iram1
                 0x0000000020300250                clear_iram
                 0x0000000020300268                write_loader_mode
                 0x0000000020300274                hang
                 0x0000000020300276                usb_apcore_poweroff
-                0x00000000203002d0                start_armboot
- .text          0x000000002030046c       0x80 lib/libarm.a(string.o)
-                0x000000002030046c                strlen
-                0x000000002030047c                memset
-                0x00000000203004be                memcmp
-                0x00000000203004da                memcpy
- .text          0x00000000203004ec      0x138 drivers/libdrivers.a(uart.o)
-                0x00000000203004ec                uart_init
-                0x000000002030056c                uart_putc
-                0x0000000020300594                uart_puts
-                0x00000000203005a8                uart_getc
-                0x00000000203005c4                uart_tstc
-                0x00000000203005d4                UART_Read
-                0x00000000203005f0                UART_Write
-                0x000000002030060c                UART_Check_Sync
- .text          0x0000000020300624      0x338 drivers/libdrivers.a(image.o)
-                0x0000000020300628                page_align
-                0x0000000020300640                find_partition_para
-                0x0000000020300670                read_image_part_offset
-                0x00000000203006c4                read_flags_image
-                0x00000000203007ac                read_uboot_image
-                0x000000002030088c                nand_read_m0
-                0x00000000203008f8                read_zloader_image
- .text          0x000000002030095c      0x2b0 drivers/libdrivers.a(secure_verify.o)
-                0x000000002030097a                BIG2SMALL
-                0x00000000203009aa                bin2hex
-                0x00000000203009f4                secure_verify_zloader
-                0x0000000020300ae8                SecureVerify
- .text          0x0000000020300c0c      0x648 drivers/libdrivers.a(spifc_loader2.o)
-                0x0000000020300d00                zDrvGpio_SetFunc
-                0x0000000020300d38                zDrvGpio_SetDirection
-                0x0000000020300d88                zDrvGpio_SetOutputValue
-                0x0000000020300dc4                spi_nand_cs
-                0x0000000020300e00                spifc_clear_fifo
-                0x0000000020300e14                spifc_clear_int
-                0x0000000020300f70                spifc_read_oob
-                0x0000000020300fb4                spifc_read_page_raw
-                0x0000000020300ff0                spifc_read_page
-                0x000000002030106c                spifc_read
-                0x00000000203010b0                read_data
-                0x0000000020301104                read_id
-                0x0000000020301188                spifc_init
-                0x000000002030120c                zloader_flash_init
- .text          0x0000000020301254      0x1c0 drivers/libdrivers.a(bbt.o)
-                0x00000000203012b4                nand_creat_ram_bbt
-                0x00000000203012f8                nand_search_bbt
-                0x0000000020301384                nand_creat_bbt
-                0x0000000020301400                nand_block_isbad
- .text          0x0000000020301414     0x2688 drivers/libdrivers.a(sha256.o)
-                0x0000000020303934                sha256_starts
-                0x000000002030397c                sha256_update
-                0x0000000020303988                sha256_finish
-                0x0000000020303a74                sha256_csum_wd
- .text          0x0000000020303a9c      0x424 drivers/libdrivers.a(nor.o)
-                0x0000000020303a9c                spifc_enable
-                0x0000000020303acc                spifc_disable
-                0x0000000020303af0                spifc_setup_cmd
-                0x0000000020303b74                spifc_wait_cmd_end
-                0x0000000020303ba0                spifc_read_fifo
-                0x0000000020303bdc                spifc_start
-                0x0000000020303bec                cmd_seek
-                0x0000000020303c0c                nor_read_reg
-                0x0000000020303c6c                nor_read_id
-                0x0000000020303cd4                spi_nor_read
-                0x0000000020303d30                nor_read
-                0x0000000020303d84                spi_nor_read_security_register
-                0x0000000020303de0                nor_read_security_register
-                0x0000000020303e34                nor_init
-                0x0000000020303e84                board_flash_init
- .text          0x0000000020303ec0      0x82c drivers/libdrivers.a(ddr.o)
-                0x0000000020303ec0                nsdelay
-                0x0000000020303eda                ddr_clk_init
-                0x0000000020303ef0                ddr_phy_init
-                0x0000000020303fec                ddr_ctrl_init
-                0x00000000203043a8                ddr_prio_init
-                0x00000000203044cc                ddr_init
- .text          0x00000000203046ec       0xa4 drivers/libdrivers.a(drv_hash.o)
-                0x00000000203046ec                Hash_Calculate
- .text          0x0000000020304790      0x174 drivers/libdrivers.a(drv_rsa.o)
-                0x00000000203047aa                Rsa_Calculate
- .text          0x0000000020304904       0x28 drivers/libdrivers.a(flash.o)
-                0x0000000020304904                get_boot_mode
- .text          0x000000002030492c      0x1bc drivers/libdrivers.a(efuse.o)
-                0x000000002030492c                efuse_init
-                0x0000000020304950                get_ddr_flag
-                0x0000000020304a70                get_secure_verify_status
-                0x0000000020304ab4                get_otp_secure_verify_status
- .text          0x0000000020304ae8       0x54 cpu/m0/libm0.a(cpu.o)
-                0x0000000020304ae8                timer_init
-                0x0000000020304b00                usdelay
+                0x00000000203002d0                i2c_init
+                0x0000000020300338                pmu_read
+                0x0000000020300404                pmu_write
+                0x00000000203004d0                start_armboot
+ .text          0x000000002030070c       0x80 lib/libarm.a(string.o)
+                0x000000002030070c                strlen
+                0x000000002030071c                memset
+                0x000000002030075e                memcmp
+                0x000000002030077a                memcpy
+ .text          0x000000002030078c      0x82c drivers/libdrivers.a(ddr.o)
+                0x000000002030078c                nsdelay
+                0x00000000203007a6                ddr_clk_init
+                0x00000000203007bc                ddr_phy_init
+                0x00000000203008b8                ddr_ctrl_init
+                0x0000000020300c74                ddr_prio_init
+                0x0000000020300d98                ddr_init
+ .text          0x0000000020300fb8      0x138 drivers/libdrivers.a(uart.o)
+                0x0000000020300fb8                uart_init
+                0x0000000020301038                uart_putc
+                0x0000000020301060                uart_puts
+                0x0000000020301074                uart_getc
+                0x0000000020301090                uart_tstc
+                0x00000000203010a0                UART_Read
+                0x00000000203010bc                UART_Write
+                0x00000000203010d8                UART_Check_Sync
+ .text          0x00000000203010f0      0x338 drivers/libdrivers.a(image.o)
+                0x00000000203010f4                page_align
+                0x000000002030110c                find_partition_para
+                0x000000002030113c                read_image_part_offset
+                0x0000000020301190                read_flags_image
+                0x0000000020301278                read_uboot_image
+                0x0000000020301358                nand_read_m0
+                0x00000000203013c4                read_zloader_image
+ .text          0x0000000020301428      0x2b0 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020301446                BIG2SMALL
+                0x0000000020301476                bin2hex
+                0x00000000203014c0                secure_verify_zloader
+                0x00000000203015b4                SecureVerify
+ .text          0x00000000203016d8      0x648 drivers/libdrivers.a(spifc_loader2.o)
+                0x00000000203017cc                zDrvGpio_SetFunc
+                0x0000000020301804                zDrvGpio_SetDirection
+                0x0000000020301854                zDrvGpio_SetOutputValue
+                0x0000000020301890                spi_nand_cs
+                0x00000000203018cc                spifc_clear_fifo
+                0x00000000203018e0                spifc_clear_int
+                0x0000000020301a3c                spifc_read_oob
+                0x0000000020301a80                spifc_read_page_raw
+                0x0000000020301abc                spifc_read_page
+                0x0000000020301b38                spifc_read
+                0x0000000020301b7c                read_data
+                0x0000000020301bd0                read_id
+                0x0000000020301c54                spifc_init
+                0x0000000020301cd8                zloader_flash_init
+ .text          0x0000000020301d20      0x1c0 drivers/libdrivers.a(bbt.o)
+                0x0000000020301d80                nand_creat_ram_bbt
+                0x0000000020301dc4                nand_search_bbt
+                0x0000000020301e50                nand_creat_bbt
+                0x0000000020301ecc                nand_block_isbad
+ .text          0x0000000020301ee0     0x2688 drivers/libdrivers.a(sha256.o)
+                0x0000000020304400                sha256_starts
+                0x0000000020304448                sha256_update
+                0x0000000020304454                sha256_finish
+                0x0000000020304540                sha256_csum_wd
+ .text          0x0000000020304568      0x424 drivers/libdrivers.a(nor.o)
+                0x0000000020304568                spifc_enable
+                0x0000000020304598                spifc_disable
+                0x00000000203045bc                spifc_setup_cmd
+                0x0000000020304640                spifc_wait_cmd_end
+                0x000000002030466c                spifc_read_fifo
+                0x00000000203046a8                spifc_start
+                0x00000000203046b8                cmd_seek
+                0x00000000203046d8                nor_read_reg
+                0x0000000020304738                nor_read_id
+                0x00000000203047a0                spi_nor_read
+                0x00000000203047fc                nor_read
+                0x0000000020304850                spi_nor_read_security_register
+                0x00000000203048ac                nor_read_security_register
+                0x0000000020304900                nor_init
+                0x0000000020304950                board_flash_init
+ .text          0x000000002030498c       0xa4 drivers/libdrivers.a(drv_hash.o)
+                0x000000002030498c                Hash_Calculate
+ .text          0x0000000020304a30      0x174 drivers/libdrivers.a(drv_rsa.o)
+                0x0000000020304a4a                Rsa_Calculate
+ .text          0x0000000020304ba4       0x28 drivers/libdrivers.a(flash.o)
+                0x0000000020304ba4                get_boot_mode
+ .text          0x0000000020304bcc      0x1bc drivers/libdrivers.a(efuse.o)
+                0x0000000020304bcc                efuse_init
+                0x0000000020304bf0                get_ddr_flag
+                0x0000000020304d10                get_secure_verify_status
+                0x0000000020304d54                get_otp_secure_verify_status
+ .text          0x0000000020304d88       0x54 cpu/m0/libm0.a(cpu.o)
+                0x0000000020304d88                timer_init
+                0x0000000020304da0                usdelay
 
-.glue_7         0x0000000020304b3c        0x0
+.glue_7         0x0000000020304ddc        0x0
  .glue_7        0x0000000000000000        0x0 linker stubs
 
-.glue_7t        0x0000000020304b3c        0x0
+.glue_7t        0x0000000020304ddc        0x0
  .glue_7t       0x0000000000000000        0x0 linker stubs
 
-.vfp11_veneer   0x0000000020304b3c        0x0
+.vfp11_veneer   0x0000000020304ddc        0x0
  .vfp11_veneer  0x0000000000000000        0x0 linker stubs
 
-.v4_bx          0x0000000020304b3c        0x0
+.v4_bx          0x0000000020304ddc        0x0
  .v4_bx         0x0000000000000000        0x0 linker stubs
 
-.iplt           0x0000000020304b3c        0x0
+.iplt           0x0000000020304ddc        0x0
  .iplt          0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020304b3c                . = ALIGN (0x4)
+                0x0000000020304ddc                . = ALIGN (0x4)
 
-.rodata         0x0000000020304b3c      0x3f0
+.rodata         0x0000000020304ddc      0x3f0
  *(.rodata)
- .rodata        0x0000000020304b3c      0x270 drivers/libdrivers.a(spifc_loader2.o)
- .rodata        0x0000000020304dac       0x13 drivers/libdrivers.a(sha256.o)
-                0x0000000020304dac                sha256_der_prefix
- *fill*         0x0000000020304dbf        0x1 
- .rodata        0x0000000020304dc0      0x16c drivers/libdrivers.a(nor.o)
+ .rodata        0x0000000020304ddc      0x270 drivers/libdrivers.a(spifc_loader2.o)
+ .rodata        0x000000002030504c       0x13 drivers/libdrivers.a(sha256.o)
+                0x000000002030504c                sha256_der_prefix
+ *fill*         0x000000002030505f        0x1 
+ .rodata        0x0000000020305060      0x16c drivers/libdrivers.a(nor.o)
 
-.rodata.str1.1  0x0000000020304f2c      0x45b
+.rodata.str1.1  0x00000000203051cc      0x48d
  .rodata.str1.1
-                0x0000000020304f2c      0x158 lib/libarm.a(board.o)
-                                        0x171 (松开之前的大小)
+                0x00000000203051cc      0x18a lib/libarm.a(board.o)
+                                        0x1a3 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305084       0xef drivers/libdrivers.a(image.o)
+                0x0000000020305356       0xef drivers/libdrivers.a(image.o)
                                         0x115 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305173       0x5b drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305445       0x5b drivers/libdrivers.a(secure_verify.o)
                                          0x5d (松开之前的大小)
  .rodata.str1.1
-                0x00000000203051ce       0x3d drivers/libdrivers.a(spifc_loader2.o)
+                0x00000000203054a0       0x3d drivers/libdrivers.a(spifc_loader2.o)
                                          0x4a (松开之前的大小)
  .rodata.str1.1
-                0x000000002030520b        0x9 drivers/libdrivers.a(bbt.o)
+                0x00000000203054dd        0x9 drivers/libdrivers.a(bbt.o)
  .rodata.str1.1
-                0x0000000020305214      0x15c drivers/libdrivers.a(nor.o)
+                0x00000000203054e6      0x15c drivers/libdrivers.a(nor.o)
  .rodata.str1.1
-                0x0000000020305370       0x17 drivers/libdrivers.a(efuse.o)
+                0x0000000020305642       0x17 drivers/libdrivers.a(efuse.o)
 
-.rel.dyn        0x0000000020305388        0x0
+.rel.dyn        0x000000002030565c        0x0
  .rel.iplt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305388                . = ALIGN (0x4)
+                0x000000002030565c                . = ALIGN (0x4)
 
-.data           0x0000000020305388       0xd0
+.data           0x000000002030565c       0xd0
  *(.data)
- .data          0x0000000020305388        0x0 cpu/m0/start.o
- .data          0x0000000020305388        0x0 lib/libarm.a(board.o)
- .data          0x0000000020305388        0x0 lib/libarm.a(string.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(uart.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(image.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(secure_verify.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(spifc_loader2.o)
- .data          0x0000000020305388       0x40 drivers/libdrivers.a(bbt.o)
- .data          0x00000000203053c8       0x40 drivers/libdrivers.a(sha256.o)
- .data          0x0000000020305408       0x50 drivers/libdrivers.a(nor.o)
-                0x0000000020305408                nor_cmd_table
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(ddr.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(drv_hash.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(drv_rsa.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(flash.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(efuse.o)
- .data          0x0000000020305458        0x0 cpu/m0/libm0.a(cpu.o)
+ .data          0x000000002030565c        0x0 cpu/m0/start.o
+ .data          0x000000002030565c        0x0 lib/libarm.a(board.o)
+ .data          0x000000002030565c        0x0 lib/libarm.a(string.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(ddr.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(uart.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(image.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(secure_verify.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(spifc_loader2.o)
+ .data          0x000000002030565c       0x40 drivers/libdrivers.a(bbt.o)
+ .data          0x000000002030569c       0x40 drivers/libdrivers.a(sha256.o)
+ .data          0x00000000203056dc       0x50 drivers/libdrivers.a(nor.o)
+                0x00000000203056dc                nor_cmd_table
+ .data          0x000000002030572c        0x0 drivers/libdrivers.a(drv_hash.o)
+ .data          0x000000002030572c        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .data          0x000000002030572c        0x0 drivers/libdrivers.a(flash.o)
+ .data          0x000000002030572c        0x0 drivers/libdrivers.a(efuse.o)
+ .data          0x000000002030572c        0x0 cpu/m0/libm0.a(cpu.o)
 
-.igot.plt       0x0000000020305458        0x0
+.igot.plt       0x000000002030572c        0x0
  .igot.plt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305458                . = ALIGN (0x4)
+                0x000000002030572c                . = ALIGN (0x4)
 
 .got
  *(.got)
-                0x0000000020305458                . = ALIGN (0x4)
-                0x0000000020305458                __bss_start = .
+                0x000000002030572c                . = ALIGN (0x4)
+                0x000000002030572c                __bss_start = .
 
-.bss            0x0000000020305458      0x1e8
+.bss            0x000000002030572c      0x1e8
  *(.bss)
- .bss           0x0000000020305458        0x0 cpu/m0/start.o
- .bss           0x0000000020305458        0x4 lib/libarm.a(board.o)
-                0x0000000020305458                zloader_entry_point
- .bss           0x000000002030545c        0x0 lib/libarm.a(string.o)
- .bss           0x000000002030545c        0x0 drivers/libdrivers.a(uart.o)
- .bss           0x000000002030545c        0x0 drivers/libdrivers.a(image.o)
- .bss           0x000000002030545c      0x104 drivers/libdrivers.a(secure_verify.o)
-                0x000000002030545c                result
- .bss           0x0000000020305560        0x4 drivers/libdrivers.a(spifc_loader2.o)
- .bss           0x0000000020305564       0x80 drivers/libdrivers.a(bbt.o)
- .bss           0x00000000203055e4        0x0 drivers/libdrivers.a(sha256.o)
- .bss           0x00000000203055e4       0x28 drivers/libdrivers.a(nor.o)
-                0x00000000203055e4                spi_nor_flash
-                0x00000000203055e8                otp_data
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(ddr.o)
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(drv_hash.o)
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(drv_rsa.o)
- .bss           0x000000002030560c       0x24 drivers/libdrivers.a(flash.o)
-                0x000000002030560c                flash
- .bss           0x0000000020305630        0x0 drivers/libdrivers.a(efuse.o)
- .bss           0x0000000020305630       0x10 cpu/m0/libm0.a(cpu.o)
-                0x0000000020305630                g_tick
-                0x0000000020305640                __bss_end = .
-                0x0000000020305640                . = ALIGN (0x4)
+ .bss           0x000000002030572c        0x0 cpu/m0/start.o
+ .bss           0x000000002030572c        0x4 lib/libarm.a(board.o)
+                0x000000002030572c                zloader_entry_point
+ .bss           0x0000000020305730        0x0 lib/libarm.a(string.o)
+ .bss           0x0000000020305730        0x0 drivers/libdrivers.a(ddr.o)
+ .bss           0x0000000020305730        0x0 drivers/libdrivers.a(uart.o)
+ .bss           0x0000000020305730        0x0 drivers/libdrivers.a(image.o)
+ .bss           0x0000000020305730      0x104 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305730                result
+ .bss           0x0000000020305834        0x4 drivers/libdrivers.a(spifc_loader2.o)
+ .bss           0x0000000020305838       0x80 drivers/libdrivers.a(bbt.o)
+ .bss           0x00000000203058b8        0x0 drivers/libdrivers.a(sha256.o)
+ .bss           0x00000000203058b8       0x28 drivers/libdrivers.a(nor.o)
+                0x00000000203058b8                spi_nor_flash
+                0x00000000203058bc                otp_data
+ .bss           0x00000000203058e0        0x0 drivers/libdrivers.a(drv_hash.o)
+ .bss           0x00000000203058e0        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .bss           0x00000000203058e0       0x24 drivers/libdrivers.a(flash.o)
+                0x00000000203058e0                flash
+ .bss           0x0000000020305904        0x0 drivers/libdrivers.a(efuse.o)
+ .bss           0x0000000020305904       0x10 cpu/m0/libm0.a(cpu.o)
+                0x0000000020305904                g_tick
+                0x0000000020305914                __bss_end = .
+                0x0000000020305914                . = ALIGN (0x4)
 
-.para           0x0000000082000000        0x0 加载地址 0x0000000020305640
+.para           0x0000000082000000        0x0 加载地址 0x0000000020305914
                 0x0000000082000000                __para_start = .
  *(.para)
                 0x0000000082000000                __para_end = .
@@ -270,21 +273,21 @@
  .ARM.attributes
                 0x0000000000000020       0x10 lib/libarm.a(string.o)
  .ARM.attributes
-                0x0000000000000030       0x10 drivers/libdrivers.a(uart.o)
+                0x0000000000000030       0x10 drivers/libdrivers.a(ddr.o)
  .ARM.attributes
-                0x0000000000000040       0x10 drivers/libdrivers.a(image.o)
+                0x0000000000000040       0x10 drivers/libdrivers.a(uart.o)
  .ARM.attributes
-                0x0000000000000050       0x10 drivers/libdrivers.a(secure_verify.o)
+                0x0000000000000050       0x10 drivers/libdrivers.a(image.o)
  .ARM.attributes
-                0x0000000000000060       0x10 drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000000000060       0x10 drivers/libdrivers.a(secure_verify.o)
  .ARM.attributes
-                0x0000000000000070       0x10 drivers/libdrivers.a(bbt.o)
+                0x0000000000000070       0x10 drivers/libdrivers.a(spifc_loader2.o)
  .ARM.attributes
-                0x0000000000000080       0x10 drivers/libdrivers.a(sha256.o)
+                0x0000000000000080       0x10 drivers/libdrivers.a(bbt.o)
  .ARM.attributes
-                0x0000000000000090       0x10 drivers/libdrivers.a(nor.o)
+                0x0000000000000090       0x10 drivers/libdrivers.a(sha256.o)
  .ARM.attributes
-                0x00000000000000a0       0x10 drivers/libdrivers.a(ddr.o)
+                0x00000000000000a0       0x10 drivers/libdrivers.a(nor.o)
  .ARM.attributes
                 0x00000000000000b0       0x10 drivers/libdrivers.a(drv_hash.o)
  .ARM.attributes
@@ -300,6 +303,7 @@
  .comment       0x0000000000000000       0x29 lib/libarm.a(board.o)
                                          0x2a (松开之前的大小)
  .comment       0x0000000000000000       0x2a lib/libarm.a(string.o)
+ .comment       0x0000000000000000       0x2a drivers/libdrivers.a(ddr.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(uart.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(image.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(secure_verify.o)
@@ -307,7 +311,6 @@
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(bbt.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(sha256.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(nor.o)
- .comment       0x0000000000000000       0x2a drivers/libdrivers.a(ddr.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(drv_hash.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(drv_rsa.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(flash.o)
@@ -321,6 +324,8 @@
  .note.GNU-stack
                 0x0000000000000000        0x0 lib/libarm.a(string.o)
  .note.GNU-stack
+                0x0000000000000000        0x0 drivers/libdrivers.a(ddr.o)
+ .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(uart.o)
  .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(image.o)
@@ -335,8 +340,6 @@
  .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(nor.o)
  .note.GNU-stack
-                0x0000000000000000        0x0 drivers/libdrivers.a(ddr.o)
- .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(drv_hash.o)
  .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(drv_rsa.o)
@@ -353,56 +356,56 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x62d4
- .debug_info    0x0000000000000000      0x765 lib/libarm.a(board.o)
- .debug_info    0x0000000000000765      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000990      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000c30      0xd3c drivers/libdrivers.a(image.o)
- .debug_info    0x000000000000196c      0xb01 drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x000000000000246d     0x1661 drivers/libdrivers.a(spifc_loader2.o)
- .debug_info    0x0000000000003ace      0x70f drivers/libdrivers.a(bbt.o)
- .debug_info    0x00000000000041dd      0x586 drivers/libdrivers.a(sha256.o)
- .debug_info    0x0000000000004763      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x00000000000054c2      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x00000000000057eb      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x00000000000059d3      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x0000000000005d87      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x0000000000005f96      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000006159      0x17b cpu/m0/libm0.a(cpu.o)
+.debug_info     0x0000000000000000     0x65ab
+ .debug_info    0x0000000000000000      0x9a2 lib/libarm.a(board.o)
+ .debug_info    0x00000000000009a2      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000bcd      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000ef6      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000001196      0xdd6 drivers/libdrivers.a(image.o)
+ .debug_info    0x0000000000001f6c      0xb01 drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000002a6d     0x1661 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_info    0x00000000000040ce      0x70f drivers/libdrivers.a(bbt.o)
+ .debug_info    0x00000000000047dd      0x586 drivers/libdrivers.a(sha256.o)
+ .debug_info    0x0000000000004d63      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000005ac2      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000005caa      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x000000000000605e      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x000000000000626d      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x0000000000006430      0x17b cpu/m0/libm0.a(cpu.o)
 
-.debug_abbrev   0x0000000000000000     0x1c50
- .debug_abbrev  0x0000000000000000      0x2c9 lib/libarm.a(board.o)
- .debug_abbrev  0x00000000000002c9       0xb7 lib/libarm.a(string.o)
- .debug_abbrev  0x0000000000000380      0x19e drivers/libdrivers.a(uart.o)
- .debug_abbrev  0x000000000000051e      0x298 drivers/libdrivers.a(image.o)
- .debug_abbrev  0x00000000000007b6      0x274 drivers/libdrivers.a(secure_verify.o)
- .debug_abbrev  0x0000000000000a2a      0x48e drivers/libdrivers.a(spifc_loader2.o)
- .debug_abbrev  0x0000000000000eb8      0x281 drivers/libdrivers.a(bbt.o)
- .debug_abbrev  0x0000000000001139      0x20e drivers/libdrivers.a(sha256.o)
- .debug_abbrev  0x0000000000001347      0x280 drivers/libdrivers.a(nor.o)
- .debug_abbrev  0x00000000000015c7      0x12f drivers/libdrivers.a(ddr.o)
- .debug_abbrev  0x00000000000016f6       0xde drivers/libdrivers.a(drv_hash.o)
- .debug_abbrev  0x00000000000017d4      0x1e2 drivers/libdrivers.a(drv_rsa.o)
- .debug_abbrev  0x00000000000019b6       0xb5 drivers/libdrivers.a(flash.o)
- .debug_abbrev  0x0000000000001a6b      0x11d drivers/libdrivers.a(efuse.o)
- .debug_abbrev  0x0000000000001b88       0xc8 cpu/m0/libm0.a(cpu.o)
+.debug_abbrev   0x0000000000000000     0x1c94
+ .debug_abbrev  0x0000000000000000      0x304 lib/libarm.a(board.o)
+ .debug_abbrev  0x0000000000000304       0xb7 lib/libarm.a(string.o)
+ .debug_abbrev  0x00000000000003bb      0x12f drivers/libdrivers.a(ddr.o)
+ .debug_abbrev  0x00000000000004ea      0x19e drivers/libdrivers.a(uart.o)
+ .debug_abbrev  0x0000000000000688      0x2a1 drivers/libdrivers.a(image.o)
+ .debug_abbrev  0x0000000000000929      0x274 drivers/libdrivers.a(secure_verify.o)
+ .debug_abbrev  0x0000000000000b9d      0x48e drivers/libdrivers.a(spifc_loader2.o)
+ .debug_abbrev  0x000000000000102b      0x281 drivers/libdrivers.a(bbt.o)
+ .debug_abbrev  0x00000000000012ac      0x20e drivers/libdrivers.a(sha256.o)
+ .debug_abbrev  0x00000000000014ba      0x280 drivers/libdrivers.a(nor.o)
+ .debug_abbrev  0x000000000000173a       0xde drivers/libdrivers.a(drv_hash.o)
+ .debug_abbrev  0x0000000000001818      0x1e2 drivers/libdrivers.a(drv_rsa.o)
+ .debug_abbrev  0x00000000000019fa       0xb5 drivers/libdrivers.a(flash.o)
+ .debug_abbrev  0x0000000000001aaf      0x11d drivers/libdrivers.a(efuse.o)
+ .debug_abbrev  0x0000000000001bcc       0xc8 cpu/m0/libm0.a(cpu.o)
 
-.debug_loc      0x0000000000000000     0x956d
- .debug_loc     0x0000000000000000      0x17b lib/libarm.a(board.o)
- .debug_loc     0x000000000000017b      0x29d lib/libarm.a(string.o)
- .debug_loc     0x0000000000000418      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x0000000000000640      0x6a2 drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000000ce2      0x790 drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x0000000000001472      0xef4 drivers/libdrivers.a(spifc_loader2.o)
- .debug_loc     0x0000000000002366      0x282 drivers/libdrivers.a(bbt.o)
- .debug_loc     0x00000000000025e8     0x5f3f drivers/libdrivers.a(sha256.o)
- .debug_loc     0x0000000000008527      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x0000000000008d31      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x0000000000009009      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x00000000000091c1      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x00000000000093f9       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x0000000000009418       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x00000000000094c3       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x9737
+ .debug_loc     0x0000000000000000      0x345 lib/libarm.a(board.o)
+ .debug_loc     0x0000000000000345      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x00000000000005e2      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x00000000000008ba      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x0000000000000ae2      0x6a2 drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000001184      0x790 drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x0000000000001914      0xef4 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_loc     0x0000000000002808      0x282 drivers/libdrivers.a(bbt.o)
+ .debug_loc     0x0000000000002a8a     0x5f3f drivers/libdrivers.a(sha256.o)
+ .debug_loc     0x00000000000089c9      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x00000000000091d3      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x000000000000938b      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x00000000000095c3       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x00000000000095e2       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x000000000000968d       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1e0
  .debug_aranges
@@ -410,21 +413,21 @@
  .debug_aranges
                 0x0000000000000020       0x20 lib/libarm.a(string.o)
  .debug_aranges
-                0x0000000000000040       0x20 drivers/libdrivers.a(uart.o)
+                0x0000000000000040       0x20 drivers/libdrivers.a(ddr.o)
  .debug_aranges
-                0x0000000000000060       0x20 drivers/libdrivers.a(image.o)
+                0x0000000000000060       0x20 drivers/libdrivers.a(uart.o)
  .debug_aranges
-                0x0000000000000080       0x20 drivers/libdrivers.a(secure_verify.o)
+                0x0000000000000080       0x20 drivers/libdrivers.a(image.o)
  .debug_aranges
-                0x00000000000000a0       0x20 drivers/libdrivers.a(spifc_loader2.o)
+                0x00000000000000a0       0x20 drivers/libdrivers.a(secure_verify.o)
  .debug_aranges
-                0x00000000000000c0       0x20 drivers/libdrivers.a(bbt.o)
+                0x00000000000000c0       0x20 drivers/libdrivers.a(spifc_loader2.o)
  .debug_aranges
-                0x00000000000000e0       0x20 drivers/libdrivers.a(sha256.o)
+                0x00000000000000e0       0x20 drivers/libdrivers.a(bbt.o)
  .debug_aranges
-                0x0000000000000100       0x20 drivers/libdrivers.a(nor.o)
+                0x0000000000000100       0x20 drivers/libdrivers.a(sha256.o)
  .debug_aranges
-                0x0000000000000120       0x20 drivers/libdrivers.a(ddr.o)
+                0x0000000000000120       0x20 drivers/libdrivers.a(nor.o)
  .debug_aranges
                 0x0000000000000140       0x20 drivers/libdrivers.a(drv_hash.o)
  .debug_aranges
@@ -438,76 +441,76 @@
 
 .debug_ranges   0x0000000000000000      0x238
  .debug_ranges  0x0000000000000000       0x18 lib/libarm.a(board.o)
- .debug_ranges  0x0000000000000018       0x18 drivers/libdrivers.a(uart.o)
- .debug_ranges  0x0000000000000030      0x140 drivers/libdrivers.a(spifc_loader2.o)
- .debug_ranges  0x0000000000000170       0x30 drivers/libdrivers.a(bbt.o)
- .debug_ranges  0x00000000000001a0       0x20 drivers/libdrivers.a(nor.o)
- .debug_ranges  0x00000000000001c0       0x18 drivers/libdrivers.a(ddr.o)
+ .debug_ranges  0x0000000000000018       0x18 drivers/libdrivers.a(ddr.o)
+ .debug_ranges  0x0000000000000030       0x18 drivers/libdrivers.a(uart.o)
+ .debug_ranges  0x0000000000000048      0x140 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_ranges  0x0000000000000188       0x30 drivers/libdrivers.a(bbt.o)
+ .debug_ranges  0x00000000000001b8       0x20 drivers/libdrivers.a(nor.o)
  .debug_ranges  0x00000000000001d8       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000200       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x1f9e
- .debug_line    0x0000000000000000      0x303 lib/libarm.a(board.o)
- .debug_line    0x0000000000000303      0x152 lib/libarm.a(string.o)
- .debug_line    0x0000000000000455      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x0000000000000567      0x3b8 drivers/libdrivers.a(image.o)
- .debug_line    0x000000000000091f      0x38e drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000cad      0x442 drivers/libdrivers.a(spifc_loader2.o)
- .debug_line    0x00000000000010ef      0x251 drivers/libdrivers.a(bbt.o)
- .debug_line    0x0000000000001340      0x2bb drivers/libdrivers.a(sha256.o)
- .debug_line    0x00000000000015fb      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x000000000000189d      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x0000000000001b36       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001bbe      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001cd5      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001ddf      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000001ef7       0xa7 cpu/m0/libm0.a(cpu.o)
+.debug_line     0x0000000000000000     0x203f
+ .debug_line    0x0000000000000000      0x3a4 lib/libarm.a(board.o)
+ .debug_line    0x00000000000003a4      0x152 lib/libarm.a(string.o)
+ .debug_line    0x00000000000004f6      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x000000000000078f      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000008a1      0x3b8 drivers/libdrivers.a(image.o)
+ .debug_line    0x0000000000000c59      0x38e drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000fe7      0x442 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_line    0x0000000000001429      0x251 drivers/libdrivers.a(bbt.o)
+ .debug_line    0x000000000000167a      0x2bb drivers/libdrivers.a(sha256.o)
+ .debug_line    0x0000000000001935      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001bd7       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x0000000000001c5f      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001d76      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x0000000000001e80      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000001f98       0xa7 cpu/m0/libm0.a(cpu.o)
 
-.debug_str      0x0000000000000000     0x1565
- .debug_str     0x0000000000000000      0x4a7 lib/libarm.a(board.o)
-                                        0x518 (松开之前的大小)
- .debug_str     0x00000000000004a7       0x3f lib/libarm.a(string.o)
+.debug_str      0x0000000000000000     0x160a
+ .debug_str     0x0000000000000000      0x55d lib/libarm.a(board.o)
+                                        0x5d3 (松开之前的大小)
+ .debug_str     0x000000000000055d       0x3f lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x00000000000004e6       0xe2 drivers/libdrivers.a(uart.o)
-                                        0x253 (松开之前的大小)
- .debug_str     0x00000000000005c8      0x35b drivers/libdrivers.a(image.o)
-                                        0x808 (松开之前的大小)
- .debug_str     0x0000000000000923      0x2f9 drivers/libdrivers.a(secure_verify.o)
-                                        0x61f (松开之前的大小)
- .debug_str     0x0000000000000c1c      0x3cc drivers/libdrivers.a(spifc_loader2.o)
-                                        0x6c1 (松开之前的大小)
- .debug_str     0x0000000000000fe8      0x103 drivers/libdrivers.a(bbt.o)
-                                        0x3fe (松开之前的大小)
- .debug_str     0x00000000000010eb       0xc3 drivers/libdrivers.a(sha256.o)
-                                        0x2b7 (松开之前的大小)
- .debug_str     0x00000000000011ae      0x1ad drivers/libdrivers.a(nor.o)
-                                        0x5f3 (松开之前的大小)
- .debug_str     0x000000000000135b       0x54 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x000000000000059c       0xa2 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x00000000000013af       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x000000000000063e       0x94 drivers/libdrivers.a(uart.o)
+                                        0x253 (松开之前的大小)
+ .debug_str     0x00000000000006d2      0x35b drivers/libdrivers.a(image.o)
+                                        0x854 (松开之前的大小)
+ .debug_str     0x0000000000000a2d      0x2f9 drivers/libdrivers.a(secure_verify.o)
+                                        0x61f (松开之前的大小)
+ .debug_str     0x0000000000000d26      0x3bb drivers/libdrivers.a(spifc_loader2.o)
+                                        0x6c1 (松开之前的大小)
+ .debug_str     0x00000000000010e1      0x103 drivers/libdrivers.a(bbt.o)
+                                        0x3fe (松开之前的大小)
+ .debug_str     0x00000000000011e4       0xc3 drivers/libdrivers.a(sha256.o)
+                                        0x2b7 (松开之前的大小)
+ .debug_str     0x00000000000012a7      0x1ad drivers/libdrivers.a(nor.o)
+                                        0x5f3 (松开之前的大小)
+ .debug_str     0x0000000000001454       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000001436       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x00000000000014db       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x00000000000014af       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000001554       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x00000000000014c1       0x20 drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000001566       0x20 drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x00000000000014e1       0x84 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000001586       0x84 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
 
-.debug_frame    0x0000000000000000      0xa90
- .debug_frame   0x0000000000000000       0xb0 lib/libarm.a(board.o)
- .debug_frame   0x00000000000000b0       0x68 lib/libarm.a(string.o)
- .debug_frame   0x0000000000000118       0xc0 drivers/libdrivers.a(uart.o)
- .debug_frame   0x00000000000001d8       0xec drivers/libdrivers.a(image.o)
- .debug_frame   0x00000000000002c4       0xb0 drivers/libdrivers.a(secure_verify.o)
- .debug_frame   0x0000000000000374      0x23c drivers/libdrivers.a(spifc_loader2.o)
- .debug_frame   0x00000000000005b0       0xa0 drivers/libdrivers.a(bbt.o)
- .debug_frame   0x0000000000000650       0xbc drivers/libdrivers.a(sha256.o)
- .debug_frame   0x000000000000070c      0x1b0 drivers/libdrivers.a(nor.o)
- .debug_frame   0x00000000000008bc       0xac drivers/libdrivers.a(ddr.o)
- .debug_frame   0x0000000000000968       0x2c drivers/libdrivers.a(drv_hash.o)
- .debug_frame   0x0000000000000994       0x4c drivers/libdrivers.a(drv_rsa.o)
- .debug_frame   0x00000000000009e0       0x20 drivers/libdrivers.a(flash.o)
- .debug_frame   0x0000000000000a00       0x60 drivers/libdrivers.a(efuse.o)
- .debug_frame   0x0000000000000a60       0x30 cpu/m0/libm0.a(cpu.o)
+.debug_frame    0x0000000000000000      0xaf0
+ .debug_frame   0x0000000000000000      0x110 lib/libarm.a(board.o)
+ .debug_frame   0x0000000000000110       0x68 lib/libarm.a(string.o)
+ .debug_frame   0x0000000000000178       0xac drivers/libdrivers.a(ddr.o)
+ .debug_frame   0x0000000000000224       0xc0 drivers/libdrivers.a(uart.o)
+ .debug_frame   0x00000000000002e4       0xec drivers/libdrivers.a(image.o)
+ .debug_frame   0x00000000000003d0       0xb0 drivers/libdrivers.a(secure_verify.o)
+ .debug_frame   0x0000000000000480      0x23c drivers/libdrivers.a(spifc_loader2.o)
+ .debug_frame   0x00000000000006bc       0xa0 drivers/libdrivers.a(bbt.o)
+ .debug_frame   0x000000000000075c       0xbc drivers/libdrivers.a(sha256.o)
+ .debug_frame   0x0000000000000818      0x1b0 drivers/libdrivers.a(nor.o)
+ .debug_frame   0x00000000000009c8       0x2c drivers/libdrivers.a(drv_hash.o)
+ .debug_frame   0x00000000000009f4       0x4c drivers/libdrivers.a(drv_rsa.o)
+ .debug_frame   0x0000000000000a40       0x20 drivers/libdrivers.a(flash.o)
+ .debug_frame   0x0000000000000a60       0x60 drivers/libdrivers.a(efuse.o)
+ .debug_frame   0x0000000000000ac0       0x30 cpu/m0/libm0.a(cpu.o)
diff --git a/boot/prj/zx297520v3/bootrom/dl_on/loader2.bin b/boot/prj/zx297520v3/bootrom/dl_on/loader2.bin
index 3652c89..e13e6d9 100755
--- a/boot/prj/zx297520v3/bootrom/dl_on/loader2.bin
+++ b/boot/prj/zx297520v3/bootrom/dl_on/loader2.bin
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom/dl_on/z-load b/boot/prj/zx297520v3/bootrom/dl_on/z-load
index 9dcf975..2bc2831 100755
--- a/boot/prj/zx297520v3/bootrom/dl_on/z-load
+++ b/boot/prj/zx297520v3/bootrom/dl_on/z-load
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom/dl_on/z-load.map b/boot/prj/zx297520v3/bootrom/dl_on/z-load.map
index fb2ebb9..07ae1fd 100755
--- a/boot/prj/zx297520v3/bootrom/dl_on/z-load.map
+++ b/boot/prj/zx297520v3/bootrom/dl_on/z-load.map
@@ -300,35 +300,35 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x341f
- .debug_info    0x0000000000000000      0x658 lib/libarm.a(board.o)
- .debug_info    0x0000000000000658      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000883      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000bac      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000e4c      0x6d3 drivers/libdrivers.a(image.o)
- .debug_info    0x000000000000151f      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x00000000000016e2      0x62d drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000001d0f      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000002a6e      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000002c56      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x000000000000300a      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x0000000000003219      0x17b cpu/m0/libm0.a(cpu.o)
- .debug_info    0x0000000000003394       0x8b cpu/m0/libm0.a(clk.o)
+.debug_info     0x0000000000000000     0x34d2
+ .debug_info    0x0000000000000000      0x70b lib/libarm.a(board.o)
+ .debug_info    0x000000000000070b      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000936      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000c5f      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000eff      0x6d3 drivers/libdrivers.a(image.o)
+ .debug_info    0x00000000000015d2      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x0000000000001795      0x62d drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000001dc2      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000002b21      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000002d09      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000030bd      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000032cc      0x17b cpu/m0/libm0.a(cpu.o)
+ .debug_info    0x0000000000003447       0x8b cpu/m0/libm0.a(clk.o)
 
-.debug_abbrev   0x0000000000000000     0x1290
- .debug_abbrev  0x0000000000000000      0x286 lib/libarm.a(board.o)
- .debug_abbrev  0x0000000000000286       0xb7 lib/libarm.a(string.o)
- .debug_abbrev  0x000000000000033d      0x12f drivers/libdrivers.a(ddr.o)
- .debug_abbrev  0x000000000000046c      0x19e drivers/libdrivers.a(uart.o)
- .debug_abbrev  0x000000000000060a      0x212 drivers/libdrivers.a(image.o)
- .debug_abbrev  0x000000000000081c      0x11d drivers/libdrivers.a(efuse.o)
- .debug_abbrev  0x0000000000000939      0x258 drivers/libdrivers.a(secure_verify.o)
- .debug_abbrev  0x0000000000000b91      0x280 drivers/libdrivers.a(nor.o)
- .debug_abbrev  0x0000000000000e11       0xde drivers/libdrivers.a(drv_hash.o)
- .debug_abbrev  0x0000000000000eef      0x1e2 drivers/libdrivers.a(drv_rsa.o)
- .debug_abbrev  0x00000000000010d1       0xb5 drivers/libdrivers.a(flash.o)
- .debug_abbrev  0x0000000000001186       0xc8 cpu/m0/libm0.a(cpu.o)
- .debug_abbrev  0x000000000000124e       0x42 cpu/m0/libm0.a(clk.o)
+.debug_abbrev   0x0000000000000000     0x12c2
+ .debug_abbrev  0x0000000000000000      0x2b8 lib/libarm.a(board.o)
+ .debug_abbrev  0x00000000000002b8       0xb7 lib/libarm.a(string.o)
+ .debug_abbrev  0x000000000000036f      0x12f drivers/libdrivers.a(ddr.o)
+ .debug_abbrev  0x000000000000049e      0x19e drivers/libdrivers.a(uart.o)
+ .debug_abbrev  0x000000000000063c      0x212 drivers/libdrivers.a(image.o)
+ .debug_abbrev  0x000000000000084e      0x11d drivers/libdrivers.a(efuse.o)
+ .debug_abbrev  0x000000000000096b      0x258 drivers/libdrivers.a(secure_verify.o)
+ .debug_abbrev  0x0000000000000bc3      0x280 drivers/libdrivers.a(nor.o)
+ .debug_abbrev  0x0000000000000e43       0xde drivers/libdrivers.a(drv_hash.o)
+ .debug_abbrev  0x0000000000000f21      0x1e2 drivers/libdrivers.a(drv_rsa.o)
+ .debug_abbrev  0x0000000000001103       0xb5 drivers/libdrivers.a(flash.o)
+ .debug_abbrev  0x00000000000011b8       0xc8 cpu/m0/libm0.a(cpu.o)
+ .debug_abbrev  0x0000000000001280       0x42 cpu/m0/libm0.a(clk.o)
 
 .debug_loc      0x0000000000000000     0x1c6c
  .debug_loc     0x0000000000000000       0xcc lib/libarm.a(board.o)
@@ -380,47 +380,47 @@
  .debug_ranges  0x0000000000000068       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000090       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x1422
- .debug_line    0x0000000000000000      0x2e5 lib/libarm.a(board.o)
- .debug_line    0x00000000000002e5      0x152 lib/libarm.a(string.o)
- .debug_line    0x0000000000000437      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x00000000000006d0      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x00000000000007e2      0x228 drivers/libdrivers.a(image.o)
- .debug_line    0x0000000000000a0a      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000000b22      0x2ad drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000dcf      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x0000000000001071       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x00000000000010f9      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001210      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x000000000000131a       0xa7 cpu/m0/libm0.a(cpu.o)
- .debug_line    0x00000000000013c1       0x61 cpu/m0/libm0.a(clk.o)
+.debug_line     0x0000000000000000     0x1425
+ .debug_line    0x0000000000000000      0x2e8 lib/libarm.a(board.o)
+ .debug_line    0x00000000000002e8      0x152 lib/libarm.a(string.o)
+ .debug_line    0x000000000000043a      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x00000000000006d3      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000007e5      0x228 drivers/libdrivers.a(image.o)
+ .debug_line    0x0000000000000a0d      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000000b25      0x2ad drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000dd2      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001074       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x00000000000010fc      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001213      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x000000000000131d       0xa7 cpu/m0/libm0.a(cpu.o)
+ .debug_line    0x00000000000013c4       0x61 cpu/m0/libm0.a(clk.o)
 
-.debug_str      0x0000000000000000      0xe62
- .debug_str     0x0000000000000000      0x47c lib/libarm.a(board.o)
-                                        0x4f6 (松开之前的大小)
- .debug_str     0x000000000000047c       0x4c lib/libarm.a(string.o)
+.debug_str      0x0000000000000000      0xebb
+ .debug_str     0x0000000000000000      0x4d5 lib/libarm.a(board.o)
+                                        0x554 (松开之前的大小)
+ .debug_str     0x00000000000004d5       0x4c lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x00000000000004c8       0xa1 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x0000000000000521       0xa1 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x0000000000000569       0x8a drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005c2       0x8a drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x00000000000005f3      0x229 drivers/libdrivers.a(image.o)
+ .debug_str     0x000000000000064c      0x229 drivers/libdrivers.a(image.o)
                                         0x4a0 (松开之前的大小)
- .debug_str     0x000000000000081c       0x7b drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000000875       0x7b drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x0000000000000897      0x177 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000008f0      0x177 drivers/libdrivers.a(secure_verify.o)
                                         0x407 (松开之前的大小)
- .debug_str     0x0000000000000a0e      0x2c3 drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000000a67      0x2c3 drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000000cd1       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000000d2a       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000000d58       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x0000000000000db1       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000000dd1       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000000e2a       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000000de3       0x79 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000000e3c       0x79 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
- .debug_str     0x0000000000000e5c        0x6 cpu/m0/libm0.a(clk.o)
+ .debug_str     0x0000000000000eb5        0x6 cpu/m0/libm0.a(clk.o)
                                         0x1bd (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0x6a0
diff --git a/boot/prj/zx297520v3/bootrom/dl_on/z-load2 b/boot/prj/zx297520v3/bootrom/dl_on/z-load2
index f556735..aa9d47a 100755
--- a/boot/prj/zx297520v3/bootrom/dl_on/z-load2
+++ b/boot/prj/zx297520v3/bootrom/dl_on/z-load2
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom/dl_on/z-load2.map b/boot/prj/zx297520v3/bootrom/dl_on/z-load2.map
index e422c41..0163e41 100755
--- a/boot/prj/zx297520v3/bootrom/dl_on/z-load2.map
+++ b/boot/prj/zx297520v3/bootrom/dl_on/z-load2.map
@@ -2,6 +2,7 @@
 
 lib/libarm.a(board.o)         cpu/m0/start.o (start_armboot)
 lib/libarm.a(string.o)        lib/libarm.a(board.o) (memcpy)
+drivers/libdrivers.a(ddr.o)   lib/libarm.a(board.o) (nsdelay)
 drivers/libdrivers.a(uart.o)  lib/libarm.a(board.o) (uart_puts)
 drivers/libdrivers.a(image.o)
                               lib/libarm.a(board.o) (read_flags_image)
@@ -13,7 +14,6 @@
 drivers/libdrivers.a(sha256.o)
                               drivers/libdrivers.a(secure_verify.o) (sha256_csum_wd)
 drivers/libdrivers.a(nor.o)   lib/libarm.a(board.o) (nor_init)
-drivers/libdrivers.a(ddr.o)   drivers/libdrivers.a(spifc_loader2.o) (nsdelay)
 drivers/libdrivers.a(drv_hash.o)
                               drivers/libdrivers.a(secure_verify.o) (Hash_Calculate)
 drivers/libdrivers.a(drv_rsa.o)
@@ -34,7 +34,7 @@
                 0x0000000000000000                . = 0x0
                 0x0000000000000000                . = ALIGN (0x4)
 
-.text           0x0000000020300000     0x4b3c
+.text           0x0000000020300000     0x4ddc
  cpu/m0/start.o(.text)
  .text          0x0000000020300000      0x220 cpu/m0/start.o
                 0x00000000203001a4                _bss_start
@@ -44,209 +44,212 @@
                 0x00000000203001b8                _start
                 0x00000000203001fe                run_at
  *(.text)
- .text          0x0000000020300220      0x24c lib/libarm.a(board.o)
+ .text          0x0000000020300220      0x4ec lib/libarm.a(board.o)
                 0x0000000020300220                print_info
                 0x0000000020300230                copy_to_iram1
                 0x0000000020300250                clear_iram
                 0x0000000020300268                write_loader_mode
                 0x0000000020300274                hang
                 0x0000000020300276                usb_apcore_poweroff
-                0x00000000203002d0                start_armboot
- .text          0x000000002030046c       0x80 lib/libarm.a(string.o)
-                0x000000002030046c                strlen
-                0x000000002030047c                memset
-                0x00000000203004be                memcmp
-                0x00000000203004da                memcpy
- .text          0x00000000203004ec      0x138 drivers/libdrivers.a(uart.o)
-                0x00000000203004ec                uart_init
-                0x000000002030056c                uart_putc
-                0x0000000020300594                uart_puts
-                0x00000000203005a8                uart_getc
-                0x00000000203005c4                uart_tstc
-                0x00000000203005d4                UART_Read
-                0x00000000203005f0                UART_Write
-                0x000000002030060c                UART_Check_Sync
- .text          0x0000000020300624      0x338 drivers/libdrivers.a(image.o)
-                0x0000000020300628                page_align
-                0x0000000020300640                find_partition_para
-                0x0000000020300670                read_image_part_offset
-                0x00000000203006c4                read_flags_image
-                0x00000000203007ac                read_uboot_image
-                0x000000002030088c                nand_read_m0
-                0x00000000203008f8                read_zloader_image
- .text          0x000000002030095c      0x2b0 drivers/libdrivers.a(secure_verify.o)
-                0x000000002030097a                BIG2SMALL
-                0x00000000203009aa                bin2hex
-                0x00000000203009f4                secure_verify_zloader
-                0x0000000020300ae8                SecureVerify
- .text          0x0000000020300c0c      0x648 drivers/libdrivers.a(spifc_loader2.o)
-                0x0000000020300d00                zDrvGpio_SetFunc
-                0x0000000020300d38                zDrvGpio_SetDirection
-                0x0000000020300d88                zDrvGpio_SetOutputValue
-                0x0000000020300dc4                spi_nand_cs
-                0x0000000020300e00                spifc_clear_fifo
-                0x0000000020300e14                spifc_clear_int
-                0x0000000020300f70                spifc_read_oob
-                0x0000000020300fb4                spifc_read_page_raw
-                0x0000000020300ff0                spifc_read_page
-                0x000000002030106c                spifc_read
-                0x00000000203010b0                read_data
-                0x0000000020301104                read_id
-                0x0000000020301188                spifc_init
-                0x000000002030120c                zloader_flash_init
- .text          0x0000000020301254      0x1c0 drivers/libdrivers.a(bbt.o)
-                0x00000000203012b4                nand_creat_ram_bbt
-                0x00000000203012f8                nand_search_bbt
-                0x0000000020301384                nand_creat_bbt
-                0x0000000020301400                nand_block_isbad
- .text          0x0000000020301414     0x2688 drivers/libdrivers.a(sha256.o)
-                0x0000000020303934                sha256_starts
-                0x000000002030397c                sha256_update
-                0x0000000020303988                sha256_finish
-                0x0000000020303a74                sha256_csum_wd
- .text          0x0000000020303a9c      0x424 drivers/libdrivers.a(nor.o)
-                0x0000000020303a9c                spifc_enable
-                0x0000000020303acc                spifc_disable
-                0x0000000020303af0                spifc_setup_cmd
-                0x0000000020303b74                spifc_wait_cmd_end
-                0x0000000020303ba0                spifc_read_fifo
-                0x0000000020303bdc                spifc_start
-                0x0000000020303bec                cmd_seek
-                0x0000000020303c0c                nor_read_reg
-                0x0000000020303c6c                nor_read_id
-                0x0000000020303cd4                spi_nor_read
-                0x0000000020303d30                nor_read
-                0x0000000020303d84                spi_nor_read_security_register
-                0x0000000020303de0                nor_read_security_register
-                0x0000000020303e34                nor_init
-                0x0000000020303e84                board_flash_init
- .text          0x0000000020303ec0      0x82c drivers/libdrivers.a(ddr.o)
-                0x0000000020303ec0                nsdelay
-                0x0000000020303eda                ddr_clk_init
-                0x0000000020303ef0                ddr_phy_init
-                0x0000000020303fec                ddr_ctrl_init
-                0x00000000203043a8                ddr_prio_init
-                0x00000000203044cc                ddr_init
- .text          0x00000000203046ec       0xa4 drivers/libdrivers.a(drv_hash.o)
-                0x00000000203046ec                Hash_Calculate
- .text          0x0000000020304790      0x174 drivers/libdrivers.a(drv_rsa.o)
-                0x00000000203047aa                Rsa_Calculate
- .text          0x0000000020304904       0x28 drivers/libdrivers.a(flash.o)
-                0x0000000020304904                get_boot_mode
- .text          0x000000002030492c      0x1bc drivers/libdrivers.a(efuse.o)
-                0x000000002030492c                efuse_init
-                0x0000000020304950                get_ddr_flag
-                0x0000000020304a70                get_secure_verify_status
-                0x0000000020304ab4                get_otp_secure_verify_status
- .text          0x0000000020304ae8       0x54 cpu/m0/libm0.a(cpu.o)
-                0x0000000020304ae8                timer_init
-                0x0000000020304b00                usdelay
+                0x00000000203002d0                i2c_init
+                0x0000000020300338                pmu_read
+                0x0000000020300404                pmu_write
+                0x00000000203004d0                start_armboot
+ .text          0x000000002030070c       0x80 lib/libarm.a(string.o)
+                0x000000002030070c                strlen
+                0x000000002030071c                memset
+                0x000000002030075e                memcmp
+                0x000000002030077a                memcpy
+ .text          0x000000002030078c      0x82c drivers/libdrivers.a(ddr.o)
+                0x000000002030078c                nsdelay
+                0x00000000203007a6                ddr_clk_init
+                0x00000000203007bc                ddr_phy_init
+                0x00000000203008b8                ddr_ctrl_init
+                0x0000000020300c74                ddr_prio_init
+                0x0000000020300d98                ddr_init
+ .text          0x0000000020300fb8      0x138 drivers/libdrivers.a(uart.o)
+                0x0000000020300fb8                uart_init
+                0x0000000020301038                uart_putc
+                0x0000000020301060                uart_puts
+                0x0000000020301074                uart_getc
+                0x0000000020301090                uart_tstc
+                0x00000000203010a0                UART_Read
+                0x00000000203010bc                UART_Write
+                0x00000000203010d8                UART_Check_Sync
+ .text          0x00000000203010f0      0x338 drivers/libdrivers.a(image.o)
+                0x00000000203010f4                page_align
+                0x000000002030110c                find_partition_para
+                0x000000002030113c                read_image_part_offset
+                0x0000000020301190                read_flags_image
+                0x0000000020301278                read_uboot_image
+                0x0000000020301358                nand_read_m0
+                0x00000000203013c4                read_zloader_image
+ .text          0x0000000020301428      0x2b0 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020301446                BIG2SMALL
+                0x0000000020301476                bin2hex
+                0x00000000203014c0                secure_verify_zloader
+                0x00000000203015b4                SecureVerify
+ .text          0x00000000203016d8      0x648 drivers/libdrivers.a(spifc_loader2.o)
+                0x00000000203017cc                zDrvGpio_SetFunc
+                0x0000000020301804                zDrvGpio_SetDirection
+                0x0000000020301854                zDrvGpio_SetOutputValue
+                0x0000000020301890                spi_nand_cs
+                0x00000000203018cc                spifc_clear_fifo
+                0x00000000203018e0                spifc_clear_int
+                0x0000000020301a3c                spifc_read_oob
+                0x0000000020301a80                spifc_read_page_raw
+                0x0000000020301abc                spifc_read_page
+                0x0000000020301b38                spifc_read
+                0x0000000020301b7c                read_data
+                0x0000000020301bd0                read_id
+                0x0000000020301c54                spifc_init
+                0x0000000020301cd8                zloader_flash_init
+ .text          0x0000000020301d20      0x1c0 drivers/libdrivers.a(bbt.o)
+                0x0000000020301d80                nand_creat_ram_bbt
+                0x0000000020301dc4                nand_search_bbt
+                0x0000000020301e50                nand_creat_bbt
+                0x0000000020301ecc                nand_block_isbad
+ .text          0x0000000020301ee0     0x2688 drivers/libdrivers.a(sha256.o)
+                0x0000000020304400                sha256_starts
+                0x0000000020304448                sha256_update
+                0x0000000020304454                sha256_finish
+                0x0000000020304540                sha256_csum_wd
+ .text          0x0000000020304568      0x424 drivers/libdrivers.a(nor.o)
+                0x0000000020304568                spifc_enable
+                0x0000000020304598                spifc_disable
+                0x00000000203045bc                spifc_setup_cmd
+                0x0000000020304640                spifc_wait_cmd_end
+                0x000000002030466c                spifc_read_fifo
+                0x00000000203046a8                spifc_start
+                0x00000000203046b8                cmd_seek
+                0x00000000203046d8                nor_read_reg
+                0x0000000020304738                nor_read_id
+                0x00000000203047a0                spi_nor_read
+                0x00000000203047fc                nor_read
+                0x0000000020304850                spi_nor_read_security_register
+                0x00000000203048ac                nor_read_security_register
+                0x0000000020304900                nor_init
+                0x0000000020304950                board_flash_init
+ .text          0x000000002030498c       0xa4 drivers/libdrivers.a(drv_hash.o)
+                0x000000002030498c                Hash_Calculate
+ .text          0x0000000020304a30      0x174 drivers/libdrivers.a(drv_rsa.o)
+                0x0000000020304a4a                Rsa_Calculate
+ .text          0x0000000020304ba4       0x28 drivers/libdrivers.a(flash.o)
+                0x0000000020304ba4                get_boot_mode
+ .text          0x0000000020304bcc      0x1bc drivers/libdrivers.a(efuse.o)
+                0x0000000020304bcc                efuse_init
+                0x0000000020304bf0                get_ddr_flag
+                0x0000000020304d10                get_secure_verify_status
+                0x0000000020304d54                get_otp_secure_verify_status
+ .text          0x0000000020304d88       0x54 cpu/m0/libm0.a(cpu.o)
+                0x0000000020304d88                timer_init
+                0x0000000020304da0                usdelay
 
-.glue_7         0x0000000020304b3c        0x0
+.glue_7         0x0000000020304ddc        0x0
  .glue_7        0x0000000000000000        0x0 linker stubs
 
-.glue_7t        0x0000000020304b3c        0x0
+.glue_7t        0x0000000020304ddc        0x0
  .glue_7t       0x0000000000000000        0x0 linker stubs
 
-.vfp11_veneer   0x0000000020304b3c        0x0
+.vfp11_veneer   0x0000000020304ddc        0x0
  .vfp11_veneer  0x0000000000000000        0x0 linker stubs
 
-.v4_bx          0x0000000020304b3c        0x0
+.v4_bx          0x0000000020304ddc        0x0
  .v4_bx         0x0000000000000000        0x0 linker stubs
 
-.iplt           0x0000000020304b3c        0x0
+.iplt           0x0000000020304ddc        0x0
  .iplt          0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020304b3c                . = ALIGN (0x4)
+                0x0000000020304ddc                . = ALIGN (0x4)
 
-.rodata         0x0000000020304b3c      0x3f0
+.rodata         0x0000000020304ddc      0x3f0
  *(.rodata)
- .rodata        0x0000000020304b3c      0x270 drivers/libdrivers.a(spifc_loader2.o)
- .rodata        0x0000000020304dac       0x13 drivers/libdrivers.a(sha256.o)
-                0x0000000020304dac                sha256_der_prefix
- *fill*         0x0000000020304dbf        0x1 
- .rodata        0x0000000020304dc0      0x16c drivers/libdrivers.a(nor.o)
+ .rodata        0x0000000020304ddc      0x270 drivers/libdrivers.a(spifc_loader2.o)
+ .rodata        0x000000002030504c       0x13 drivers/libdrivers.a(sha256.o)
+                0x000000002030504c                sha256_der_prefix
+ *fill*         0x000000002030505f        0x1 
+ .rodata        0x0000000020305060      0x16c drivers/libdrivers.a(nor.o)
 
-.rodata.str1.1  0x0000000020304f2c      0x45b
+.rodata.str1.1  0x00000000203051cc      0x48d
  .rodata.str1.1
-                0x0000000020304f2c      0x158 lib/libarm.a(board.o)
-                                        0x171 (松开之前的大小)
+                0x00000000203051cc      0x18a lib/libarm.a(board.o)
+                                        0x1a3 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305084       0xef drivers/libdrivers.a(image.o)
+                0x0000000020305356       0xef drivers/libdrivers.a(image.o)
                                         0x115 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305173       0x5b drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305445       0x5b drivers/libdrivers.a(secure_verify.o)
                                          0x5d (松开之前的大小)
  .rodata.str1.1
-                0x00000000203051ce       0x3d drivers/libdrivers.a(spifc_loader2.o)
+                0x00000000203054a0       0x3d drivers/libdrivers.a(spifc_loader2.o)
                                          0x4a (松开之前的大小)
  .rodata.str1.1
-                0x000000002030520b        0x9 drivers/libdrivers.a(bbt.o)
+                0x00000000203054dd        0x9 drivers/libdrivers.a(bbt.o)
  .rodata.str1.1
-                0x0000000020305214      0x15c drivers/libdrivers.a(nor.o)
+                0x00000000203054e6      0x15c drivers/libdrivers.a(nor.o)
  .rodata.str1.1
-                0x0000000020305370       0x17 drivers/libdrivers.a(efuse.o)
+                0x0000000020305642       0x17 drivers/libdrivers.a(efuse.o)
 
-.rel.dyn        0x0000000020305388        0x0
+.rel.dyn        0x000000002030565c        0x0
  .rel.iplt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305388                . = ALIGN (0x4)
+                0x000000002030565c                . = ALIGN (0x4)
 
-.data           0x0000000020305388       0xd0
+.data           0x000000002030565c       0xd0
  *(.data)
- .data          0x0000000020305388        0x0 cpu/m0/start.o
- .data          0x0000000020305388        0x0 lib/libarm.a(board.o)
- .data          0x0000000020305388        0x0 lib/libarm.a(string.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(uart.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(image.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(secure_verify.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(spifc_loader2.o)
- .data          0x0000000020305388       0x40 drivers/libdrivers.a(bbt.o)
- .data          0x00000000203053c8       0x40 drivers/libdrivers.a(sha256.o)
- .data          0x0000000020305408       0x50 drivers/libdrivers.a(nor.o)
-                0x0000000020305408                nor_cmd_table
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(ddr.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(drv_hash.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(drv_rsa.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(flash.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(efuse.o)
- .data          0x0000000020305458        0x0 cpu/m0/libm0.a(cpu.o)
+ .data          0x000000002030565c        0x0 cpu/m0/start.o
+ .data          0x000000002030565c        0x0 lib/libarm.a(board.o)
+ .data          0x000000002030565c        0x0 lib/libarm.a(string.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(ddr.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(uart.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(image.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(secure_verify.o)
+ .data          0x000000002030565c        0x0 drivers/libdrivers.a(spifc_loader2.o)
+ .data          0x000000002030565c       0x40 drivers/libdrivers.a(bbt.o)
+ .data          0x000000002030569c       0x40 drivers/libdrivers.a(sha256.o)
+ .data          0x00000000203056dc       0x50 drivers/libdrivers.a(nor.o)
+                0x00000000203056dc                nor_cmd_table
+ .data          0x000000002030572c        0x0 drivers/libdrivers.a(drv_hash.o)
+ .data          0x000000002030572c        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .data          0x000000002030572c        0x0 drivers/libdrivers.a(flash.o)
+ .data          0x000000002030572c        0x0 drivers/libdrivers.a(efuse.o)
+ .data          0x000000002030572c        0x0 cpu/m0/libm0.a(cpu.o)
 
-.igot.plt       0x0000000020305458        0x0
+.igot.plt       0x000000002030572c        0x0
  .igot.plt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305458                . = ALIGN (0x4)
+                0x000000002030572c                . = ALIGN (0x4)
 
 .got
  *(.got)
-                0x0000000020305458                . = ALIGN (0x4)
-                0x0000000020305458                __bss_start = .
+                0x000000002030572c                . = ALIGN (0x4)
+                0x000000002030572c                __bss_start = .
 
-.bss            0x0000000020305458      0x1e8
+.bss            0x000000002030572c      0x1e8
  *(.bss)
- .bss           0x0000000020305458        0x0 cpu/m0/start.o
- .bss           0x0000000020305458        0x4 lib/libarm.a(board.o)
-                0x0000000020305458                zloader_entry_point
- .bss           0x000000002030545c        0x0 lib/libarm.a(string.o)
- .bss           0x000000002030545c        0x0 drivers/libdrivers.a(uart.o)
- .bss           0x000000002030545c        0x0 drivers/libdrivers.a(image.o)
- .bss           0x000000002030545c      0x104 drivers/libdrivers.a(secure_verify.o)
-                0x000000002030545c                result
- .bss           0x0000000020305560        0x4 drivers/libdrivers.a(spifc_loader2.o)
- .bss           0x0000000020305564       0x80 drivers/libdrivers.a(bbt.o)
- .bss           0x00000000203055e4        0x0 drivers/libdrivers.a(sha256.o)
- .bss           0x00000000203055e4       0x28 drivers/libdrivers.a(nor.o)
-                0x00000000203055e4                spi_nor_flash
-                0x00000000203055e8                otp_data
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(ddr.o)
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(drv_hash.o)
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(drv_rsa.o)
- .bss           0x000000002030560c       0x24 drivers/libdrivers.a(flash.o)
-                0x000000002030560c                flash
- .bss           0x0000000020305630        0x0 drivers/libdrivers.a(efuse.o)
- .bss           0x0000000020305630       0x10 cpu/m0/libm0.a(cpu.o)
-                0x0000000020305630                g_tick
-                0x0000000020305640                __bss_end = .
-                0x0000000020305640                . = ALIGN (0x4)
+ .bss           0x000000002030572c        0x0 cpu/m0/start.o
+ .bss           0x000000002030572c        0x4 lib/libarm.a(board.o)
+                0x000000002030572c                zloader_entry_point
+ .bss           0x0000000020305730        0x0 lib/libarm.a(string.o)
+ .bss           0x0000000020305730        0x0 drivers/libdrivers.a(ddr.o)
+ .bss           0x0000000020305730        0x0 drivers/libdrivers.a(uart.o)
+ .bss           0x0000000020305730        0x0 drivers/libdrivers.a(image.o)
+ .bss           0x0000000020305730      0x104 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305730                result
+ .bss           0x0000000020305834        0x4 drivers/libdrivers.a(spifc_loader2.o)
+ .bss           0x0000000020305838       0x80 drivers/libdrivers.a(bbt.o)
+ .bss           0x00000000203058b8        0x0 drivers/libdrivers.a(sha256.o)
+ .bss           0x00000000203058b8       0x28 drivers/libdrivers.a(nor.o)
+                0x00000000203058b8                spi_nor_flash
+                0x00000000203058bc                otp_data
+ .bss           0x00000000203058e0        0x0 drivers/libdrivers.a(drv_hash.o)
+ .bss           0x00000000203058e0        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .bss           0x00000000203058e0       0x24 drivers/libdrivers.a(flash.o)
+                0x00000000203058e0                flash
+ .bss           0x0000000020305904        0x0 drivers/libdrivers.a(efuse.o)
+ .bss           0x0000000020305904       0x10 cpu/m0/libm0.a(cpu.o)
+                0x0000000020305904                g_tick
+                0x0000000020305914                __bss_end = .
+                0x0000000020305914                . = ALIGN (0x4)
 
-.para           0x0000000082000000        0x0 加载地址 0x0000000020305640
+.para           0x0000000082000000        0x0 加载地址 0x0000000020305914
                 0x0000000082000000                __para_start = .
  *(.para)
                 0x0000000082000000                __para_end = .
@@ -270,21 +273,21 @@
  .ARM.attributes
                 0x0000000000000020       0x10 lib/libarm.a(string.o)
  .ARM.attributes
-                0x0000000000000030       0x10 drivers/libdrivers.a(uart.o)
+                0x0000000000000030       0x10 drivers/libdrivers.a(ddr.o)
  .ARM.attributes
-                0x0000000000000040       0x10 drivers/libdrivers.a(image.o)
+                0x0000000000000040       0x10 drivers/libdrivers.a(uart.o)
  .ARM.attributes
-                0x0000000000000050       0x10 drivers/libdrivers.a(secure_verify.o)
+                0x0000000000000050       0x10 drivers/libdrivers.a(image.o)
  .ARM.attributes
-                0x0000000000000060       0x10 drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000000000060       0x10 drivers/libdrivers.a(secure_verify.o)
  .ARM.attributes
-                0x0000000000000070       0x10 drivers/libdrivers.a(bbt.o)
+                0x0000000000000070       0x10 drivers/libdrivers.a(spifc_loader2.o)
  .ARM.attributes
-                0x0000000000000080       0x10 drivers/libdrivers.a(sha256.o)
+                0x0000000000000080       0x10 drivers/libdrivers.a(bbt.o)
  .ARM.attributes
-                0x0000000000000090       0x10 drivers/libdrivers.a(nor.o)
+                0x0000000000000090       0x10 drivers/libdrivers.a(sha256.o)
  .ARM.attributes
-                0x00000000000000a0       0x10 drivers/libdrivers.a(ddr.o)
+                0x00000000000000a0       0x10 drivers/libdrivers.a(nor.o)
  .ARM.attributes
                 0x00000000000000b0       0x10 drivers/libdrivers.a(drv_hash.o)
  .ARM.attributes
@@ -300,6 +303,7 @@
  .comment       0x0000000000000000       0x29 lib/libarm.a(board.o)
                                          0x2a (松开之前的大小)
  .comment       0x0000000000000000       0x2a lib/libarm.a(string.o)
+ .comment       0x0000000000000000       0x2a drivers/libdrivers.a(ddr.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(uart.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(image.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(secure_verify.o)
@@ -307,7 +311,6 @@
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(bbt.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(sha256.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(nor.o)
- .comment       0x0000000000000000       0x2a drivers/libdrivers.a(ddr.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(drv_hash.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(drv_rsa.o)
  .comment       0x0000000000000000       0x2a drivers/libdrivers.a(flash.o)
@@ -321,6 +324,8 @@
  .note.GNU-stack
                 0x0000000000000000        0x0 lib/libarm.a(string.o)
  .note.GNU-stack
+                0x0000000000000000        0x0 drivers/libdrivers.a(ddr.o)
+ .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(uart.o)
  .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(image.o)
@@ -335,8 +340,6 @@
  .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(nor.o)
  .note.GNU-stack
-                0x0000000000000000        0x0 drivers/libdrivers.a(ddr.o)
- .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(drv_hash.o)
  .note.GNU-stack
                 0x0000000000000000        0x0 drivers/libdrivers.a(drv_rsa.o)
@@ -353,56 +356,56 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x62d4
- .debug_info    0x0000000000000000      0x765 lib/libarm.a(board.o)
- .debug_info    0x0000000000000765      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000990      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000c30      0xd3c drivers/libdrivers.a(image.o)
- .debug_info    0x000000000000196c      0xb01 drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x000000000000246d     0x1661 drivers/libdrivers.a(spifc_loader2.o)
- .debug_info    0x0000000000003ace      0x70f drivers/libdrivers.a(bbt.o)
- .debug_info    0x00000000000041dd      0x586 drivers/libdrivers.a(sha256.o)
- .debug_info    0x0000000000004763      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x00000000000054c2      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x00000000000057eb      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x00000000000059d3      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x0000000000005d87      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x0000000000005f96      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000006159      0x17b cpu/m0/libm0.a(cpu.o)
+.debug_info     0x0000000000000000     0x65ab
+ .debug_info    0x0000000000000000      0x9a2 lib/libarm.a(board.o)
+ .debug_info    0x00000000000009a2      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000bcd      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000ef6      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000001196      0xdd6 drivers/libdrivers.a(image.o)
+ .debug_info    0x0000000000001f6c      0xb01 drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000002a6d     0x1661 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_info    0x00000000000040ce      0x70f drivers/libdrivers.a(bbt.o)
+ .debug_info    0x00000000000047dd      0x586 drivers/libdrivers.a(sha256.o)
+ .debug_info    0x0000000000004d63      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000005ac2      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000005caa      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x000000000000605e      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x000000000000626d      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x0000000000006430      0x17b cpu/m0/libm0.a(cpu.o)
 
-.debug_abbrev   0x0000000000000000     0x1c50
- .debug_abbrev  0x0000000000000000      0x2c9 lib/libarm.a(board.o)
- .debug_abbrev  0x00000000000002c9       0xb7 lib/libarm.a(string.o)
- .debug_abbrev  0x0000000000000380      0x19e drivers/libdrivers.a(uart.o)
- .debug_abbrev  0x000000000000051e      0x298 drivers/libdrivers.a(image.o)
- .debug_abbrev  0x00000000000007b6      0x274 drivers/libdrivers.a(secure_verify.o)
- .debug_abbrev  0x0000000000000a2a      0x48e drivers/libdrivers.a(spifc_loader2.o)
- .debug_abbrev  0x0000000000000eb8      0x281 drivers/libdrivers.a(bbt.o)
- .debug_abbrev  0x0000000000001139      0x20e drivers/libdrivers.a(sha256.o)
- .debug_abbrev  0x0000000000001347      0x280 drivers/libdrivers.a(nor.o)
- .debug_abbrev  0x00000000000015c7      0x12f drivers/libdrivers.a(ddr.o)
- .debug_abbrev  0x00000000000016f6       0xde drivers/libdrivers.a(drv_hash.o)
- .debug_abbrev  0x00000000000017d4      0x1e2 drivers/libdrivers.a(drv_rsa.o)
- .debug_abbrev  0x00000000000019b6       0xb5 drivers/libdrivers.a(flash.o)
- .debug_abbrev  0x0000000000001a6b      0x11d drivers/libdrivers.a(efuse.o)
- .debug_abbrev  0x0000000000001b88       0xc8 cpu/m0/libm0.a(cpu.o)
+.debug_abbrev   0x0000000000000000     0x1c94
+ .debug_abbrev  0x0000000000000000      0x304 lib/libarm.a(board.o)
+ .debug_abbrev  0x0000000000000304       0xb7 lib/libarm.a(string.o)
+ .debug_abbrev  0x00000000000003bb      0x12f drivers/libdrivers.a(ddr.o)
+ .debug_abbrev  0x00000000000004ea      0x19e drivers/libdrivers.a(uart.o)
+ .debug_abbrev  0x0000000000000688      0x2a1 drivers/libdrivers.a(image.o)
+ .debug_abbrev  0x0000000000000929      0x274 drivers/libdrivers.a(secure_verify.o)
+ .debug_abbrev  0x0000000000000b9d      0x48e drivers/libdrivers.a(spifc_loader2.o)
+ .debug_abbrev  0x000000000000102b      0x281 drivers/libdrivers.a(bbt.o)
+ .debug_abbrev  0x00000000000012ac      0x20e drivers/libdrivers.a(sha256.o)
+ .debug_abbrev  0x00000000000014ba      0x280 drivers/libdrivers.a(nor.o)
+ .debug_abbrev  0x000000000000173a       0xde drivers/libdrivers.a(drv_hash.o)
+ .debug_abbrev  0x0000000000001818      0x1e2 drivers/libdrivers.a(drv_rsa.o)
+ .debug_abbrev  0x00000000000019fa       0xb5 drivers/libdrivers.a(flash.o)
+ .debug_abbrev  0x0000000000001aaf      0x11d drivers/libdrivers.a(efuse.o)
+ .debug_abbrev  0x0000000000001bcc       0xc8 cpu/m0/libm0.a(cpu.o)
 
-.debug_loc      0x0000000000000000     0x956d
- .debug_loc     0x0000000000000000      0x17b lib/libarm.a(board.o)
- .debug_loc     0x000000000000017b      0x29d lib/libarm.a(string.o)
- .debug_loc     0x0000000000000418      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x0000000000000640      0x6a2 drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000000ce2      0x790 drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x0000000000001472      0xef4 drivers/libdrivers.a(spifc_loader2.o)
- .debug_loc     0x0000000000002366      0x282 drivers/libdrivers.a(bbt.o)
- .debug_loc     0x00000000000025e8     0x5f3f drivers/libdrivers.a(sha256.o)
- .debug_loc     0x0000000000008527      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x0000000000008d31      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x0000000000009009      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x00000000000091c1      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x00000000000093f9       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x0000000000009418       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x00000000000094c3       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x9737
+ .debug_loc     0x0000000000000000      0x345 lib/libarm.a(board.o)
+ .debug_loc     0x0000000000000345      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x00000000000005e2      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x00000000000008ba      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x0000000000000ae2      0x6a2 drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000001184      0x790 drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x0000000000001914      0xef4 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_loc     0x0000000000002808      0x282 drivers/libdrivers.a(bbt.o)
+ .debug_loc     0x0000000000002a8a     0x5f3f drivers/libdrivers.a(sha256.o)
+ .debug_loc     0x00000000000089c9      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x00000000000091d3      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x000000000000938b      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x00000000000095c3       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x00000000000095e2       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x000000000000968d       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1e0
  .debug_aranges
@@ -410,21 +413,21 @@
  .debug_aranges
                 0x0000000000000020       0x20 lib/libarm.a(string.o)
  .debug_aranges
-                0x0000000000000040       0x20 drivers/libdrivers.a(uart.o)
+                0x0000000000000040       0x20 drivers/libdrivers.a(ddr.o)
  .debug_aranges
-                0x0000000000000060       0x20 drivers/libdrivers.a(image.o)
+                0x0000000000000060       0x20 drivers/libdrivers.a(uart.o)
  .debug_aranges
-                0x0000000000000080       0x20 drivers/libdrivers.a(secure_verify.o)
+                0x0000000000000080       0x20 drivers/libdrivers.a(image.o)
  .debug_aranges
-                0x00000000000000a0       0x20 drivers/libdrivers.a(spifc_loader2.o)
+                0x00000000000000a0       0x20 drivers/libdrivers.a(secure_verify.o)
  .debug_aranges
-                0x00000000000000c0       0x20 drivers/libdrivers.a(bbt.o)
+                0x00000000000000c0       0x20 drivers/libdrivers.a(spifc_loader2.o)
  .debug_aranges
-                0x00000000000000e0       0x20 drivers/libdrivers.a(sha256.o)
+                0x00000000000000e0       0x20 drivers/libdrivers.a(bbt.o)
  .debug_aranges
-                0x0000000000000100       0x20 drivers/libdrivers.a(nor.o)
+                0x0000000000000100       0x20 drivers/libdrivers.a(sha256.o)
  .debug_aranges
-                0x0000000000000120       0x20 drivers/libdrivers.a(ddr.o)
+                0x0000000000000120       0x20 drivers/libdrivers.a(nor.o)
  .debug_aranges
                 0x0000000000000140       0x20 drivers/libdrivers.a(drv_hash.o)
  .debug_aranges
@@ -438,76 +441,76 @@
 
 .debug_ranges   0x0000000000000000      0x238
  .debug_ranges  0x0000000000000000       0x18 lib/libarm.a(board.o)
- .debug_ranges  0x0000000000000018       0x18 drivers/libdrivers.a(uart.o)
- .debug_ranges  0x0000000000000030      0x140 drivers/libdrivers.a(spifc_loader2.o)
- .debug_ranges  0x0000000000000170       0x30 drivers/libdrivers.a(bbt.o)
- .debug_ranges  0x00000000000001a0       0x20 drivers/libdrivers.a(nor.o)
- .debug_ranges  0x00000000000001c0       0x18 drivers/libdrivers.a(ddr.o)
+ .debug_ranges  0x0000000000000018       0x18 drivers/libdrivers.a(ddr.o)
+ .debug_ranges  0x0000000000000030       0x18 drivers/libdrivers.a(uart.o)
+ .debug_ranges  0x0000000000000048      0x140 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_ranges  0x0000000000000188       0x30 drivers/libdrivers.a(bbt.o)
+ .debug_ranges  0x00000000000001b8       0x20 drivers/libdrivers.a(nor.o)
  .debug_ranges  0x00000000000001d8       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000200       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x1f9e
- .debug_line    0x0000000000000000      0x303 lib/libarm.a(board.o)
- .debug_line    0x0000000000000303      0x152 lib/libarm.a(string.o)
- .debug_line    0x0000000000000455      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x0000000000000567      0x3b8 drivers/libdrivers.a(image.o)
- .debug_line    0x000000000000091f      0x38e drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000cad      0x442 drivers/libdrivers.a(spifc_loader2.o)
- .debug_line    0x00000000000010ef      0x251 drivers/libdrivers.a(bbt.o)
- .debug_line    0x0000000000001340      0x2bb drivers/libdrivers.a(sha256.o)
- .debug_line    0x00000000000015fb      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x000000000000189d      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x0000000000001b36       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001bbe      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001cd5      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001ddf      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000001ef7       0xa7 cpu/m0/libm0.a(cpu.o)
+.debug_line     0x0000000000000000     0x203f
+ .debug_line    0x0000000000000000      0x3a4 lib/libarm.a(board.o)
+ .debug_line    0x00000000000003a4      0x152 lib/libarm.a(string.o)
+ .debug_line    0x00000000000004f6      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x000000000000078f      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000008a1      0x3b8 drivers/libdrivers.a(image.o)
+ .debug_line    0x0000000000000c59      0x38e drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000fe7      0x442 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_line    0x0000000000001429      0x251 drivers/libdrivers.a(bbt.o)
+ .debug_line    0x000000000000167a      0x2bb drivers/libdrivers.a(sha256.o)
+ .debug_line    0x0000000000001935      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001bd7       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x0000000000001c5f      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001d76      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x0000000000001e80      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000001f98       0xa7 cpu/m0/libm0.a(cpu.o)
 
-.debug_str      0x0000000000000000     0x1565
- .debug_str     0x0000000000000000      0x4a7 lib/libarm.a(board.o)
-                                        0x518 (松开之前的大小)
- .debug_str     0x00000000000004a7       0x3f lib/libarm.a(string.o)
+.debug_str      0x0000000000000000     0x160a
+ .debug_str     0x0000000000000000      0x55d lib/libarm.a(board.o)
+                                        0x5d3 (松开之前的大小)
+ .debug_str     0x000000000000055d       0x3f lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x00000000000004e6       0xe2 drivers/libdrivers.a(uart.o)
-                                        0x253 (松开之前的大小)
- .debug_str     0x00000000000005c8      0x35b drivers/libdrivers.a(image.o)
-                                        0x808 (松开之前的大小)
- .debug_str     0x0000000000000923      0x2f9 drivers/libdrivers.a(secure_verify.o)
-                                        0x61f (松开之前的大小)
- .debug_str     0x0000000000000c1c      0x3cc drivers/libdrivers.a(spifc_loader2.o)
-                                        0x6c1 (松开之前的大小)
- .debug_str     0x0000000000000fe8      0x103 drivers/libdrivers.a(bbt.o)
-                                        0x3fe (松开之前的大小)
- .debug_str     0x00000000000010eb       0xc3 drivers/libdrivers.a(sha256.o)
-                                        0x2b7 (松开之前的大小)
- .debug_str     0x00000000000011ae      0x1ad drivers/libdrivers.a(nor.o)
-                                        0x5f3 (松开之前的大小)
- .debug_str     0x000000000000135b       0x54 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x000000000000059c       0xa2 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x00000000000013af       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x000000000000063e       0x94 drivers/libdrivers.a(uart.o)
+                                        0x253 (松开之前的大小)
+ .debug_str     0x00000000000006d2      0x35b drivers/libdrivers.a(image.o)
+                                        0x854 (松开之前的大小)
+ .debug_str     0x0000000000000a2d      0x2f9 drivers/libdrivers.a(secure_verify.o)
+                                        0x61f (松开之前的大小)
+ .debug_str     0x0000000000000d26      0x3bb drivers/libdrivers.a(spifc_loader2.o)
+                                        0x6c1 (松开之前的大小)
+ .debug_str     0x00000000000010e1      0x103 drivers/libdrivers.a(bbt.o)
+                                        0x3fe (松开之前的大小)
+ .debug_str     0x00000000000011e4       0xc3 drivers/libdrivers.a(sha256.o)
+                                        0x2b7 (松开之前的大小)
+ .debug_str     0x00000000000012a7      0x1ad drivers/libdrivers.a(nor.o)
+                                        0x5f3 (松开之前的大小)
+ .debug_str     0x0000000000001454       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000001436       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x00000000000014db       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x00000000000014af       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000001554       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x00000000000014c1       0x20 drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000001566       0x20 drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x00000000000014e1       0x84 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000001586       0x84 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
 
-.debug_frame    0x0000000000000000      0xa90
- .debug_frame   0x0000000000000000       0xb0 lib/libarm.a(board.o)
- .debug_frame   0x00000000000000b0       0x68 lib/libarm.a(string.o)
- .debug_frame   0x0000000000000118       0xc0 drivers/libdrivers.a(uart.o)
- .debug_frame   0x00000000000001d8       0xec drivers/libdrivers.a(image.o)
- .debug_frame   0x00000000000002c4       0xb0 drivers/libdrivers.a(secure_verify.o)
- .debug_frame   0x0000000000000374      0x23c drivers/libdrivers.a(spifc_loader2.o)
- .debug_frame   0x00000000000005b0       0xa0 drivers/libdrivers.a(bbt.o)
- .debug_frame   0x0000000000000650       0xbc drivers/libdrivers.a(sha256.o)
- .debug_frame   0x000000000000070c      0x1b0 drivers/libdrivers.a(nor.o)
- .debug_frame   0x00000000000008bc       0xac drivers/libdrivers.a(ddr.o)
- .debug_frame   0x0000000000000968       0x2c drivers/libdrivers.a(drv_hash.o)
- .debug_frame   0x0000000000000994       0x4c drivers/libdrivers.a(drv_rsa.o)
- .debug_frame   0x00000000000009e0       0x20 drivers/libdrivers.a(flash.o)
- .debug_frame   0x0000000000000a00       0x60 drivers/libdrivers.a(efuse.o)
- .debug_frame   0x0000000000000a60       0x30 cpu/m0/libm0.a(cpu.o)
+.debug_frame    0x0000000000000000      0xaf0
+ .debug_frame   0x0000000000000000      0x110 lib/libarm.a(board.o)
+ .debug_frame   0x0000000000000110       0x68 lib/libarm.a(string.o)
+ .debug_frame   0x0000000000000178       0xac drivers/libdrivers.a(ddr.o)
+ .debug_frame   0x0000000000000224       0xc0 drivers/libdrivers.a(uart.o)
+ .debug_frame   0x00000000000002e4       0xec drivers/libdrivers.a(image.o)
+ .debug_frame   0x00000000000003d0       0xb0 drivers/libdrivers.a(secure_verify.o)
+ .debug_frame   0x0000000000000480      0x23c drivers/libdrivers.a(spifc_loader2.o)
+ .debug_frame   0x00000000000006bc       0xa0 drivers/libdrivers.a(bbt.o)
+ .debug_frame   0x000000000000075c       0xbc drivers/libdrivers.a(sha256.o)
+ .debug_frame   0x0000000000000818      0x1b0 drivers/libdrivers.a(nor.o)
+ .debug_frame   0x00000000000009c8       0x2c drivers/libdrivers.a(drv_hash.o)
+ .debug_frame   0x00000000000009f4       0x4c drivers/libdrivers.a(drv_rsa.o)
+ .debug_frame   0x0000000000000a40       0x20 drivers/libdrivers.a(flash.o)
+ .debug_frame   0x0000000000000a60       0x60 drivers/libdrivers.a(efuse.o)
+ .debug_frame   0x0000000000000ac0       0x30 cpu/m0/libm0.a(cpu.o)
diff --git a/boot/prj/zx297520v3/bootrom2/dl_off/loader2.bin b/boot/prj/zx297520v3/bootrom2/dl_off/loader2.bin
index 4a7d48e..16a20a9 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_off/loader2.bin
+++ b/boot/prj/zx297520v3/bootrom2/dl_off/loader2.bin
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom2/dl_off/z-load b/boot/prj/zx297520v3/bootrom2/dl_off/z-load
index a1aadc0..0134c20 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_off/z-load
+++ b/boot/prj/zx297520v3/bootrom2/dl_off/z-load
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom2/dl_off/z-load.map b/boot/prj/zx297520v3/bootrom2/dl_off/z-load.map
index cc3e364..72c0ac3 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_off/z-load.map
+++ b/boot/prj/zx297520v3/bootrom2/dl_off/z-load.map
@@ -300,49 +300,49 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x341f
- .debug_info    0x0000000000000000      0x658 lib/libarm.a(board.o)
- .debug_info    0x0000000000000658      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000883      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000bac      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000e4c      0x6d3 drivers/libdrivers.a(image.o)
- .debug_info    0x000000000000151f      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x00000000000016e2      0x62d drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000001d0f      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000002a6e      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000002c56      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x000000000000300a      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x0000000000003219      0x17b cpu/m0/libm0.a(cpu.o)
- .debug_info    0x0000000000003394       0x8b cpu/m0/libm0.a(clk.o)
+.debug_info     0x0000000000000000     0x34d5
+ .debug_info    0x0000000000000000      0x70e lib/libarm.a(board.o)
+ .debug_info    0x000000000000070e      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000939      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000c62      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000f02      0x6d3 drivers/libdrivers.a(image.o)
+ .debug_info    0x00000000000015d5      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x0000000000001798      0x62d drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000001dc5      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000002b24      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000002d0c      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000030c0      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000032cf      0x17b cpu/m0/libm0.a(cpu.o)
+ .debug_info    0x000000000000344a       0x8b cpu/m0/libm0.a(clk.o)
 
-.debug_abbrev   0x0000000000000000     0x1290
- .debug_abbrev  0x0000000000000000      0x286 lib/libarm.a(board.o)
- .debug_abbrev  0x0000000000000286       0xb7 lib/libarm.a(string.o)
- .debug_abbrev  0x000000000000033d      0x12f drivers/libdrivers.a(ddr.o)
- .debug_abbrev  0x000000000000046c      0x19e drivers/libdrivers.a(uart.o)
- .debug_abbrev  0x000000000000060a      0x212 drivers/libdrivers.a(image.o)
- .debug_abbrev  0x000000000000081c      0x11d drivers/libdrivers.a(efuse.o)
- .debug_abbrev  0x0000000000000939      0x258 drivers/libdrivers.a(secure_verify.o)
- .debug_abbrev  0x0000000000000b91      0x280 drivers/libdrivers.a(nor.o)
- .debug_abbrev  0x0000000000000e11       0xde drivers/libdrivers.a(drv_hash.o)
- .debug_abbrev  0x0000000000000eef      0x1e2 drivers/libdrivers.a(drv_rsa.o)
- .debug_abbrev  0x00000000000010d1       0xb5 drivers/libdrivers.a(flash.o)
- .debug_abbrev  0x0000000000001186       0xc8 cpu/m0/libm0.a(cpu.o)
- .debug_abbrev  0x000000000000124e       0x42 cpu/m0/libm0.a(clk.o)
+.debug_abbrev   0x0000000000000000     0x12c2
+ .debug_abbrev  0x0000000000000000      0x2b8 lib/libarm.a(board.o)
+ .debug_abbrev  0x00000000000002b8       0xb7 lib/libarm.a(string.o)
+ .debug_abbrev  0x000000000000036f      0x12f drivers/libdrivers.a(ddr.o)
+ .debug_abbrev  0x000000000000049e      0x19e drivers/libdrivers.a(uart.o)
+ .debug_abbrev  0x000000000000063c      0x212 drivers/libdrivers.a(image.o)
+ .debug_abbrev  0x000000000000084e      0x11d drivers/libdrivers.a(efuse.o)
+ .debug_abbrev  0x000000000000096b      0x258 drivers/libdrivers.a(secure_verify.o)
+ .debug_abbrev  0x0000000000000bc3      0x280 drivers/libdrivers.a(nor.o)
+ .debug_abbrev  0x0000000000000e43       0xde drivers/libdrivers.a(drv_hash.o)
+ .debug_abbrev  0x0000000000000f21      0x1e2 drivers/libdrivers.a(drv_rsa.o)
+ .debug_abbrev  0x0000000000001103       0xb5 drivers/libdrivers.a(flash.o)
+ .debug_abbrev  0x00000000000011b8       0xc8 cpu/m0/libm0.a(cpu.o)
+ .debug_abbrev  0x0000000000001280       0x42 cpu/m0/libm0.a(clk.o)
 
-.debug_loc      0x0000000000000000     0x1ca7
- .debug_loc     0x0000000000000000      0x107 lib/libarm.a(board.o)
- .debug_loc     0x0000000000000107      0x29d lib/libarm.a(string.o)
- .debug_loc     0x00000000000003a4      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x000000000000067c      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x00000000000008a4      0x2ab drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000000b4f       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x0000000000000bfa      0x3ea drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x0000000000000fe4      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x00000000000017ee      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x00000000000019a6      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x0000000000001bde       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x0000000000001bfd       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x1cbb
+ .debug_loc     0x0000000000000000      0x11b lib/libarm.a(board.o)
+ .debug_loc     0x000000000000011b      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x00000000000003b8      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x0000000000000690      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x00000000000008b8      0x2ab drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000000b63       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x0000000000000c0e      0x3ea drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x0000000000000ff8      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x0000000000001802      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x00000000000019ba      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x0000000000001bf2       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x0000000000001c11       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1a0
  .debug_aranges
@@ -380,47 +380,47 @@
  .debug_ranges  0x0000000000000068       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000090       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x1430
- .debug_line    0x0000000000000000      0x2f3 lib/libarm.a(board.o)
- .debug_line    0x00000000000002f3      0x152 lib/libarm.a(string.o)
- .debug_line    0x0000000000000445      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x00000000000006de      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x00000000000007f0      0x228 drivers/libdrivers.a(image.o)
- .debug_line    0x0000000000000a18      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000000b30      0x2ad drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000ddd      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x000000000000107f       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001107      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x000000000000121e      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001328       0xa7 cpu/m0/libm0.a(cpu.o)
- .debug_line    0x00000000000013cf       0x61 cpu/m0/libm0.a(clk.o)
+.debug_line     0x0000000000000000     0x1433
+ .debug_line    0x0000000000000000      0x2f6 lib/libarm.a(board.o)
+ .debug_line    0x00000000000002f6      0x152 lib/libarm.a(string.o)
+ .debug_line    0x0000000000000448      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x00000000000006e1      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000007f3      0x228 drivers/libdrivers.a(image.o)
+ .debug_line    0x0000000000000a1b      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000000b33      0x2ad drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000de0      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001082       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x000000000000110a      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001221      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x000000000000132b       0xa7 cpu/m0/libm0.a(cpu.o)
+ .debug_line    0x00000000000013d2       0x61 cpu/m0/libm0.a(clk.o)
 
-.debug_str      0x0000000000000000      0xe62
- .debug_str     0x0000000000000000      0x47c lib/libarm.a(board.o)
-                                        0x4f6 (松开之前的大小)
- .debug_str     0x000000000000047c       0x4c lib/libarm.a(string.o)
+.debug_str      0x0000000000000000      0xebb
+ .debug_str     0x0000000000000000      0x4d5 lib/libarm.a(board.o)
+                                        0x554 (松开之前的大小)
+ .debug_str     0x00000000000004d5       0x4c lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x00000000000004c8       0xa1 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x0000000000000521       0xa1 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x0000000000000569       0x8a drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005c2       0x8a drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x00000000000005f3      0x229 drivers/libdrivers.a(image.o)
+ .debug_str     0x000000000000064c      0x229 drivers/libdrivers.a(image.o)
                                         0x4a0 (松开之前的大小)
- .debug_str     0x000000000000081c       0x7b drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000000875       0x7b drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x0000000000000897      0x177 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000008f0      0x177 drivers/libdrivers.a(secure_verify.o)
                                         0x407 (松开之前的大小)
- .debug_str     0x0000000000000a0e      0x2c3 drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000000a67      0x2c3 drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000000cd1       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000000d2a       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000000d58       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x0000000000000db1       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000000dd1       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000000e2a       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000000de3       0x79 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000000e3c       0x79 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
- .debug_str     0x0000000000000e5c        0x6 cpu/m0/libm0.a(clk.o)
+ .debug_str     0x0000000000000eb5        0x6 cpu/m0/libm0.a(clk.o)
                                         0x1bd (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0x6a0
diff --git a/boot/prj/zx297520v3/bootrom2/dl_off/z-load2 b/boot/prj/zx297520v3/bootrom2/dl_off/z-load2
index 5abaa83..cbc092e 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_off/z-load2
+++ b/boot/prj/zx297520v3/bootrom2/dl_off/z-load2
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom2/dl_off/z-load2.map b/boot/prj/zx297520v3/bootrom2/dl_off/z-load2.map
index e422c41..69d87e4 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_off/z-load2.map
+++ b/boot/prj/zx297520v3/bootrom2/dl_off/z-load2.map
@@ -34,7 +34,7 @@
                 0x0000000000000000                . = 0x0
                 0x0000000000000000                . = ALIGN (0x4)
 
-.text           0x0000000020300000     0x4b3c
+.text           0x0000000020300000     0x4d44
  cpu/m0/start.o(.text)
  .text          0x0000000020300000      0x220 cpu/m0/start.o
                 0x00000000203001a4                _bss_start
@@ -44,209 +44,212 @@
                 0x00000000203001b8                _start
                 0x00000000203001fe                run_at
  *(.text)
- .text          0x0000000020300220      0x24c lib/libarm.a(board.o)
+ .text          0x0000000020300220      0x454 lib/libarm.a(board.o)
                 0x0000000020300220                print_info
                 0x0000000020300230                copy_to_iram1
                 0x0000000020300250                clear_iram
                 0x0000000020300268                write_loader_mode
                 0x0000000020300274                hang
                 0x0000000020300276                usb_apcore_poweroff
-                0x00000000203002d0                start_armboot
- .text          0x000000002030046c       0x80 lib/libarm.a(string.o)
-                0x000000002030046c                strlen
-                0x000000002030047c                memset
-                0x00000000203004be                memcmp
-                0x00000000203004da                memcpy
- .text          0x00000000203004ec      0x138 drivers/libdrivers.a(uart.o)
-                0x00000000203004ec                uart_init
-                0x000000002030056c                uart_putc
-                0x0000000020300594                uart_puts
-                0x00000000203005a8                uart_getc
-                0x00000000203005c4                uart_tstc
-                0x00000000203005d4                UART_Read
-                0x00000000203005f0                UART_Write
-                0x000000002030060c                UART_Check_Sync
- .text          0x0000000020300624      0x338 drivers/libdrivers.a(image.o)
-                0x0000000020300628                page_align
-                0x0000000020300640                find_partition_para
-                0x0000000020300670                read_image_part_offset
-                0x00000000203006c4                read_flags_image
-                0x00000000203007ac                read_uboot_image
-                0x000000002030088c                nand_read_m0
-                0x00000000203008f8                read_zloader_image
- .text          0x000000002030095c      0x2b0 drivers/libdrivers.a(secure_verify.o)
-                0x000000002030097a                BIG2SMALL
-                0x00000000203009aa                bin2hex
-                0x00000000203009f4                secure_verify_zloader
-                0x0000000020300ae8                SecureVerify
- .text          0x0000000020300c0c      0x648 drivers/libdrivers.a(spifc_loader2.o)
-                0x0000000020300d00                zDrvGpio_SetFunc
-                0x0000000020300d38                zDrvGpio_SetDirection
-                0x0000000020300d88                zDrvGpio_SetOutputValue
-                0x0000000020300dc4                spi_nand_cs
-                0x0000000020300e00                spifc_clear_fifo
-                0x0000000020300e14                spifc_clear_int
-                0x0000000020300f70                spifc_read_oob
-                0x0000000020300fb4                spifc_read_page_raw
-                0x0000000020300ff0                spifc_read_page
-                0x000000002030106c                spifc_read
-                0x00000000203010b0                read_data
-                0x0000000020301104                read_id
-                0x0000000020301188                spifc_init
-                0x000000002030120c                zloader_flash_init
- .text          0x0000000020301254      0x1c0 drivers/libdrivers.a(bbt.o)
-                0x00000000203012b4                nand_creat_ram_bbt
-                0x00000000203012f8                nand_search_bbt
-                0x0000000020301384                nand_creat_bbt
-                0x0000000020301400                nand_block_isbad
- .text          0x0000000020301414     0x2688 drivers/libdrivers.a(sha256.o)
-                0x0000000020303934                sha256_starts
-                0x000000002030397c                sha256_update
-                0x0000000020303988                sha256_finish
-                0x0000000020303a74                sha256_csum_wd
- .text          0x0000000020303a9c      0x424 drivers/libdrivers.a(nor.o)
-                0x0000000020303a9c                spifc_enable
-                0x0000000020303acc                spifc_disable
-                0x0000000020303af0                spifc_setup_cmd
-                0x0000000020303b74                spifc_wait_cmd_end
-                0x0000000020303ba0                spifc_read_fifo
-                0x0000000020303bdc                spifc_start
-                0x0000000020303bec                cmd_seek
-                0x0000000020303c0c                nor_read_reg
-                0x0000000020303c6c                nor_read_id
-                0x0000000020303cd4                spi_nor_read
-                0x0000000020303d30                nor_read
-                0x0000000020303d84                spi_nor_read_security_register
-                0x0000000020303de0                nor_read_security_register
-                0x0000000020303e34                nor_init
-                0x0000000020303e84                board_flash_init
- .text          0x0000000020303ec0      0x82c drivers/libdrivers.a(ddr.o)
-                0x0000000020303ec0                nsdelay
-                0x0000000020303eda                ddr_clk_init
-                0x0000000020303ef0                ddr_phy_init
-                0x0000000020303fec                ddr_ctrl_init
-                0x00000000203043a8                ddr_prio_init
-                0x00000000203044cc                ddr_init
- .text          0x00000000203046ec       0xa4 drivers/libdrivers.a(drv_hash.o)
-                0x00000000203046ec                Hash_Calculate
- .text          0x0000000020304790      0x174 drivers/libdrivers.a(drv_rsa.o)
-                0x00000000203047aa                Rsa_Calculate
- .text          0x0000000020304904       0x28 drivers/libdrivers.a(flash.o)
-                0x0000000020304904                get_boot_mode
- .text          0x000000002030492c      0x1bc drivers/libdrivers.a(efuse.o)
-                0x000000002030492c                efuse_init
-                0x0000000020304950                get_ddr_flag
-                0x0000000020304a70                get_secure_verify_status
-                0x0000000020304ab4                get_otp_secure_verify_status
- .text          0x0000000020304ae8       0x54 cpu/m0/libm0.a(cpu.o)
-                0x0000000020304ae8                timer_init
-                0x0000000020304b00                usdelay
+                0x00000000203002d0                i2c_init
+                0x0000000020300338                pmu_read
+                0x0000000020300404                pmu_write
+                0x00000000203004d0                start_armboot
+ .text          0x0000000020300674       0x80 lib/libarm.a(string.o)
+                0x0000000020300674                strlen
+                0x0000000020300684                memset
+                0x00000000203006c6                memcmp
+                0x00000000203006e2                memcpy
+ .text          0x00000000203006f4      0x138 drivers/libdrivers.a(uart.o)
+                0x00000000203006f4                uart_init
+                0x0000000020300774                uart_putc
+                0x000000002030079c                uart_puts
+                0x00000000203007b0                uart_getc
+                0x00000000203007cc                uart_tstc
+                0x00000000203007dc                UART_Read
+                0x00000000203007f8                UART_Write
+                0x0000000020300814                UART_Check_Sync
+ .text          0x000000002030082c      0x338 drivers/libdrivers.a(image.o)
+                0x0000000020300830                page_align
+                0x0000000020300848                find_partition_para
+                0x0000000020300878                read_image_part_offset
+                0x00000000203008cc                read_flags_image
+                0x00000000203009b4                read_uboot_image
+                0x0000000020300a94                nand_read_m0
+                0x0000000020300b00                read_zloader_image
+ .text          0x0000000020300b64      0x2b0 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020300b82                BIG2SMALL
+                0x0000000020300bb2                bin2hex
+                0x0000000020300bfc                secure_verify_zloader
+                0x0000000020300cf0                SecureVerify
+ .text          0x0000000020300e14      0x648 drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020300f08                zDrvGpio_SetFunc
+                0x0000000020300f40                zDrvGpio_SetDirection
+                0x0000000020300f90                zDrvGpio_SetOutputValue
+                0x0000000020300fcc                spi_nand_cs
+                0x0000000020301008                spifc_clear_fifo
+                0x000000002030101c                spifc_clear_int
+                0x0000000020301178                spifc_read_oob
+                0x00000000203011bc                spifc_read_page_raw
+                0x00000000203011f8                spifc_read_page
+                0x0000000020301274                spifc_read
+                0x00000000203012b8                read_data
+                0x000000002030130c                read_id
+                0x0000000020301390                spifc_init
+                0x0000000020301414                zloader_flash_init
+ .text          0x000000002030145c      0x1c0 drivers/libdrivers.a(bbt.o)
+                0x00000000203014bc                nand_creat_ram_bbt
+                0x0000000020301500                nand_search_bbt
+                0x000000002030158c                nand_creat_bbt
+                0x0000000020301608                nand_block_isbad
+ .text          0x000000002030161c     0x2688 drivers/libdrivers.a(sha256.o)
+                0x0000000020303b3c                sha256_starts
+                0x0000000020303b84                sha256_update
+                0x0000000020303b90                sha256_finish
+                0x0000000020303c7c                sha256_csum_wd
+ .text          0x0000000020303ca4      0x424 drivers/libdrivers.a(nor.o)
+                0x0000000020303ca4                spifc_enable
+                0x0000000020303cd4                spifc_disable
+                0x0000000020303cf8                spifc_setup_cmd
+                0x0000000020303d7c                spifc_wait_cmd_end
+                0x0000000020303da8                spifc_read_fifo
+                0x0000000020303de4                spifc_start
+                0x0000000020303df4                cmd_seek
+                0x0000000020303e14                nor_read_reg
+                0x0000000020303e74                nor_read_id
+                0x0000000020303edc                spi_nor_read
+                0x0000000020303f38                nor_read
+                0x0000000020303f8c                spi_nor_read_security_register
+                0x0000000020303fe8                nor_read_security_register
+                0x000000002030403c                nor_init
+                0x000000002030408c                board_flash_init
+ .text          0x00000000203040c8      0x82c drivers/libdrivers.a(ddr.o)
+                0x00000000203040c8                nsdelay
+                0x00000000203040e2                ddr_clk_init
+                0x00000000203040f8                ddr_phy_init
+                0x00000000203041f4                ddr_ctrl_init
+                0x00000000203045b0                ddr_prio_init
+                0x00000000203046d4                ddr_init
+ .text          0x00000000203048f4       0xa4 drivers/libdrivers.a(drv_hash.o)
+                0x00000000203048f4                Hash_Calculate
+ .text          0x0000000020304998      0x174 drivers/libdrivers.a(drv_rsa.o)
+                0x00000000203049b2                Rsa_Calculate
+ .text          0x0000000020304b0c       0x28 drivers/libdrivers.a(flash.o)
+                0x0000000020304b0c                get_boot_mode
+ .text          0x0000000020304b34      0x1bc drivers/libdrivers.a(efuse.o)
+                0x0000000020304b34                efuse_init
+                0x0000000020304b58                get_ddr_flag
+                0x0000000020304c78                get_secure_verify_status
+                0x0000000020304cbc                get_otp_secure_verify_status
+ .text          0x0000000020304cf0       0x54 cpu/m0/libm0.a(cpu.o)
+                0x0000000020304cf0                timer_init
+                0x0000000020304d08                usdelay
 
-.glue_7         0x0000000020304b3c        0x0
+.glue_7         0x0000000020304d44        0x0
  .glue_7        0x0000000000000000        0x0 linker stubs
 
-.glue_7t        0x0000000020304b3c        0x0
+.glue_7t        0x0000000020304d44        0x0
  .glue_7t       0x0000000000000000        0x0 linker stubs
 
-.vfp11_veneer   0x0000000020304b3c        0x0
+.vfp11_veneer   0x0000000020304d44        0x0
  .vfp11_veneer  0x0000000000000000        0x0 linker stubs
 
-.v4_bx          0x0000000020304b3c        0x0
+.v4_bx          0x0000000020304d44        0x0
  .v4_bx         0x0000000000000000        0x0 linker stubs
 
-.iplt           0x0000000020304b3c        0x0
+.iplt           0x0000000020304d44        0x0
  .iplt          0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020304b3c                . = ALIGN (0x4)
+                0x0000000020304d44                . = ALIGN (0x4)
 
-.rodata         0x0000000020304b3c      0x3f0
+.rodata         0x0000000020304d44      0x3f0
  *(.rodata)
- .rodata        0x0000000020304b3c      0x270 drivers/libdrivers.a(spifc_loader2.o)
- .rodata        0x0000000020304dac       0x13 drivers/libdrivers.a(sha256.o)
-                0x0000000020304dac                sha256_der_prefix
- *fill*         0x0000000020304dbf        0x1 
- .rodata        0x0000000020304dc0      0x16c drivers/libdrivers.a(nor.o)
+ .rodata        0x0000000020304d44      0x270 drivers/libdrivers.a(spifc_loader2.o)
+ .rodata        0x0000000020304fb4       0x13 drivers/libdrivers.a(sha256.o)
+                0x0000000020304fb4                sha256_der_prefix
+ *fill*         0x0000000020304fc7        0x1 
+ .rodata        0x0000000020304fc8      0x16c drivers/libdrivers.a(nor.o)
 
-.rodata.str1.1  0x0000000020304f2c      0x45b
+.rodata.str1.1  0x0000000020305134      0x48d
  .rodata.str1.1
-                0x0000000020304f2c      0x158 lib/libarm.a(board.o)
-                                        0x171 (松开之前的大小)
+                0x0000000020305134      0x18a lib/libarm.a(board.o)
+                                        0x1a3 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305084       0xef drivers/libdrivers.a(image.o)
+                0x00000000203052be       0xef drivers/libdrivers.a(image.o)
                                         0x115 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305173       0x5b drivers/libdrivers.a(secure_verify.o)
+                0x00000000203053ad       0x5b drivers/libdrivers.a(secure_verify.o)
                                          0x5d (松开之前的大小)
  .rodata.str1.1
-                0x00000000203051ce       0x3d drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020305408       0x3d drivers/libdrivers.a(spifc_loader2.o)
                                          0x4a (松开之前的大小)
  .rodata.str1.1
-                0x000000002030520b        0x9 drivers/libdrivers.a(bbt.o)
+                0x0000000020305445        0x9 drivers/libdrivers.a(bbt.o)
  .rodata.str1.1
-                0x0000000020305214      0x15c drivers/libdrivers.a(nor.o)
+                0x000000002030544e      0x15c drivers/libdrivers.a(nor.o)
  .rodata.str1.1
-                0x0000000020305370       0x17 drivers/libdrivers.a(efuse.o)
+                0x00000000203055aa       0x17 drivers/libdrivers.a(efuse.o)
 
-.rel.dyn        0x0000000020305388        0x0
+.rel.dyn        0x00000000203055c4        0x0
  .rel.iplt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305388                . = ALIGN (0x4)
+                0x00000000203055c4                . = ALIGN (0x4)
 
-.data           0x0000000020305388       0xd0
+.data           0x00000000203055c4       0xd0
  *(.data)
- .data          0x0000000020305388        0x0 cpu/m0/start.o
- .data          0x0000000020305388        0x0 lib/libarm.a(board.o)
- .data          0x0000000020305388        0x0 lib/libarm.a(string.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(uart.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(image.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(secure_verify.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(spifc_loader2.o)
- .data          0x0000000020305388       0x40 drivers/libdrivers.a(bbt.o)
- .data          0x00000000203053c8       0x40 drivers/libdrivers.a(sha256.o)
- .data          0x0000000020305408       0x50 drivers/libdrivers.a(nor.o)
-                0x0000000020305408                nor_cmd_table
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(ddr.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(drv_hash.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(drv_rsa.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(flash.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(efuse.o)
- .data          0x0000000020305458        0x0 cpu/m0/libm0.a(cpu.o)
+ .data          0x00000000203055c4        0x0 cpu/m0/start.o
+ .data          0x00000000203055c4        0x0 lib/libarm.a(board.o)
+ .data          0x00000000203055c4        0x0 lib/libarm.a(string.o)
+ .data          0x00000000203055c4        0x0 drivers/libdrivers.a(uart.o)
+ .data          0x00000000203055c4        0x0 drivers/libdrivers.a(image.o)
+ .data          0x00000000203055c4        0x0 drivers/libdrivers.a(secure_verify.o)
+ .data          0x00000000203055c4        0x0 drivers/libdrivers.a(spifc_loader2.o)
+ .data          0x00000000203055c4       0x40 drivers/libdrivers.a(bbt.o)
+ .data          0x0000000020305604       0x40 drivers/libdrivers.a(sha256.o)
+ .data          0x0000000020305644       0x50 drivers/libdrivers.a(nor.o)
+                0x0000000020305644                nor_cmd_table
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(ddr.o)
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(drv_hash.o)
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(flash.o)
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(efuse.o)
+ .data          0x0000000020305694        0x0 cpu/m0/libm0.a(cpu.o)
 
-.igot.plt       0x0000000020305458        0x0
+.igot.plt       0x0000000020305694        0x0
  .igot.plt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305458                . = ALIGN (0x4)
+                0x0000000020305694                . = ALIGN (0x4)
 
 .got
  *(.got)
-                0x0000000020305458                . = ALIGN (0x4)
-                0x0000000020305458                __bss_start = .
+                0x0000000020305694                . = ALIGN (0x4)
+                0x0000000020305694                __bss_start = .
 
-.bss            0x0000000020305458      0x1e8
+.bss            0x0000000020305694      0x1e8
  *(.bss)
- .bss           0x0000000020305458        0x0 cpu/m0/start.o
- .bss           0x0000000020305458        0x4 lib/libarm.a(board.o)
-                0x0000000020305458                zloader_entry_point
- .bss           0x000000002030545c        0x0 lib/libarm.a(string.o)
- .bss           0x000000002030545c        0x0 drivers/libdrivers.a(uart.o)
- .bss           0x000000002030545c        0x0 drivers/libdrivers.a(image.o)
- .bss           0x000000002030545c      0x104 drivers/libdrivers.a(secure_verify.o)
-                0x000000002030545c                result
- .bss           0x0000000020305560        0x4 drivers/libdrivers.a(spifc_loader2.o)
- .bss           0x0000000020305564       0x80 drivers/libdrivers.a(bbt.o)
- .bss           0x00000000203055e4        0x0 drivers/libdrivers.a(sha256.o)
- .bss           0x00000000203055e4       0x28 drivers/libdrivers.a(nor.o)
-                0x00000000203055e4                spi_nor_flash
-                0x00000000203055e8                otp_data
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(ddr.o)
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(drv_hash.o)
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(drv_rsa.o)
- .bss           0x000000002030560c       0x24 drivers/libdrivers.a(flash.o)
-                0x000000002030560c                flash
- .bss           0x0000000020305630        0x0 drivers/libdrivers.a(efuse.o)
- .bss           0x0000000020305630       0x10 cpu/m0/libm0.a(cpu.o)
-                0x0000000020305630                g_tick
-                0x0000000020305640                __bss_end = .
-                0x0000000020305640                . = ALIGN (0x4)
+ .bss           0x0000000020305694        0x0 cpu/m0/start.o
+ .bss           0x0000000020305694        0x4 lib/libarm.a(board.o)
+                0x0000000020305694                zloader_entry_point
+ .bss           0x0000000020305698        0x0 lib/libarm.a(string.o)
+ .bss           0x0000000020305698        0x0 drivers/libdrivers.a(uart.o)
+ .bss           0x0000000020305698        0x0 drivers/libdrivers.a(image.o)
+ .bss           0x0000000020305698      0x104 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305698                result
+ .bss           0x000000002030579c        0x4 drivers/libdrivers.a(spifc_loader2.o)
+ .bss           0x00000000203057a0       0x80 drivers/libdrivers.a(bbt.o)
+ .bss           0x0000000020305820        0x0 drivers/libdrivers.a(sha256.o)
+ .bss           0x0000000020305820       0x28 drivers/libdrivers.a(nor.o)
+                0x0000000020305820                spi_nor_flash
+                0x0000000020305824                otp_data
+ .bss           0x0000000020305848        0x0 drivers/libdrivers.a(ddr.o)
+ .bss           0x0000000020305848        0x0 drivers/libdrivers.a(drv_hash.o)
+ .bss           0x0000000020305848        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .bss           0x0000000020305848       0x24 drivers/libdrivers.a(flash.o)
+                0x0000000020305848                flash
+ .bss           0x000000002030586c        0x0 drivers/libdrivers.a(efuse.o)
+ .bss           0x000000002030586c       0x10 cpu/m0/libm0.a(cpu.o)
+                0x000000002030586c                g_tick
+                0x000000002030587c                __bss_end = .
+                0x000000002030587c                . = ALIGN (0x4)
 
-.para           0x0000000082000000        0x0 加载地址 0x0000000020305640
+.para           0x0000000082000000        0x0 加载地址 0x000000002030587c
                 0x0000000082000000                __para_start = .
  *(.para)
                 0x0000000082000000                __para_end = .
@@ -353,56 +356,56 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x62d4
- .debug_info    0x0000000000000000      0x765 lib/libarm.a(board.o)
- .debug_info    0x0000000000000765      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000990      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000c30      0xd3c drivers/libdrivers.a(image.o)
- .debug_info    0x000000000000196c      0xb01 drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x000000000000246d     0x1661 drivers/libdrivers.a(spifc_loader2.o)
- .debug_info    0x0000000000003ace      0x70f drivers/libdrivers.a(bbt.o)
- .debug_info    0x00000000000041dd      0x586 drivers/libdrivers.a(sha256.o)
- .debug_info    0x0000000000004763      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x00000000000054c2      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x00000000000057eb      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x00000000000059d3      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x0000000000005d87      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x0000000000005f96      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000006159      0x17b cpu/m0/libm0.a(cpu.o)
+.debug_info     0x0000000000000000     0x6536
+ .debug_info    0x0000000000000000      0x92d lib/libarm.a(board.o)
+ .debug_info    0x000000000000092d      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000b58      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000df8      0xdd6 drivers/libdrivers.a(image.o)
+ .debug_info    0x0000000000001bce      0xb01 drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x00000000000026cf     0x1661 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_info    0x0000000000003d30      0x70f drivers/libdrivers.a(bbt.o)
+ .debug_info    0x000000000000443f      0x586 drivers/libdrivers.a(sha256.o)
+ .debug_info    0x00000000000049c5      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000005724      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000005a4d      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000005c35      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x0000000000005fe9      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000061f8      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x00000000000063bb      0x17b cpu/m0/libm0.a(cpu.o)
 
-.debug_abbrev   0x0000000000000000     0x1c50
- .debug_abbrev  0x0000000000000000      0x2c9 lib/libarm.a(board.o)
- .debug_abbrev  0x00000000000002c9       0xb7 lib/libarm.a(string.o)
- .debug_abbrev  0x0000000000000380      0x19e drivers/libdrivers.a(uart.o)
- .debug_abbrev  0x000000000000051e      0x298 drivers/libdrivers.a(image.o)
- .debug_abbrev  0x00000000000007b6      0x274 drivers/libdrivers.a(secure_verify.o)
- .debug_abbrev  0x0000000000000a2a      0x48e drivers/libdrivers.a(spifc_loader2.o)
- .debug_abbrev  0x0000000000000eb8      0x281 drivers/libdrivers.a(bbt.o)
- .debug_abbrev  0x0000000000001139      0x20e drivers/libdrivers.a(sha256.o)
- .debug_abbrev  0x0000000000001347      0x280 drivers/libdrivers.a(nor.o)
- .debug_abbrev  0x00000000000015c7      0x12f drivers/libdrivers.a(ddr.o)
- .debug_abbrev  0x00000000000016f6       0xde drivers/libdrivers.a(drv_hash.o)
- .debug_abbrev  0x00000000000017d4      0x1e2 drivers/libdrivers.a(drv_rsa.o)
- .debug_abbrev  0x00000000000019b6       0xb5 drivers/libdrivers.a(flash.o)
- .debug_abbrev  0x0000000000001a6b      0x11d drivers/libdrivers.a(efuse.o)
- .debug_abbrev  0x0000000000001b88       0xc8 cpu/m0/libm0.a(cpu.o)
+.debug_abbrev   0x0000000000000000     0x1c94
+ .debug_abbrev  0x0000000000000000      0x304 lib/libarm.a(board.o)
+ .debug_abbrev  0x0000000000000304       0xb7 lib/libarm.a(string.o)
+ .debug_abbrev  0x00000000000003bb      0x19e drivers/libdrivers.a(uart.o)
+ .debug_abbrev  0x0000000000000559      0x2a1 drivers/libdrivers.a(image.o)
+ .debug_abbrev  0x00000000000007fa      0x274 drivers/libdrivers.a(secure_verify.o)
+ .debug_abbrev  0x0000000000000a6e      0x48e drivers/libdrivers.a(spifc_loader2.o)
+ .debug_abbrev  0x0000000000000efc      0x281 drivers/libdrivers.a(bbt.o)
+ .debug_abbrev  0x000000000000117d      0x20e drivers/libdrivers.a(sha256.o)
+ .debug_abbrev  0x000000000000138b      0x280 drivers/libdrivers.a(nor.o)
+ .debug_abbrev  0x000000000000160b      0x12f drivers/libdrivers.a(ddr.o)
+ .debug_abbrev  0x000000000000173a       0xde drivers/libdrivers.a(drv_hash.o)
+ .debug_abbrev  0x0000000000001818      0x1e2 drivers/libdrivers.a(drv_rsa.o)
+ .debug_abbrev  0x00000000000019fa       0xb5 drivers/libdrivers.a(flash.o)
+ .debug_abbrev  0x0000000000001aaf      0x11d drivers/libdrivers.a(efuse.o)
+ .debug_abbrev  0x0000000000001bcc       0xc8 cpu/m0/libm0.a(cpu.o)
 
-.debug_loc      0x0000000000000000     0x956d
- .debug_loc     0x0000000000000000      0x17b lib/libarm.a(board.o)
- .debug_loc     0x000000000000017b      0x29d lib/libarm.a(string.o)
- .debug_loc     0x0000000000000418      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x0000000000000640      0x6a2 drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000000ce2      0x790 drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x0000000000001472      0xef4 drivers/libdrivers.a(spifc_loader2.o)
- .debug_loc     0x0000000000002366      0x282 drivers/libdrivers.a(bbt.o)
- .debug_loc     0x00000000000025e8     0x5f3f drivers/libdrivers.a(sha256.o)
- .debug_loc     0x0000000000008527      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x0000000000008d31      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x0000000000009009      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x00000000000091c1      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x00000000000093f9       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x0000000000009418       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x00000000000094c3       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x96e6
+ .debug_loc     0x0000000000000000      0x2f4 lib/libarm.a(board.o)
+ .debug_loc     0x00000000000002f4      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x0000000000000591      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x00000000000007b9      0x6a2 drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000000e5b      0x790 drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x00000000000015eb      0xef4 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_loc     0x00000000000024df      0x282 drivers/libdrivers.a(bbt.o)
+ .debug_loc     0x0000000000002761     0x5f3f drivers/libdrivers.a(sha256.o)
+ .debug_loc     0x00000000000086a0      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x0000000000008eaa      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x0000000000009182      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x000000000000933a      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x0000000000009572       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x0000000000009591       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x000000000000963c       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1e0
  .debug_aranges
@@ -446,68 +449,68 @@
  .debug_ranges  0x00000000000001d8       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000200       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x1f9e
- .debug_line    0x0000000000000000      0x303 lib/libarm.a(board.o)
- .debug_line    0x0000000000000303      0x152 lib/libarm.a(string.o)
- .debug_line    0x0000000000000455      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x0000000000000567      0x3b8 drivers/libdrivers.a(image.o)
- .debug_line    0x000000000000091f      0x38e drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000cad      0x442 drivers/libdrivers.a(spifc_loader2.o)
- .debug_line    0x00000000000010ef      0x251 drivers/libdrivers.a(bbt.o)
- .debug_line    0x0000000000001340      0x2bb drivers/libdrivers.a(sha256.o)
- .debug_line    0x00000000000015fb      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x000000000000189d      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x0000000000001b36       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001bbe      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001cd5      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001ddf      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000001ef7       0xa7 cpu/m0/libm0.a(cpu.o)
+.debug_line     0x0000000000000000     0x2022
+ .debug_line    0x0000000000000000      0x387 lib/libarm.a(board.o)
+ .debug_line    0x0000000000000387      0x152 lib/libarm.a(string.o)
+ .debug_line    0x00000000000004d9      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000005eb      0x3b8 drivers/libdrivers.a(image.o)
+ .debug_line    0x00000000000009a3      0x38e drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000d31      0x442 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_line    0x0000000000001173      0x251 drivers/libdrivers.a(bbt.o)
+ .debug_line    0x00000000000013c4      0x2bb drivers/libdrivers.a(sha256.o)
+ .debug_line    0x000000000000167f      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001921      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x0000000000001bba       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x0000000000001c42      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001d59      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x0000000000001e63      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000001f7b       0xa7 cpu/m0/libm0.a(cpu.o)
 
-.debug_str      0x0000000000000000     0x1565
- .debug_str     0x0000000000000000      0x4a7 lib/libarm.a(board.o)
-                                        0x518 (松开之前的大小)
- .debug_str     0x00000000000004a7       0x3f lib/libarm.a(string.o)
+.debug_str      0x0000000000000000     0x160a
+ .debug_str     0x0000000000000000      0x555 lib/libarm.a(board.o)
+                                        0x5cb (松开之前的大小)
+ .debug_str     0x0000000000000555       0x3f lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x00000000000004e6       0xe2 drivers/libdrivers.a(uart.o)
+ .debug_str     0x0000000000000594       0xe2 drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x00000000000005c8      0x35b drivers/libdrivers.a(image.o)
-                                        0x808 (松开之前的大小)
- .debug_str     0x0000000000000923      0x2f9 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x0000000000000676      0x35b drivers/libdrivers.a(image.o)
+                                        0x854 (松开之前的大小)
+ .debug_str     0x00000000000009d1      0x2f9 drivers/libdrivers.a(secure_verify.o)
                                         0x61f (松开之前的大小)
- .debug_str     0x0000000000000c1c      0x3cc drivers/libdrivers.a(spifc_loader2.o)
+ .debug_str     0x0000000000000cca      0x3c3 drivers/libdrivers.a(spifc_loader2.o)
                                         0x6c1 (松开之前的大小)
- .debug_str     0x0000000000000fe8      0x103 drivers/libdrivers.a(bbt.o)
+ .debug_str     0x000000000000108d      0x103 drivers/libdrivers.a(bbt.o)
                                         0x3fe (松开之前的大小)
- .debug_str     0x00000000000010eb       0xc3 drivers/libdrivers.a(sha256.o)
+ .debug_str     0x0000000000001190       0xc3 drivers/libdrivers.a(sha256.o)
                                         0x2b7 (松开之前的大小)
- .debug_str     0x00000000000011ae      0x1ad drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000001253      0x1ad drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x000000000000135b       0x54 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x0000000000001400       0x54 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x00000000000013af       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000001454       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000001436       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x00000000000014db       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x00000000000014af       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000001554       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x00000000000014c1       0x20 drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000001566       0x20 drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x00000000000014e1       0x84 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000001586       0x84 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
 
-.debug_frame    0x0000000000000000      0xa90
- .debug_frame   0x0000000000000000       0xb0 lib/libarm.a(board.o)
- .debug_frame   0x00000000000000b0       0x68 lib/libarm.a(string.o)
- .debug_frame   0x0000000000000118       0xc0 drivers/libdrivers.a(uart.o)
- .debug_frame   0x00000000000001d8       0xec drivers/libdrivers.a(image.o)
- .debug_frame   0x00000000000002c4       0xb0 drivers/libdrivers.a(secure_verify.o)
- .debug_frame   0x0000000000000374      0x23c drivers/libdrivers.a(spifc_loader2.o)
- .debug_frame   0x00000000000005b0       0xa0 drivers/libdrivers.a(bbt.o)
- .debug_frame   0x0000000000000650       0xbc drivers/libdrivers.a(sha256.o)
- .debug_frame   0x000000000000070c      0x1b0 drivers/libdrivers.a(nor.o)
- .debug_frame   0x00000000000008bc       0xac drivers/libdrivers.a(ddr.o)
- .debug_frame   0x0000000000000968       0x2c drivers/libdrivers.a(drv_hash.o)
- .debug_frame   0x0000000000000994       0x4c drivers/libdrivers.a(drv_rsa.o)
- .debug_frame   0x00000000000009e0       0x20 drivers/libdrivers.a(flash.o)
- .debug_frame   0x0000000000000a00       0x60 drivers/libdrivers.a(efuse.o)
- .debug_frame   0x0000000000000a60       0x30 cpu/m0/libm0.a(cpu.o)
+.debug_frame    0x0000000000000000      0xaf0
+ .debug_frame   0x0000000000000000      0x110 lib/libarm.a(board.o)
+ .debug_frame   0x0000000000000110       0x68 lib/libarm.a(string.o)
+ .debug_frame   0x0000000000000178       0xc0 drivers/libdrivers.a(uart.o)
+ .debug_frame   0x0000000000000238       0xec drivers/libdrivers.a(image.o)
+ .debug_frame   0x0000000000000324       0xb0 drivers/libdrivers.a(secure_verify.o)
+ .debug_frame   0x00000000000003d4      0x23c drivers/libdrivers.a(spifc_loader2.o)
+ .debug_frame   0x0000000000000610       0xa0 drivers/libdrivers.a(bbt.o)
+ .debug_frame   0x00000000000006b0       0xbc drivers/libdrivers.a(sha256.o)
+ .debug_frame   0x000000000000076c      0x1b0 drivers/libdrivers.a(nor.o)
+ .debug_frame   0x000000000000091c       0xac drivers/libdrivers.a(ddr.o)
+ .debug_frame   0x00000000000009c8       0x2c drivers/libdrivers.a(drv_hash.o)
+ .debug_frame   0x00000000000009f4       0x4c drivers/libdrivers.a(drv_rsa.o)
+ .debug_frame   0x0000000000000a40       0x20 drivers/libdrivers.a(flash.o)
+ .debug_frame   0x0000000000000a60       0x60 drivers/libdrivers.a(efuse.o)
+ .debug_frame   0x0000000000000ac0       0x30 cpu/m0/libm0.a(cpu.o)
diff --git a/boot/prj/zx297520v3/bootrom2/dl_on/loader2.bin b/boot/prj/zx297520v3/bootrom2/dl_on/loader2.bin
index 3652c89..0428da1 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_on/loader2.bin
+++ b/boot/prj/zx297520v3/bootrom2/dl_on/loader2.bin
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom2/dl_on/z-load b/boot/prj/zx297520v3/bootrom2/dl_on/z-load
index 5889419..c79fda1 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_on/z-load
+++ b/boot/prj/zx297520v3/bootrom2/dl_on/z-load
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom2/dl_on/z-load.map b/boot/prj/zx297520v3/bootrom2/dl_on/z-load.map
index cc3e364..72c0ac3 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_on/z-load.map
+++ b/boot/prj/zx297520v3/bootrom2/dl_on/z-load.map
@@ -300,49 +300,49 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x341f
- .debug_info    0x0000000000000000      0x658 lib/libarm.a(board.o)
- .debug_info    0x0000000000000658      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000883      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x0000000000000bac      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000e4c      0x6d3 drivers/libdrivers.a(image.o)
- .debug_info    0x000000000000151f      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x00000000000016e2      0x62d drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x0000000000001d0f      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x0000000000002a6e      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x0000000000002c56      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x000000000000300a      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x0000000000003219      0x17b cpu/m0/libm0.a(cpu.o)
- .debug_info    0x0000000000003394       0x8b cpu/m0/libm0.a(clk.o)
+.debug_info     0x0000000000000000     0x34d5
+ .debug_info    0x0000000000000000      0x70e lib/libarm.a(board.o)
+ .debug_info    0x000000000000070e      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000939      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000000c62      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000f02      0x6d3 drivers/libdrivers.a(image.o)
+ .debug_info    0x00000000000015d5      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x0000000000001798      0x62d drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x0000000000001dc5      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000002b24      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000002d0c      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x00000000000030c0      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000032cf      0x17b cpu/m0/libm0.a(cpu.o)
+ .debug_info    0x000000000000344a       0x8b cpu/m0/libm0.a(clk.o)
 
-.debug_abbrev   0x0000000000000000     0x1290
- .debug_abbrev  0x0000000000000000      0x286 lib/libarm.a(board.o)
- .debug_abbrev  0x0000000000000286       0xb7 lib/libarm.a(string.o)
- .debug_abbrev  0x000000000000033d      0x12f drivers/libdrivers.a(ddr.o)
- .debug_abbrev  0x000000000000046c      0x19e drivers/libdrivers.a(uart.o)
- .debug_abbrev  0x000000000000060a      0x212 drivers/libdrivers.a(image.o)
- .debug_abbrev  0x000000000000081c      0x11d drivers/libdrivers.a(efuse.o)
- .debug_abbrev  0x0000000000000939      0x258 drivers/libdrivers.a(secure_verify.o)
- .debug_abbrev  0x0000000000000b91      0x280 drivers/libdrivers.a(nor.o)
- .debug_abbrev  0x0000000000000e11       0xde drivers/libdrivers.a(drv_hash.o)
- .debug_abbrev  0x0000000000000eef      0x1e2 drivers/libdrivers.a(drv_rsa.o)
- .debug_abbrev  0x00000000000010d1       0xb5 drivers/libdrivers.a(flash.o)
- .debug_abbrev  0x0000000000001186       0xc8 cpu/m0/libm0.a(cpu.o)
- .debug_abbrev  0x000000000000124e       0x42 cpu/m0/libm0.a(clk.o)
+.debug_abbrev   0x0000000000000000     0x12c2
+ .debug_abbrev  0x0000000000000000      0x2b8 lib/libarm.a(board.o)
+ .debug_abbrev  0x00000000000002b8       0xb7 lib/libarm.a(string.o)
+ .debug_abbrev  0x000000000000036f      0x12f drivers/libdrivers.a(ddr.o)
+ .debug_abbrev  0x000000000000049e      0x19e drivers/libdrivers.a(uart.o)
+ .debug_abbrev  0x000000000000063c      0x212 drivers/libdrivers.a(image.o)
+ .debug_abbrev  0x000000000000084e      0x11d drivers/libdrivers.a(efuse.o)
+ .debug_abbrev  0x000000000000096b      0x258 drivers/libdrivers.a(secure_verify.o)
+ .debug_abbrev  0x0000000000000bc3      0x280 drivers/libdrivers.a(nor.o)
+ .debug_abbrev  0x0000000000000e43       0xde drivers/libdrivers.a(drv_hash.o)
+ .debug_abbrev  0x0000000000000f21      0x1e2 drivers/libdrivers.a(drv_rsa.o)
+ .debug_abbrev  0x0000000000001103       0xb5 drivers/libdrivers.a(flash.o)
+ .debug_abbrev  0x00000000000011b8       0xc8 cpu/m0/libm0.a(cpu.o)
+ .debug_abbrev  0x0000000000001280       0x42 cpu/m0/libm0.a(clk.o)
 
-.debug_loc      0x0000000000000000     0x1ca7
- .debug_loc     0x0000000000000000      0x107 lib/libarm.a(board.o)
- .debug_loc     0x0000000000000107      0x29d lib/libarm.a(string.o)
- .debug_loc     0x00000000000003a4      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x000000000000067c      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x00000000000008a4      0x2ab drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000000b4f       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x0000000000000bfa      0x3ea drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x0000000000000fe4      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x00000000000017ee      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x00000000000019a6      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x0000000000001bde       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x0000000000001bfd       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x1cbb
+ .debug_loc     0x0000000000000000      0x11b lib/libarm.a(board.o)
+ .debug_loc     0x000000000000011b      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x00000000000003b8      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x0000000000000690      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x00000000000008b8      0x2ab drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000000b63       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x0000000000000c0e      0x3ea drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x0000000000000ff8      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x0000000000001802      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x00000000000019ba      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x0000000000001bf2       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x0000000000001c11       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1a0
  .debug_aranges
@@ -380,47 +380,47 @@
  .debug_ranges  0x0000000000000068       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000090       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x1430
- .debug_line    0x0000000000000000      0x2f3 lib/libarm.a(board.o)
- .debug_line    0x00000000000002f3      0x152 lib/libarm.a(string.o)
- .debug_line    0x0000000000000445      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x00000000000006de      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x00000000000007f0      0x228 drivers/libdrivers.a(image.o)
- .debug_line    0x0000000000000a18      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000000b30      0x2ad drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000ddd      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x000000000000107f       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001107      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x000000000000121e      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001328       0xa7 cpu/m0/libm0.a(cpu.o)
- .debug_line    0x00000000000013cf       0x61 cpu/m0/libm0.a(clk.o)
+.debug_line     0x0000000000000000     0x1433
+ .debug_line    0x0000000000000000      0x2f6 lib/libarm.a(board.o)
+ .debug_line    0x00000000000002f6      0x152 lib/libarm.a(string.o)
+ .debug_line    0x0000000000000448      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x00000000000006e1      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000007f3      0x228 drivers/libdrivers.a(image.o)
+ .debug_line    0x0000000000000a1b      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000000b33      0x2ad drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000de0      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001082       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x000000000000110a      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001221      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x000000000000132b       0xa7 cpu/m0/libm0.a(cpu.o)
+ .debug_line    0x00000000000013d2       0x61 cpu/m0/libm0.a(clk.o)
 
-.debug_str      0x0000000000000000      0xe62
- .debug_str     0x0000000000000000      0x47c lib/libarm.a(board.o)
-                                        0x4f6 (松开之前的大小)
- .debug_str     0x000000000000047c       0x4c lib/libarm.a(string.o)
+.debug_str      0x0000000000000000      0xebb
+ .debug_str     0x0000000000000000      0x4d5 lib/libarm.a(board.o)
+                                        0x554 (松开之前的大小)
+ .debug_str     0x00000000000004d5       0x4c lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x00000000000004c8       0xa1 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x0000000000000521       0xa1 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x0000000000000569       0x8a drivers/libdrivers.a(uart.o)
+ .debug_str     0x00000000000005c2       0x8a drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x00000000000005f3      0x229 drivers/libdrivers.a(image.o)
+ .debug_str     0x000000000000064c      0x229 drivers/libdrivers.a(image.o)
                                         0x4a0 (松开之前的大小)
- .debug_str     0x000000000000081c       0x7b drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000000875       0x7b drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x0000000000000897      0x177 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x00000000000008f0      0x177 drivers/libdrivers.a(secure_verify.o)
                                         0x407 (松开之前的大小)
- .debug_str     0x0000000000000a0e      0x2c3 drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000000a67      0x2c3 drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x0000000000000cd1       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000000d2a       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000000d58       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x0000000000000db1       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x0000000000000dd1       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000000e2a       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x0000000000000de3       0x79 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000000e3c       0x79 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
- .debug_str     0x0000000000000e5c        0x6 cpu/m0/libm0.a(clk.o)
+ .debug_str     0x0000000000000eb5        0x6 cpu/m0/libm0.a(clk.o)
                                         0x1bd (松开之前的大小)
 
 .debug_frame    0x0000000000000000      0x6a0
diff --git a/boot/prj/zx297520v3/bootrom2/dl_on/z-load2 b/boot/prj/zx297520v3/bootrom2/dl_on/z-load2
index f556735..50274d5 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_on/z-load2
+++ b/boot/prj/zx297520v3/bootrom2/dl_on/z-load2
Binary files differ
diff --git a/boot/prj/zx297520v3/bootrom2/dl_on/z-load2.map b/boot/prj/zx297520v3/bootrom2/dl_on/z-load2.map
index e422c41..69d87e4 100755
--- a/boot/prj/zx297520v3/bootrom2/dl_on/z-load2.map
+++ b/boot/prj/zx297520v3/bootrom2/dl_on/z-load2.map
@@ -34,7 +34,7 @@
                 0x0000000000000000                . = 0x0
                 0x0000000000000000                . = ALIGN (0x4)
 
-.text           0x0000000020300000     0x4b3c
+.text           0x0000000020300000     0x4d44
  cpu/m0/start.o(.text)
  .text          0x0000000020300000      0x220 cpu/m0/start.o
                 0x00000000203001a4                _bss_start
@@ -44,209 +44,212 @@
                 0x00000000203001b8                _start
                 0x00000000203001fe                run_at
  *(.text)
- .text          0x0000000020300220      0x24c lib/libarm.a(board.o)
+ .text          0x0000000020300220      0x454 lib/libarm.a(board.o)
                 0x0000000020300220                print_info
                 0x0000000020300230                copy_to_iram1
                 0x0000000020300250                clear_iram
                 0x0000000020300268                write_loader_mode
                 0x0000000020300274                hang
                 0x0000000020300276                usb_apcore_poweroff
-                0x00000000203002d0                start_armboot
- .text          0x000000002030046c       0x80 lib/libarm.a(string.o)
-                0x000000002030046c                strlen
-                0x000000002030047c                memset
-                0x00000000203004be                memcmp
-                0x00000000203004da                memcpy
- .text          0x00000000203004ec      0x138 drivers/libdrivers.a(uart.o)
-                0x00000000203004ec                uart_init
-                0x000000002030056c                uart_putc
-                0x0000000020300594                uart_puts
-                0x00000000203005a8                uart_getc
-                0x00000000203005c4                uart_tstc
-                0x00000000203005d4                UART_Read
-                0x00000000203005f0                UART_Write
-                0x000000002030060c                UART_Check_Sync
- .text          0x0000000020300624      0x338 drivers/libdrivers.a(image.o)
-                0x0000000020300628                page_align
-                0x0000000020300640                find_partition_para
-                0x0000000020300670                read_image_part_offset
-                0x00000000203006c4                read_flags_image
-                0x00000000203007ac                read_uboot_image
-                0x000000002030088c                nand_read_m0
-                0x00000000203008f8                read_zloader_image
- .text          0x000000002030095c      0x2b0 drivers/libdrivers.a(secure_verify.o)
-                0x000000002030097a                BIG2SMALL
-                0x00000000203009aa                bin2hex
-                0x00000000203009f4                secure_verify_zloader
-                0x0000000020300ae8                SecureVerify
- .text          0x0000000020300c0c      0x648 drivers/libdrivers.a(spifc_loader2.o)
-                0x0000000020300d00                zDrvGpio_SetFunc
-                0x0000000020300d38                zDrvGpio_SetDirection
-                0x0000000020300d88                zDrvGpio_SetOutputValue
-                0x0000000020300dc4                spi_nand_cs
-                0x0000000020300e00                spifc_clear_fifo
-                0x0000000020300e14                spifc_clear_int
-                0x0000000020300f70                spifc_read_oob
-                0x0000000020300fb4                spifc_read_page_raw
-                0x0000000020300ff0                spifc_read_page
-                0x000000002030106c                spifc_read
-                0x00000000203010b0                read_data
-                0x0000000020301104                read_id
-                0x0000000020301188                spifc_init
-                0x000000002030120c                zloader_flash_init
- .text          0x0000000020301254      0x1c0 drivers/libdrivers.a(bbt.o)
-                0x00000000203012b4                nand_creat_ram_bbt
-                0x00000000203012f8                nand_search_bbt
-                0x0000000020301384                nand_creat_bbt
-                0x0000000020301400                nand_block_isbad
- .text          0x0000000020301414     0x2688 drivers/libdrivers.a(sha256.o)
-                0x0000000020303934                sha256_starts
-                0x000000002030397c                sha256_update
-                0x0000000020303988                sha256_finish
-                0x0000000020303a74                sha256_csum_wd
- .text          0x0000000020303a9c      0x424 drivers/libdrivers.a(nor.o)
-                0x0000000020303a9c                spifc_enable
-                0x0000000020303acc                spifc_disable
-                0x0000000020303af0                spifc_setup_cmd
-                0x0000000020303b74                spifc_wait_cmd_end
-                0x0000000020303ba0                spifc_read_fifo
-                0x0000000020303bdc                spifc_start
-                0x0000000020303bec                cmd_seek
-                0x0000000020303c0c                nor_read_reg
-                0x0000000020303c6c                nor_read_id
-                0x0000000020303cd4                spi_nor_read
-                0x0000000020303d30                nor_read
-                0x0000000020303d84                spi_nor_read_security_register
-                0x0000000020303de0                nor_read_security_register
-                0x0000000020303e34                nor_init
-                0x0000000020303e84                board_flash_init
- .text          0x0000000020303ec0      0x82c drivers/libdrivers.a(ddr.o)
-                0x0000000020303ec0                nsdelay
-                0x0000000020303eda                ddr_clk_init
-                0x0000000020303ef0                ddr_phy_init
-                0x0000000020303fec                ddr_ctrl_init
-                0x00000000203043a8                ddr_prio_init
-                0x00000000203044cc                ddr_init
- .text          0x00000000203046ec       0xa4 drivers/libdrivers.a(drv_hash.o)
-                0x00000000203046ec                Hash_Calculate
- .text          0x0000000020304790      0x174 drivers/libdrivers.a(drv_rsa.o)
-                0x00000000203047aa                Rsa_Calculate
- .text          0x0000000020304904       0x28 drivers/libdrivers.a(flash.o)
-                0x0000000020304904                get_boot_mode
- .text          0x000000002030492c      0x1bc drivers/libdrivers.a(efuse.o)
-                0x000000002030492c                efuse_init
-                0x0000000020304950                get_ddr_flag
-                0x0000000020304a70                get_secure_verify_status
-                0x0000000020304ab4                get_otp_secure_verify_status
- .text          0x0000000020304ae8       0x54 cpu/m0/libm0.a(cpu.o)
-                0x0000000020304ae8                timer_init
-                0x0000000020304b00                usdelay
+                0x00000000203002d0                i2c_init
+                0x0000000020300338                pmu_read
+                0x0000000020300404                pmu_write
+                0x00000000203004d0                start_armboot
+ .text          0x0000000020300674       0x80 lib/libarm.a(string.o)
+                0x0000000020300674                strlen
+                0x0000000020300684                memset
+                0x00000000203006c6                memcmp
+                0x00000000203006e2                memcpy
+ .text          0x00000000203006f4      0x138 drivers/libdrivers.a(uart.o)
+                0x00000000203006f4                uart_init
+                0x0000000020300774                uart_putc
+                0x000000002030079c                uart_puts
+                0x00000000203007b0                uart_getc
+                0x00000000203007cc                uart_tstc
+                0x00000000203007dc                UART_Read
+                0x00000000203007f8                UART_Write
+                0x0000000020300814                UART_Check_Sync
+ .text          0x000000002030082c      0x338 drivers/libdrivers.a(image.o)
+                0x0000000020300830                page_align
+                0x0000000020300848                find_partition_para
+                0x0000000020300878                read_image_part_offset
+                0x00000000203008cc                read_flags_image
+                0x00000000203009b4                read_uboot_image
+                0x0000000020300a94                nand_read_m0
+                0x0000000020300b00                read_zloader_image
+ .text          0x0000000020300b64      0x2b0 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020300b82                BIG2SMALL
+                0x0000000020300bb2                bin2hex
+                0x0000000020300bfc                secure_verify_zloader
+                0x0000000020300cf0                SecureVerify
+ .text          0x0000000020300e14      0x648 drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020300f08                zDrvGpio_SetFunc
+                0x0000000020300f40                zDrvGpio_SetDirection
+                0x0000000020300f90                zDrvGpio_SetOutputValue
+                0x0000000020300fcc                spi_nand_cs
+                0x0000000020301008                spifc_clear_fifo
+                0x000000002030101c                spifc_clear_int
+                0x0000000020301178                spifc_read_oob
+                0x00000000203011bc                spifc_read_page_raw
+                0x00000000203011f8                spifc_read_page
+                0x0000000020301274                spifc_read
+                0x00000000203012b8                read_data
+                0x000000002030130c                read_id
+                0x0000000020301390                spifc_init
+                0x0000000020301414                zloader_flash_init
+ .text          0x000000002030145c      0x1c0 drivers/libdrivers.a(bbt.o)
+                0x00000000203014bc                nand_creat_ram_bbt
+                0x0000000020301500                nand_search_bbt
+                0x000000002030158c                nand_creat_bbt
+                0x0000000020301608                nand_block_isbad
+ .text          0x000000002030161c     0x2688 drivers/libdrivers.a(sha256.o)
+                0x0000000020303b3c                sha256_starts
+                0x0000000020303b84                sha256_update
+                0x0000000020303b90                sha256_finish
+                0x0000000020303c7c                sha256_csum_wd
+ .text          0x0000000020303ca4      0x424 drivers/libdrivers.a(nor.o)
+                0x0000000020303ca4                spifc_enable
+                0x0000000020303cd4                spifc_disable
+                0x0000000020303cf8                spifc_setup_cmd
+                0x0000000020303d7c                spifc_wait_cmd_end
+                0x0000000020303da8                spifc_read_fifo
+                0x0000000020303de4                spifc_start
+                0x0000000020303df4                cmd_seek
+                0x0000000020303e14                nor_read_reg
+                0x0000000020303e74                nor_read_id
+                0x0000000020303edc                spi_nor_read
+                0x0000000020303f38                nor_read
+                0x0000000020303f8c                spi_nor_read_security_register
+                0x0000000020303fe8                nor_read_security_register
+                0x000000002030403c                nor_init
+                0x000000002030408c                board_flash_init
+ .text          0x00000000203040c8      0x82c drivers/libdrivers.a(ddr.o)
+                0x00000000203040c8                nsdelay
+                0x00000000203040e2                ddr_clk_init
+                0x00000000203040f8                ddr_phy_init
+                0x00000000203041f4                ddr_ctrl_init
+                0x00000000203045b0                ddr_prio_init
+                0x00000000203046d4                ddr_init
+ .text          0x00000000203048f4       0xa4 drivers/libdrivers.a(drv_hash.o)
+                0x00000000203048f4                Hash_Calculate
+ .text          0x0000000020304998      0x174 drivers/libdrivers.a(drv_rsa.o)
+                0x00000000203049b2                Rsa_Calculate
+ .text          0x0000000020304b0c       0x28 drivers/libdrivers.a(flash.o)
+                0x0000000020304b0c                get_boot_mode
+ .text          0x0000000020304b34      0x1bc drivers/libdrivers.a(efuse.o)
+                0x0000000020304b34                efuse_init
+                0x0000000020304b58                get_ddr_flag
+                0x0000000020304c78                get_secure_verify_status
+                0x0000000020304cbc                get_otp_secure_verify_status
+ .text          0x0000000020304cf0       0x54 cpu/m0/libm0.a(cpu.o)
+                0x0000000020304cf0                timer_init
+                0x0000000020304d08                usdelay
 
-.glue_7         0x0000000020304b3c        0x0
+.glue_7         0x0000000020304d44        0x0
  .glue_7        0x0000000000000000        0x0 linker stubs
 
-.glue_7t        0x0000000020304b3c        0x0
+.glue_7t        0x0000000020304d44        0x0
  .glue_7t       0x0000000000000000        0x0 linker stubs
 
-.vfp11_veneer   0x0000000020304b3c        0x0
+.vfp11_veneer   0x0000000020304d44        0x0
  .vfp11_veneer  0x0000000000000000        0x0 linker stubs
 
-.v4_bx          0x0000000020304b3c        0x0
+.v4_bx          0x0000000020304d44        0x0
  .v4_bx         0x0000000000000000        0x0 linker stubs
 
-.iplt           0x0000000020304b3c        0x0
+.iplt           0x0000000020304d44        0x0
  .iplt          0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020304b3c                . = ALIGN (0x4)
+                0x0000000020304d44                . = ALIGN (0x4)
 
-.rodata         0x0000000020304b3c      0x3f0
+.rodata         0x0000000020304d44      0x3f0
  *(.rodata)
- .rodata        0x0000000020304b3c      0x270 drivers/libdrivers.a(spifc_loader2.o)
- .rodata        0x0000000020304dac       0x13 drivers/libdrivers.a(sha256.o)
-                0x0000000020304dac                sha256_der_prefix
- *fill*         0x0000000020304dbf        0x1 
- .rodata        0x0000000020304dc0      0x16c drivers/libdrivers.a(nor.o)
+ .rodata        0x0000000020304d44      0x270 drivers/libdrivers.a(spifc_loader2.o)
+ .rodata        0x0000000020304fb4       0x13 drivers/libdrivers.a(sha256.o)
+                0x0000000020304fb4                sha256_der_prefix
+ *fill*         0x0000000020304fc7        0x1 
+ .rodata        0x0000000020304fc8      0x16c drivers/libdrivers.a(nor.o)
 
-.rodata.str1.1  0x0000000020304f2c      0x45b
+.rodata.str1.1  0x0000000020305134      0x48d
  .rodata.str1.1
-                0x0000000020304f2c      0x158 lib/libarm.a(board.o)
-                                        0x171 (松开之前的大小)
+                0x0000000020305134      0x18a lib/libarm.a(board.o)
+                                        0x1a3 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305084       0xef drivers/libdrivers.a(image.o)
+                0x00000000203052be       0xef drivers/libdrivers.a(image.o)
                                         0x115 (松开之前的大小)
  .rodata.str1.1
-                0x0000000020305173       0x5b drivers/libdrivers.a(secure_verify.o)
+                0x00000000203053ad       0x5b drivers/libdrivers.a(secure_verify.o)
                                          0x5d (松开之前的大小)
  .rodata.str1.1
-                0x00000000203051ce       0x3d drivers/libdrivers.a(spifc_loader2.o)
+                0x0000000020305408       0x3d drivers/libdrivers.a(spifc_loader2.o)
                                          0x4a (松开之前的大小)
  .rodata.str1.1
-                0x000000002030520b        0x9 drivers/libdrivers.a(bbt.o)
+                0x0000000020305445        0x9 drivers/libdrivers.a(bbt.o)
  .rodata.str1.1
-                0x0000000020305214      0x15c drivers/libdrivers.a(nor.o)
+                0x000000002030544e      0x15c drivers/libdrivers.a(nor.o)
  .rodata.str1.1
-                0x0000000020305370       0x17 drivers/libdrivers.a(efuse.o)
+                0x00000000203055aa       0x17 drivers/libdrivers.a(efuse.o)
 
-.rel.dyn        0x0000000020305388        0x0
+.rel.dyn        0x00000000203055c4        0x0
  .rel.iplt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305388                . = ALIGN (0x4)
+                0x00000000203055c4                . = ALIGN (0x4)
 
-.data           0x0000000020305388       0xd0
+.data           0x00000000203055c4       0xd0
  *(.data)
- .data          0x0000000020305388        0x0 cpu/m0/start.o
- .data          0x0000000020305388        0x0 lib/libarm.a(board.o)
- .data          0x0000000020305388        0x0 lib/libarm.a(string.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(uart.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(image.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(secure_verify.o)
- .data          0x0000000020305388        0x0 drivers/libdrivers.a(spifc_loader2.o)
- .data          0x0000000020305388       0x40 drivers/libdrivers.a(bbt.o)
- .data          0x00000000203053c8       0x40 drivers/libdrivers.a(sha256.o)
- .data          0x0000000020305408       0x50 drivers/libdrivers.a(nor.o)
-                0x0000000020305408                nor_cmd_table
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(ddr.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(drv_hash.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(drv_rsa.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(flash.o)
- .data          0x0000000020305458        0x0 drivers/libdrivers.a(efuse.o)
- .data          0x0000000020305458        0x0 cpu/m0/libm0.a(cpu.o)
+ .data          0x00000000203055c4        0x0 cpu/m0/start.o
+ .data          0x00000000203055c4        0x0 lib/libarm.a(board.o)
+ .data          0x00000000203055c4        0x0 lib/libarm.a(string.o)
+ .data          0x00000000203055c4        0x0 drivers/libdrivers.a(uart.o)
+ .data          0x00000000203055c4        0x0 drivers/libdrivers.a(image.o)
+ .data          0x00000000203055c4        0x0 drivers/libdrivers.a(secure_verify.o)
+ .data          0x00000000203055c4        0x0 drivers/libdrivers.a(spifc_loader2.o)
+ .data          0x00000000203055c4       0x40 drivers/libdrivers.a(bbt.o)
+ .data          0x0000000020305604       0x40 drivers/libdrivers.a(sha256.o)
+ .data          0x0000000020305644       0x50 drivers/libdrivers.a(nor.o)
+                0x0000000020305644                nor_cmd_table
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(ddr.o)
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(drv_hash.o)
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(flash.o)
+ .data          0x0000000020305694        0x0 drivers/libdrivers.a(efuse.o)
+ .data          0x0000000020305694        0x0 cpu/m0/libm0.a(cpu.o)
 
-.igot.plt       0x0000000020305458        0x0
+.igot.plt       0x0000000020305694        0x0
  .igot.plt      0x0000000000000000        0x0 cpu/m0/start.o
-                0x0000000020305458                . = ALIGN (0x4)
+                0x0000000020305694                . = ALIGN (0x4)
 
 .got
  *(.got)
-                0x0000000020305458                . = ALIGN (0x4)
-                0x0000000020305458                __bss_start = .
+                0x0000000020305694                . = ALIGN (0x4)
+                0x0000000020305694                __bss_start = .
 
-.bss            0x0000000020305458      0x1e8
+.bss            0x0000000020305694      0x1e8
  *(.bss)
- .bss           0x0000000020305458        0x0 cpu/m0/start.o
- .bss           0x0000000020305458        0x4 lib/libarm.a(board.o)
-                0x0000000020305458                zloader_entry_point
- .bss           0x000000002030545c        0x0 lib/libarm.a(string.o)
- .bss           0x000000002030545c        0x0 drivers/libdrivers.a(uart.o)
- .bss           0x000000002030545c        0x0 drivers/libdrivers.a(image.o)
- .bss           0x000000002030545c      0x104 drivers/libdrivers.a(secure_verify.o)
-                0x000000002030545c                result
- .bss           0x0000000020305560        0x4 drivers/libdrivers.a(spifc_loader2.o)
- .bss           0x0000000020305564       0x80 drivers/libdrivers.a(bbt.o)
- .bss           0x00000000203055e4        0x0 drivers/libdrivers.a(sha256.o)
- .bss           0x00000000203055e4       0x28 drivers/libdrivers.a(nor.o)
-                0x00000000203055e4                spi_nor_flash
-                0x00000000203055e8                otp_data
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(ddr.o)
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(drv_hash.o)
- .bss           0x000000002030560c        0x0 drivers/libdrivers.a(drv_rsa.o)
- .bss           0x000000002030560c       0x24 drivers/libdrivers.a(flash.o)
-                0x000000002030560c                flash
- .bss           0x0000000020305630        0x0 drivers/libdrivers.a(efuse.o)
- .bss           0x0000000020305630       0x10 cpu/m0/libm0.a(cpu.o)
-                0x0000000020305630                g_tick
-                0x0000000020305640                __bss_end = .
-                0x0000000020305640                . = ALIGN (0x4)
+ .bss           0x0000000020305694        0x0 cpu/m0/start.o
+ .bss           0x0000000020305694        0x4 lib/libarm.a(board.o)
+                0x0000000020305694                zloader_entry_point
+ .bss           0x0000000020305698        0x0 lib/libarm.a(string.o)
+ .bss           0x0000000020305698        0x0 drivers/libdrivers.a(uart.o)
+ .bss           0x0000000020305698        0x0 drivers/libdrivers.a(image.o)
+ .bss           0x0000000020305698      0x104 drivers/libdrivers.a(secure_verify.o)
+                0x0000000020305698                result
+ .bss           0x000000002030579c        0x4 drivers/libdrivers.a(spifc_loader2.o)
+ .bss           0x00000000203057a0       0x80 drivers/libdrivers.a(bbt.o)
+ .bss           0x0000000020305820        0x0 drivers/libdrivers.a(sha256.o)
+ .bss           0x0000000020305820       0x28 drivers/libdrivers.a(nor.o)
+                0x0000000020305820                spi_nor_flash
+                0x0000000020305824                otp_data
+ .bss           0x0000000020305848        0x0 drivers/libdrivers.a(ddr.o)
+ .bss           0x0000000020305848        0x0 drivers/libdrivers.a(drv_hash.o)
+ .bss           0x0000000020305848        0x0 drivers/libdrivers.a(drv_rsa.o)
+ .bss           0x0000000020305848       0x24 drivers/libdrivers.a(flash.o)
+                0x0000000020305848                flash
+ .bss           0x000000002030586c        0x0 drivers/libdrivers.a(efuse.o)
+ .bss           0x000000002030586c       0x10 cpu/m0/libm0.a(cpu.o)
+                0x000000002030586c                g_tick
+                0x000000002030587c                __bss_end = .
+                0x000000002030587c                . = ALIGN (0x4)
 
-.para           0x0000000082000000        0x0 加载地址 0x0000000020305640
+.para           0x0000000082000000        0x0 加载地址 0x000000002030587c
                 0x0000000082000000                __para_start = .
  *(.para)
                 0x0000000082000000                __para_end = .
@@ -353,56 +356,56 @@
 .stabstr        0x0000000000000000       0x67
  .stabstr       0x0000000000000000       0x67 cpu/m0/start.o
 
-.debug_info     0x0000000000000000     0x62d4
- .debug_info    0x0000000000000000      0x765 lib/libarm.a(board.o)
- .debug_info    0x0000000000000765      0x22b lib/libarm.a(string.o)
- .debug_info    0x0000000000000990      0x2a0 drivers/libdrivers.a(uart.o)
- .debug_info    0x0000000000000c30      0xd3c drivers/libdrivers.a(image.o)
- .debug_info    0x000000000000196c      0xb01 drivers/libdrivers.a(secure_verify.o)
- .debug_info    0x000000000000246d     0x1661 drivers/libdrivers.a(spifc_loader2.o)
- .debug_info    0x0000000000003ace      0x70f drivers/libdrivers.a(bbt.o)
- .debug_info    0x00000000000041dd      0x586 drivers/libdrivers.a(sha256.o)
- .debug_info    0x0000000000004763      0xd5f drivers/libdrivers.a(nor.o)
- .debug_info    0x00000000000054c2      0x329 drivers/libdrivers.a(ddr.o)
- .debug_info    0x00000000000057eb      0x1e8 drivers/libdrivers.a(drv_hash.o)
- .debug_info    0x00000000000059d3      0x3b4 drivers/libdrivers.a(drv_rsa.o)
- .debug_info    0x0000000000005d87      0x20f drivers/libdrivers.a(flash.o)
- .debug_info    0x0000000000005f96      0x1c3 drivers/libdrivers.a(efuse.o)
- .debug_info    0x0000000000006159      0x17b cpu/m0/libm0.a(cpu.o)
+.debug_info     0x0000000000000000     0x6536
+ .debug_info    0x0000000000000000      0x92d lib/libarm.a(board.o)
+ .debug_info    0x000000000000092d      0x22b lib/libarm.a(string.o)
+ .debug_info    0x0000000000000b58      0x2a0 drivers/libdrivers.a(uart.o)
+ .debug_info    0x0000000000000df8      0xdd6 drivers/libdrivers.a(image.o)
+ .debug_info    0x0000000000001bce      0xb01 drivers/libdrivers.a(secure_verify.o)
+ .debug_info    0x00000000000026cf     0x1661 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_info    0x0000000000003d30      0x70f drivers/libdrivers.a(bbt.o)
+ .debug_info    0x000000000000443f      0x586 drivers/libdrivers.a(sha256.o)
+ .debug_info    0x00000000000049c5      0xd5f drivers/libdrivers.a(nor.o)
+ .debug_info    0x0000000000005724      0x329 drivers/libdrivers.a(ddr.o)
+ .debug_info    0x0000000000005a4d      0x1e8 drivers/libdrivers.a(drv_hash.o)
+ .debug_info    0x0000000000005c35      0x3b4 drivers/libdrivers.a(drv_rsa.o)
+ .debug_info    0x0000000000005fe9      0x20f drivers/libdrivers.a(flash.o)
+ .debug_info    0x00000000000061f8      0x1c3 drivers/libdrivers.a(efuse.o)
+ .debug_info    0x00000000000063bb      0x17b cpu/m0/libm0.a(cpu.o)
 
-.debug_abbrev   0x0000000000000000     0x1c50
- .debug_abbrev  0x0000000000000000      0x2c9 lib/libarm.a(board.o)
- .debug_abbrev  0x00000000000002c9       0xb7 lib/libarm.a(string.o)
- .debug_abbrev  0x0000000000000380      0x19e drivers/libdrivers.a(uart.o)
- .debug_abbrev  0x000000000000051e      0x298 drivers/libdrivers.a(image.o)
- .debug_abbrev  0x00000000000007b6      0x274 drivers/libdrivers.a(secure_verify.o)
- .debug_abbrev  0x0000000000000a2a      0x48e drivers/libdrivers.a(spifc_loader2.o)
- .debug_abbrev  0x0000000000000eb8      0x281 drivers/libdrivers.a(bbt.o)
- .debug_abbrev  0x0000000000001139      0x20e drivers/libdrivers.a(sha256.o)
- .debug_abbrev  0x0000000000001347      0x280 drivers/libdrivers.a(nor.o)
- .debug_abbrev  0x00000000000015c7      0x12f drivers/libdrivers.a(ddr.o)
- .debug_abbrev  0x00000000000016f6       0xde drivers/libdrivers.a(drv_hash.o)
- .debug_abbrev  0x00000000000017d4      0x1e2 drivers/libdrivers.a(drv_rsa.o)
- .debug_abbrev  0x00000000000019b6       0xb5 drivers/libdrivers.a(flash.o)
- .debug_abbrev  0x0000000000001a6b      0x11d drivers/libdrivers.a(efuse.o)
- .debug_abbrev  0x0000000000001b88       0xc8 cpu/m0/libm0.a(cpu.o)
+.debug_abbrev   0x0000000000000000     0x1c94
+ .debug_abbrev  0x0000000000000000      0x304 lib/libarm.a(board.o)
+ .debug_abbrev  0x0000000000000304       0xb7 lib/libarm.a(string.o)
+ .debug_abbrev  0x00000000000003bb      0x19e drivers/libdrivers.a(uart.o)
+ .debug_abbrev  0x0000000000000559      0x2a1 drivers/libdrivers.a(image.o)
+ .debug_abbrev  0x00000000000007fa      0x274 drivers/libdrivers.a(secure_verify.o)
+ .debug_abbrev  0x0000000000000a6e      0x48e drivers/libdrivers.a(spifc_loader2.o)
+ .debug_abbrev  0x0000000000000efc      0x281 drivers/libdrivers.a(bbt.o)
+ .debug_abbrev  0x000000000000117d      0x20e drivers/libdrivers.a(sha256.o)
+ .debug_abbrev  0x000000000000138b      0x280 drivers/libdrivers.a(nor.o)
+ .debug_abbrev  0x000000000000160b      0x12f drivers/libdrivers.a(ddr.o)
+ .debug_abbrev  0x000000000000173a       0xde drivers/libdrivers.a(drv_hash.o)
+ .debug_abbrev  0x0000000000001818      0x1e2 drivers/libdrivers.a(drv_rsa.o)
+ .debug_abbrev  0x00000000000019fa       0xb5 drivers/libdrivers.a(flash.o)
+ .debug_abbrev  0x0000000000001aaf      0x11d drivers/libdrivers.a(efuse.o)
+ .debug_abbrev  0x0000000000001bcc       0xc8 cpu/m0/libm0.a(cpu.o)
 
-.debug_loc      0x0000000000000000     0x956d
- .debug_loc     0x0000000000000000      0x17b lib/libarm.a(board.o)
- .debug_loc     0x000000000000017b      0x29d lib/libarm.a(string.o)
- .debug_loc     0x0000000000000418      0x228 drivers/libdrivers.a(uart.o)
- .debug_loc     0x0000000000000640      0x6a2 drivers/libdrivers.a(image.o)
- .debug_loc     0x0000000000000ce2      0x790 drivers/libdrivers.a(secure_verify.o)
- .debug_loc     0x0000000000001472      0xef4 drivers/libdrivers.a(spifc_loader2.o)
- .debug_loc     0x0000000000002366      0x282 drivers/libdrivers.a(bbt.o)
- .debug_loc     0x00000000000025e8     0x5f3f drivers/libdrivers.a(sha256.o)
- .debug_loc     0x0000000000008527      0x80a drivers/libdrivers.a(nor.o)
- .debug_loc     0x0000000000008d31      0x2d8 drivers/libdrivers.a(ddr.o)
- .debug_loc     0x0000000000009009      0x1b8 drivers/libdrivers.a(drv_hash.o)
- .debug_loc     0x00000000000091c1      0x238 drivers/libdrivers.a(drv_rsa.o)
- .debug_loc     0x00000000000093f9       0x1f drivers/libdrivers.a(flash.o)
- .debug_loc     0x0000000000009418       0xab drivers/libdrivers.a(efuse.o)
- .debug_loc     0x00000000000094c3       0xaa cpu/m0/libm0.a(cpu.o)
+.debug_loc      0x0000000000000000     0x96e6
+ .debug_loc     0x0000000000000000      0x2f4 lib/libarm.a(board.o)
+ .debug_loc     0x00000000000002f4      0x29d lib/libarm.a(string.o)
+ .debug_loc     0x0000000000000591      0x228 drivers/libdrivers.a(uart.o)
+ .debug_loc     0x00000000000007b9      0x6a2 drivers/libdrivers.a(image.o)
+ .debug_loc     0x0000000000000e5b      0x790 drivers/libdrivers.a(secure_verify.o)
+ .debug_loc     0x00000000000015eb      0xef4 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_loc     0x00000000000024df      0x282 drivers/libdrivers.a(bbt.o)
+ .debug_loc     0x0000000000002761     0x5f3f drivers/libdrivers.a(sha256.o)
+ .debug_loc     0x00000000000086a0      0x80a drivers/libdrivers.a(nor.o)
+ .debug_loc     0x0000000000008eaa      0x2d8 drivers/libdrivers.a(ddr.o)
+ .debug_loc     0x0000000000009182      0x1b8 drivers/libdrivers.a(drv_hash.o)
+ .debug_loc     0x000000000000933a      0x238 drivers/libdrivers.a(drv_rsa.o)
+ .debug_loc     0x0000000000009572       0x1f drivers/libdrivers.a(flash.o)
+ .debug_loc     0x0000000000009591       0xab drivers/libdrivers.a(efuse.o)
+ .debug_loc     0x000000000000963c       0xaa cpu/m0/libm0.a(cpu.o)
 
 .debug_aranges  0x0000000000000000      0x1e0
  .debug_aranges
@@ -446,68 +449,68 @@
  .debug_ranges  0x00000000000001d8       0x28 drivers/libdrivers.a(drv_hash.o)
  .debug_ranges  0x0000000000000200       0x38 drivers/libdrivers.a(drv_rsa.o)
 
-.debug_line     0x0000000000000000     0x1f9e
- .debug_line    0x0000000000000000      0x303 lib/libarm.a(board.o)
- .debug_line    0x0000000000000303      0x152 lib/libarm.a(string.o)
- .debug_line    0x0000000000000455      0x112 drivers/libdrivers.a(uart.o)
- .debug_line    0x0000000000000567      0x3b8 drivers/libdrivers.a(image.o)
- .debug_line    0x000000000000091f      0x38e drivers/libdrivers.a(secure_verify.o)
- .debug_line    0x0000000000000cad      0x442 drivers/libdrivers.a(spifc_loader2.o)
- .debug_line    0x00000000000010ef      0x251 drivers/libdrivers.a(bbt.o)
- .debug_line    0x0000000000001340      0x2bb drivers/libdrivers.a(sha256.o)
- .debug_line    0x00000000000015fb      0x2a2 drivers/libdrivers.a(nor.o)
- .debug_line    0x000000000000189d      0x299 drivers/libdrivers.a(ddr.o)
- .debug_line    0x0000000000001b36       0x88 drivers/libdrivers.a(drv_hash.o)
- .debug_line    0x0000000000001bbe      0x117 drivers/libdrivers.a(drv_rsa.o)
- .debug_line    0x0000000000001cd5      0x10a drivers/libdrivers.a(flash.o)
- .debug_line    0x0000000000001ddf      0x118 drivers/libdrivers.a(efuse.o)
- .debug_line    0x0000000000001ef7       0xa7 cpu/m0/libm0.a(cpu.o)
+.debug_line     0x0000000000000000     0x2022
+ .debug_line    0x0000000000000000      0x387 lib/libarm.a(board.o)
+ .debug_line    0x0000000000000387      0x152 lib/libarm.a(string.o)
+ .debug_line    0x00000000000004d9      0x112 drivers/libdrivers.a(uart.o)
+ .debug_line    0x00000000000005eb      0x3b8 drivers/libdrivers.a(image.o)
+ .debug_line    0x00000000000009a3      0x38e drivers/libdrivers.a(secure_verify.o)
+ .debug_line    0x0000000000000d31      0x442 drivers/libdrivers.a(spifc_loader2.o)
+ .debug_line    0x0000000000001173      0x251 drivers/libdrivers.a(bbt.o)
+ .debug_line    0x00000000000013c4      0x2bb drivers/libdrivers.a(sha256.o)
+ .debug_line    0x000000000000167f      0x2a2 drivers/libdrivers.a(nor.o)
+ .debug_line    0x0000000000001921      0x299 drivers/libdrivers.a(ddr.o)
+ .debug_line    0x0000000000001bba       0x88 drivers/libdrivers.a(drv_hash.o)
+ .debug_line    0x0000000000001c42      0x117 drivers/libdrivers.a(drv_rsa.o)
+ .debug_line    0x0000000000001d59      0x10a drivers/libdrivers.a(flash.o)
+ .debug_line    0x0000000000001e63      0x118 drivers/libdrivers.a(efuse.o)
+ .debug_line    0x0000000000001f7b       0xa7 cpu/m0/libm0.a(cpu.o)
 
-.debug_str      0x0000000000000000     0x1565
- .debug_str     0x0000000000000000      0x4a7 lib/libarm.a(board.o)
-                                        0x518 (松开之前的大小)
- .debug_str     0x00000000000004a7       0x3f lib/libarm.a(string.o)
+.debug_str      0x0000000000000000     0x160a
+ .debug_str     0x0000000000000000      0x555 lib/libarm.a(board.o)
+                                        0x5cb (松开之前的大小)
+ .debug_str     0x0000000000000555       0x3f lib/libarm.a(string.o)
                                         0x214 (松开之前的大小)
- .debug_str     0x00000000000004e6       0xe2 drivers/libdrivers.a(uart.o)
+ .debug_str     0x0000000000000594       0xe2 drivers/libdrivers.a(uart.o)
                                         0x253 (松开之前的大小)
- .debug_str     0x00000000000005c8      0x35b drivers/libdrivers.a(image.o)
-                                        0x808 (松开之前的大小)
- .debug_str     0x0000000000000923      0x2f9 drivers/libdrivers.a(secure_verify.o)
+ .debug_str     0x0000000000000676      0x35b drivers/libdrivers.a(image.o)
+                                        0x854 (松开之前的大小)
+ .debug_str     0x00000000000009d1      0x2f9 drivers/libdrivers.a(secure_verify.o)
                                         0x61f (松开之前的大小)
- .debug_str     0x0000000000000c1c      0x3cc drivers/libdrivers.a(spifc_loader2.o)
+ .debug_str     0x0000000000000cca      0x3c3 drivers/libdrivers.a(spifc_loader2.o)
                                         0x6c1 (松开之前的大小)
- .debug_str     0x0000000000000fe8      0x103 drivers/libdrivers.a(bbt.o)
+ .debug_str     0x000000000000108d      0x103 drivers/libdrivers.a(bbt.o)
                                         0x3fe (松开之前的大小)
- .debug_str     0x00000000000010eb       0xc3 drivers/libdrivers.a(sha256.o)
+ .debug_str     0x0000000000001190       0xc3 drivers/libdrivers.a(sha256.o)
                                         0x2b7 (松开之前的大小)
- .debug_str     0x00000000000011ae      0x1ad drivers/libdrivers.a(nor.o)
+ .debug_str     0x0000000000001253      0x1ad drivers/libdrivers.a(nor.o)
                                         0x5f3 (松开之前的大小)
- .debug_str     0x000000000000135b       0x54 drivers/libdrivers.a(ddr.o)
+ .debug_str     0x0000000000001400       0x54 drivers/libdrivers.a(ddr.o)
                                         0x216 (松开之前的大小)
- .debug_str     0x00000000000013af       0x87 drivers/libdrivers.a(drv_hash.o)
+ .debug_str     0x0000000000001454       0x87 drivers/libdrivers.a(drv_hash.o)
                                         0x25a (松开之前的大小)
- .debug_str     0x0000000000001436       0x79 drivers/libdrivers.a(drv_rsa.o)
+ .debug_str     0x00000000000014db       0x79 drivers/libdrivers.a(drv_rsa.o)
                                         0x29c (松开之前的大小)
- .debug_str     0x00000000000014af       0x12 drivers/libdrivers.a(flash.o)
+ .debug_str     0x0000000000001554       0x12 drivers/libdrivers.a(flash.o)
                                         0x2a8 (松开之前的大小)
- .debug_str     0x00000000000014c1       0x20 drivers/libdrivers.a(efuse.o)
+ .debug_str     0x0000000000001566       0x20 drivers/libdrivers.a(efuse.o)
                                         0x255 (松开之前的大小)
- .debug_str     0x00000000000014e1       0x84 cpu/m0/libm0.a(cpu.o)
+ .debug_str     0x0000000000001586       0x84 cpu/m0/libm0.a(cpu.o)
                                         0x1f8 (松开之前的大小)
 
-.debug_frame    0x0000000000000000      0xa90
- .debug_frame   0x0000000000000000       0xb0 lib/libarm.a(board.o)
- .debug_frame   0x00000000000000b0       0x68 lib/libarm.a(string.o)
- .debug_frame   0x0000000000000118       0xc0 drivers/libdrivers.a(uart.o)
- .debug_frame   0x00000000000001d8       0xec drivers/libdrivers.a(image.o)
- .debug_frame   0x00000000000002c4       0xb0 drivers/libdrivers.a(secure_verify.o)
- .debug_frame   0x0000000000000374      0x23c drivers/libdrivers.a(spifc_loader2.o)
- .debug_frame   0x00000000000005b0       0xa0 drivers/libdrivers.a(bbt.o)
- .debug_frame   0x0000000000000650       0xbc drivers/libdrivers.a(sha256.o)
- .debug_frame   0x000000000000070c      0x1b0 drivers/libdrivers.a(nor.o)
- .debug_frame   0x00000000000008bc       0xac drivers/libdrivers.a(ddr.o)
- .debug_frame   0x0000000000000968       0x2c drivers/libdrivers.a(drv_hash.o)
- .debug_frame   0x0000000000000994       0x4c drivers/libdrivers.a(drv_rsa.o)
- .debug_frame   0x00000000000009e0       0x20 drivers/libdrivers.a(flash.o)
- .debug_frame   0x0000000000000a00       0x60 drivers/libdrivers.a(efuse.o)
- .debug_frame   0x0000000000000a60       0x30 cpu/m0/libm0.a(cpu.o)
+.debug_frame    0x0000000000000000      0xaf0
+ .debug_frame   0x0000000000000000      0x110 lib/libarm.a(board.o)
+ .debug_frame   0x0000000000000110       0x68 lib/libarm.a(string.o)
+ .debug_frame   0x0000000000000178       0xc0 drivers/libdrivers.a(uart.o)
+ .debug_frame   0x0000000000000238       0xec drivers/libdrivers.a(image.o)
+ .debug_frame   0x0000000000000324       0xb0 drivers/libdrivers.a(secure_verify.o)
+ .debug_frame   0x00000000000003d4      0x23c drivers/libdrivers.a(spifc_loader2.o)
+ .debug_frame   0x0000000000000610       0xa0 drivers/libdrivers.a(bbt.o)
+ .debug_frame   0x00000000000006b0       0xbc drivers/libdrivers.a(sha256.o)
+ .debug_frame   0x000000000000076c      0x1b0 drivers/libdrivers.a(nor.o)
+ .debug_frame   0x000000000000091c       0xac drivers/libdrivers.a(ddr.o)
+ .debug_frame   0x00000000000009c8       0x2c drivers/libdrivers.a(drv_hash.o)
+ .debug_frame   0x00000000000009f4       0x4c drivers/libdrivers.a(drv_rsa.o)
+ .debug_frame   0x0000000000000a40       0x20 drivers/libdrivers.a(flash.o)
+ .debug_frame   0x0000000000000a60       0x60 drivers/libdrivers.a(efuse.o)
+ .debug_frame   0x0000000000000ac0       0x30 cpu/m0/libm0.a(cpu.o)