From 9e88186e5fd87b0dd99faebcc4d72409efcb7c7c Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期五, 03 一月 2025 17:04:07 +0800
Subject: [PATCH] 加入支持通过uwb给基站基站升级

---
 dualboots_Gai_youhua_anbang_tag/src/customboot/customboot.c |   44 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/dualboots_Gai_youhua_anbang_tag/src/customboot/customboot.c b/dualboots_Gai_youhua_anbang_tag/src/customboot/customboot.c
index a27ce2a..1a818cd 100644
--- a/dualboots_Gai_youhua_anbang_tag/src/customboot/customboot.c
+++ b/dualboots_Gai_youhua_anbang_tag/src/customboot/customboot.c
@@ -117,11 +117,15 @@
     }
 
 }
+unsigned short int APP_byte = 0;
 unsigned short int updata_byte = 0;
 uint8_t trx_buf[10] = {0};
+int test1;
+int aaa;
+uint16_t finalbag;
 int main(void)
 {		uint8_t c;
-		
+		uint8_t zhongjian_shuju[128];
 	  //sys_tick_callback_set(systic_time_callback);
 		board_clock_run();
     board_pins_config();
@@ -172,10 +176,46 @@
 			//flash_write_nbytes(FLASH_ID0,APP_CONFIG_IAPFLAG_MAP,(uint8_t*)&tmp,2);//测试用
 //    SPIFlash_Read(SPI_FLASH_ID_0, (HIDO_UINT8*)&tmp, APP_CONFIG_IAPFLAG_MAP, sizeof(tmp)); MK8000修改
 			
-			flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2);
         while (flash_check_busy(FLASH_ID0))
         {
         }
+        flash_read(FLASH_ID0, APP_1OR2_ADRESS, (uint8_t*)&tmp, 2);
+        APP_byte = tmp;
+            if(APP_byte==0XDDDD)
+            {
+                Serial0PutString("进入搬运\r\n");
+                flash_erase(FLASH_ID0, APP_1OR2_ADRESS, 0x1000);//擦除APP
+                flash_read(FLASH_ID0, APP_1OR2_ADRESS, (uint8_t*)&tmp, 2);
+                APP_byte = tmp;
+                if(APP_byte==0XDDDD)
+                {
+				memcpy((void *)SRAM_BASE, (void *)APP_CONFIG_APPLICATION_ADDRESS, APP_CONFIG_APPLICATION_SIZE);//size太大导致覆盖没法跳转
+			    __set_MSP(*(uint32_t *)SRAM_BASE);
+					typedef void (*p_entry_t)(void);
+				((p_entry_t) (*(uint32_t *)(SRAM_BASE + 4) + SRAM_BASE))();
+                } 
+                Serial0PutString("擦除标注位成功\r\n");
+                test1=flash_erase(FLASH_ID0,APP1_ADRESS,FLASH_IAP_CTRL_MAP-APP1_ADRESS);
+                if(test1==0)
+                {
+                finalbag=((FLASH_IAP_CTRL_MAP-APP1_ADRESS)/128)+1;
+                for(aaa=0;aaa<finalbag;aaa++)
+                {
+                    time32_reset=0;
+                memcpy(&zhongjian_shuju,(void *)(APP2_ADRESS+(aaa*128)),128);
+                test1=flash_write_nbytes(FLASH_ID0, (APP1_ADRESS+(aaa*128)), (uint8_t*)&zhongjian_shuju, 128);
+                if(test1==0)
+                {Serial0PutString("test1=0\r\n");}
+                else
+                {Serial0PutString("test1=1\r\n");}
+                } 
+                delay_ms(10);
+                Serial0PutString("搬运成功,准备重启\r\n");
+                delay_ms(500);
+                NVIC_SystemReset();
+                }
+            }              
+    flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2);        
     updata_byte = tmp;//读取指定地址的值
     if(updata_byte == 0xAAAA)//判断此地址的值是否为0xAAAA,如果是则升级 
     {

--
Gitblit v1.9.3