From 928251d0f4e554e66ea2c7453fe06de6675ae16e Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期三, 26 三月 2025 14:49:41 +0800
Subject: [PATCH] 去掉ota,单独搞ota文件

---
 keil/include/src/OTA.c |   57 ++++++++++++++++++++++++++-------------------------------
 1 files changed, 26 insertions(+), 31 deletions(-)

diff --git a/keil/include/src/OTA.c b/keil/include/src/OTA.c
index 9937e0f..f1e4d1e 100644
--- a/keil/include/src/OTA.c
+++ b/keil/include/src/OTA.c
@@ -19,10 +19,12 @@
 #include "Internet.h"
 #include "mk_flash.h"
 #include "mk_trace.h"
+#include <global_param.h>
+#include <serial_at_cmd_app.h>
 /*******************************************************************************
  *                                  Macro                                      *
  *******************************************************************************/
-#define MAX_REQUEST_SIZE                    (30 * 1024)
+#define MAX_REQUEST_SIZE                    (5 * 1024)
 #define APP2_ADRESS 0x0402f000
 #define APP_SIZE 0x04080000-APP2_ADRESS
 
@@ -40,9 +42,9 @@
 /*******************************************************************************
  *                             Local Variable                                  *
  *******************************************************************************/
-static HIDO_CHAR  l_acOTAUrl[128];
+static HIDO_CHAR  l_acOTAUrl[256];
 static HIDO_UINT32 l_u32OTATimerID = 0;
-static E_OTAState l_eOTAState = OTA_STATE_IDLE;
+static volatile E_OTAState l_eOTAState = OTA_STATE_IDLE;
 static HIDO_UINT32 l_u32OTARetryCnt = 0;
 static HIDO_UINT32 l_u32OTAFileRecvLen = 0;
 static HIDO_UINT32 l_u32OTAFileSize = 0;
@@ -164,7 +166,7 @@
 #if 0
                 SPIFlash_Write(SPI_FLASH_ID_0, APP_CONFIG_APP_DOWN_LOAD_SPIFLASH_ADDRESS + l_u32OTAFileRecvLen, _pu8Data, _u32Len);
 #else
-								flash_write_nbytes(FLASH_ID0, APP2_ADRESS + l_u32OTAFileRecvLen, _pu8Data, _u32Len);
+                flash_write_nbytes(FLASH_ID0, APP2_ADRESS + l_u32OTAFileRecvLen, _pu8Data, _u32Len);
 #endif
                 l_u32OTAFileRecvLen += _u32Len;
                 LOG_INFO(TRACE_MODULE_APP,"OTAFileDownload %u/%u\r\n", l_u32OTAFileRecvLen, l_u32OTAFileSize);
@@ -183,7 +185,19 @@
 //#endif
 									  // HAL_Delay(10);
                     // Reboot(0);
-                    
+                    uint32_t result = 0;
+                    uint16_t tmp = 0xCCCC;
+                    __disable_irq();
+                    result = flash_open(FLASH_ID0,NULL);
+                    if(!result)//打开成功
+                        flash_erase(FLASH_ID0,APP_CONFIG_IAPFLAG_SECTOR_ADDR,FLASH_SECTOR_SIZE);
+                    result = flash_write_nbytes(FLASH_ID0,APP_CONFIG_IAPFLAG_MAP,(uint8_t*)&tmp,2);
+                    __enable_irq();
+                    Serial0PutString("进入升级模式\r\n");
+                    g_com_map[CNT_UPDATE]=0;
+                    save_com_map_to_flash();
+                    delay_us(100000);
+                    NVIC_SystemReset(); //软复位回到bootloader
                     break;
                 }
 
@@ -227,9 +241,10 @@
     SPIFlash_Write(SPI_FLASH_ID_0, APP_CONFIG_IAPFLAG_MAP, (HIDO_UINT8*)&tmp, sizeof(tmp)); 
     SPIFlash_Erase(SPI_FLASH_ID_0, APP_CONFIG_IAP_PARAM_MAP, 256, SPI_FLASH_SECTOR_ERASE_MODE_4K);  
 #endif
-    // delay_ms(10);
-    // Reboot(0);
-    NVIC_SystemReset();
+//    g_com_map[OTA_FLAG]=0;
+//    save_com_map_to_flash();
+//    delay_us(100000);
+    NVIC_SystemReset(); //软复位回到bootloader
     
     return HIDO_OK;
 }
@@ -316,7 +331,7 @@
     SPIFlash_Erase(SPI_FLASH_ID_0, APP_CONFIG_APP_DOWN_LOAD_SPIFLASH_ADDRESS,
             APP_CONFIG_APP_DOWN_LOAD_SPIFLASH_SIZE, SPI_FLASH_SECTOR_ERASE_MODE_64K);
 #else
-		flash_erase(FLASH_ID0,APP2_ADRESS,APP_SIZE);
+    flash_erase(FLASH_ID0,APP2_ADRESS,APP_SIZE);
 #endif
     /* 请求升级文件长度 */
     if(OTA_RequestFileLen() != HIDO_OK)
@@ -347,8 +362,6 @@
     return HIDO_OK;
 }
 
-static HIDO_CHAR url[256 + 1];
-
 /*******************************************************************************
  * Function Name     : OTA_Poll
  * Description       :
@@ -367,7 +380,7 @@
     
     if(l_eOTAState == OTA_STATE_IDLE)
     {
-        OTA_SetUp(url);
+        OTA_SetUp(l_acOTAUrl);
     }
     
     return HIDO_OK;
@@ -387,25 +400,7 @@
     l_eOTAState = OTA_STATE_IDLE;
     HIDO_TimerCreate(&l_u32OTATimerID);
     
-    HIDO_DataStruct stHost;
-    HIDO_DataStruct stPath;
-    HIDO_UINT32 u32Port = 0;
-
-#if 0	
-    SPIFlash_Read(SPI_FLASH_ID_0, url, APP_CONFIG_IAP_PARAM_MAP, sizeof(url) - 1);
-#endif
-	
-    url[256] = '\0';
-    
-    if(HIDO_UtilParseFormat((HIDO_UINT8 *)_pcUrl, sizeof(url), "http://%p:%d/%p", &stHost, &u32Port, &stPath) != 3)
-    {
-        u32Port = 80;
-
-        if (HIDO_UtilParseFormat((HIDO_UINT8 *) _pcUrl, sizeof(url), "http://%p/%p", &stHost, &stPath) != 2)
-        {
-            OTA_Failed();
-        }
-    }
+    OTA_SetUp(_pcUrl);
     
     return HIDO_OK;
 }

--
Gitblit v1.9.3