From ec8d487264ac58ebaa00cf99675528e85c6113d0 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期三, 13 八月 2025 09:56:46 +0800
Subject: [PATCH] boot开发完成

---
 dualboots_Gai_youhua/src/customboot/customboot.c |  165 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 92 insertions(+), 73 deletions(-)

diff --git a/dualboots_Gai_youhua/src/customboot/customboot.c b/dualboots_Gai_youhua/src/customboot/customboot.c
index 98f8fbf..e8309c3 100644
--- a/dualboots_Gai_youhua/src/customboot/customboot.c
+++ b/dualboots_Gai_youhua/src/customboot/customboot.c
@@ -158,15 +158,15 @@
 		board_clock_run();
      calib_chip();
     gpio_open();
-    board_pins_config();
+//    board_pins_config();
 		//board_debug_console_open(TRACE_PORT_UART0);
 		// Chip calibration
 //    calib_chip();
-    sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback);
-    sleep_timer_start(__MS_TO_32K_CNT(100));//测试
+//    sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback);
+//    sleep_timer_start(__MS_TO_32K_CNT(100));//测试
 		// Disable watchdog timer
-    wdt_close(WDT_ID0);
-		wdt_open(WDT_ID0,&app_wdt_cfg);//30s检测喂狗
+//    wdt_close(WDT_ID0);
+//		wdt_open(WDT_ID0,&app_wdt_cfg);//30s检测喂狗
 		//LOG_INFO(TRACE_MODULE_APP, "进入Bootloader串口升级\r\n");
 //		gpio_open();
     board_configure();
@@ -191,15 +191,15 @@
 		 //uart_receive(UART_ID1, trx_buf, 1, uart_receive_callback);
 //		 SerialPutString("MK8000-BootLoader-V1.1启动\r\n");
 		 //Serial0PutString("MK8000-BootLoader-V1.0启动\r\n");
-        delay_ms(200);
-    start_timer=time_100ms;
-    while(time_100ms<start_timer+5)
-    {
-         if (Receive_Byte(&c, 0x100000) == 0)//返回0成功收取数据,-1为没收到数据
-          { 
-              usartdata_process(c);
-          }
-    }
+//        delay_ms(200);
+//    start_timer=time_100ms;
+//    while(time_100ms<start_timer+5)
+//    {
+//         if (Receive_Byte(&c, 0x100000) == 0)//返回0成功收取数据,-1为没收到数据
+//          { 
+//              usartdata_process(c);
+//          }
+//    }
 //    uart_close(UART_ID1);
 //    uart1_change_shouhuan();
 //    uart_open(UART_ID1, &test_uart_cfg);
@@ -247,10 +247,10 @@
 //    uart_open(UART_ID1, &test_uart_cfg);    
 //    }
     
-    SerialPutString("MK8000-BootLoader-V1.2启动\r\n");
+//    SerialPutString("MK8000-BootLoader-V1.2启动\r\n");
 		while(1)
 		{
-			wdt_ping(WDT_ID0);//喂狗
+//			wdt_ping(WDT_ID0);//喂狗
 			uint16_t tmp = 0;
 //			tmp=0xAAAA;//测试用
 			//flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);
@@ -264,9 +264,9 @@
     updata_byte = tmp;//读取指定地址的值
     if(updata_byte == 0xAAAA)//判断此地址的值是否为0xAAAA,如果是则 升级 
     {
-        SerialPutString("串口升级启动\r\n");
-			
-        Main_Menu();
+//        SerialPutString("串口升级启动\r\n");
+//			
+//        Main_Menu();
     }
     else if(updata_byte == 0xBBBB)//判断此地址的值是否为0xBBBB,如果是则网络升级
     {       
@@ -279,77 +279,96 @@
         SerialPutString("OTA完成,解密文件启动\r\n");
         SerialPutString("OTA固件解压\r\n");
 
-        aesDecInit();
-         
-                flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);//擦除APP
-                flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2);
-                APP_byte = tmp;
-                if(APP_byte==0XBBBB)
-                {
-                uart_close(UART_ID1);
-                delay_ms(200);
-				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))();
-                } 
-                SerialPutString("擦除标注位成功\r\n");
-                test1=flash_erase(FLASH_ID0,APP1_ADRESS,APP_CONFIG_APPLICATION_SIZE);
-                if(test1==0)
-                {
-                finalbag=(APP_CONFIG_APPLICATION_SIZE/128)+1;
-//                    wdt_close(WDT_ID0);
-                for(aaa=0;aaa<finalbag;aaa++)
-                {
-//                        time32_reset=0;
-                    memcpy(&zhongjian_shuju,(void *)(APP2_ADRESS+(aaa*128)),128);
-                        
-                    for(ii = 0; ii < sizeof(zhongjian_shuju); ii += 16)
-                    {aesDecrypt(&zhongjian_shuju[ii],key);}
-                    
-                    test1=flash_write_nbytes(FLASH_ID0, (APP1_ADRESS+(aaa*128)), zhongjian_shuju, sizeof(zhongjian_shuju));
-//                    if(test1==0)
-//                    {SerialPutString("解密成功\r\n");}
-//                    else
-//                    {SerialPutString("解密失败\r\n");}
-                    wdt_ping(WDT_ID0);//喂狗
-                    shengji_time_100ms=0;
-                } 
-                delay_ms(10);
-                SerialPutString("OTA解密成功,准备重启\r\n");
-                delay_ms(500);
-                NVIC_SystemReset();
-                }
+//        aesDecInit();
+//         
+//                flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);//擦除APP
+//                flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2);
+//                APP_byte = tmp;
+//                if(APP_byte==0XBBBB)
+//                {
+//                uart_close(UART_ID1);
+//                delay_ms(200);
+//				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))();
+//                } 
+//                SerialPutString("擦除标注位成功\r\n");
+//                test1=flash_erase(FLASH_ID0,APP1_ADRESS,APP_CONFIG_APPLICATION_SIZE);
+//                if(test1==0)
+//                {
+//                finalbag=(APP_CONFIG_APPLICATION_SIZE/128)+1;
+////                    wdt_close(WDT_ID0);
+//                for(aaa=0;aaa<finalbag;aaa++)
+//                {
+////                        time32_reset=0;
+//                    memcpy(&zhongjian_shuju,(void *)(APP2_ADRESS+(aaa*128)),128);
+//                        
+//                    for(ii = 0; ii < sizeof(zhongjian_shuju); ii += 16)
+//                    {aesDecrypt(&zhongjian_shuju[ii],key);}
+//                    
+//                    test1=flash_write_nbytes(FLASH_ID0, (APP1_ADRESS+(aaa*128)), zhongjian_shuju, sizeof(zhongjian_shuju));
+////                    if(test1==0)
+////                    {SerialPutString("解密成功\r\n");}
+////                    else
+////                    {SerialPutString("解密失败\r\n");}
+//                    wdt_ping(WDT_ID0);//喂狗
+//                    shengji_time_100ms=0;
+//                } 
+//                delay_ms(10);
+//                SerialPutString("OTA解密成功,准备重启\r\n");
+//                delay_ms(500);
+//                NVIC_SystemReset();
+//                }
 				
 	}
     else if(updata_byte == 0xCCCC)//OTA
     {
 
         SerialPutString("进入OTA,升级启动\r\n");        
-        delay_ms(100);
+//        delay_ms(100);
+//        uart_close(UART_ID1);
+//        gpio_close();
+//        sleep_timer_close();
+//        __disable_irq();
+//        delay_ms(500);
+//        memcpy((void *)SRAM_BASE, (void *)OTA_ADRESS, 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))();
+//        delay_ms(100);
+//        flash_close(FLASH_ID0);
+//        __enable_irq();
+//                Serial0PutString("进入OTA\r\n");
+    }
+    else if(updata_byte == 0xDDDD)//跳转LORA升级
+    {
+
+//        SerialPutString("进入OTA,升级启动\r\n");        
+//        delay_ms(100);
         uart_close(UART_ID1);
         gpio_close();
-        sleep_timer_close();
-        __disable_irq();
-        delay_ms(500);
+//        sleep_timer_close();
+//        __disable_irq();
+//        delay_ms(500);
         memcpy((void *)SRAM_BASE, (void *)OTA_ADRESS, 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))();
-        delay_ms(100);
-        flash_close(FLASH_ID0);
-        __enable_irq();
+//        delay_ms(100);
+//        flash_close(FLASH_ID0);
+//        __enable_irq();
 //                Serial0PutString("进入OTA\r\n");
     }
     else  //
     {	
-        SerialPutString("准备跳转app\r\n");
-        delay_ms(100);
+//        SerialPutString("准备跳转app\r\n");
+//        delay_ms(100);
         uart_close(UART_ID1);
         gpio_close();
-        sleep_timer_close();
-        __disable_irq();
-        delay_ms(500);
+//        sleep_timer_close();
+//        __disable_irq();
+//        delay_ms(500);
         //Delay_ms(1000); 
         /* Test if user code is programmed starting from address "APP_CONFIG_APPLICATION_ADDRESS" */
 		 //Serial0PutString("跳转APPhehe\r\n");
@@ -360,7 +379,7 @@
 					typedef void (*p_entry_t)(void);
 				((p_entry_t) (*(uint32_t *)(SRAM_BASE + 4) + SRAM_BASE))();
         
-        delay_ms(100);
+//        delay_ms(100);
 //        flash_close(FLASH_ID0);
 //        __enable_irq();
         //IAP_JumpTo(SRAM_BASE);

--
Gitblit v1.9.3