From adf39f48b3c6a26db6a8c8ccb455c6addb8dc359 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期三, 26 三月 2025 18:40:04 +0800 Subject: [PATCH] 111111111,不跑at,交给外包 --- keil/include/src/OTA.c | 68 +++++++++++++++++----------------- 1 files changed, 34 insertions(+), 34 deletions(-) diff --git a/keil/include/src/OTA.c b/keil/include/src/OTA.c index 9937e0f..bc8ab14 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; @@ -126,6 +128,7 @@ * Author : www.hido-studio.com * Modified Date: : 2020年9月13日 *******************************************************************************/ +uint8_t result1; static HIDO_INT32 OTA_HTTPGetFileCallBack(HIDO_UINT32 _u32RespCode, ST_HTTPGetFileResponse *_pstResponse, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len, HIDO_VOID *_pArg) { @@ -164,7 +167,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,8 +186,18 @@ //#endif // HAL_Delay(10); // Reboot(0); - - break; + uint16_t tmp = 0xBBBB; + __disable_irq(); + result1=flash_open(FLASH_ID0,NULL); + if(!result1) + { + flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, 2);//擦除APPFLAG + flash_write_nbytes(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, sizeof(tmp)); + } + __enable_irq(); + delay_us(1000000); + NVIC_SystemReset(); //软复位回到bootloader + break; } OTA_RequestFileData(l_u32OTAFileRecvLen); @@ -217,8 +230,6 @@ static HIDO_INT32 OTA_Failed(void) { /* 升级参数有误,取消升级 */ - HIDO_UINT16 tmp = 0xFFFF; - // HIDO_Debug("goto app application\r\n"); // 执行到这里,说明文件下载失败了,需要进一步处理 @@ -227,9 +238,18 @@ 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(); + uint16_t tmp = 0xFFFF; + __disable_irq(); + result1=flash_open(FLASH_ID0,NULL); + if(!result1) + { + flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, 2);//擦除APPFLAG + flash_write_nbytes(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, sizeof(tmp)); + flash_erase(FLASH_ID0, APP_CONFIG_IAP_PARAM_MAP, 256);//擦除APPFLAG + } + __enable_irq(); + delay_us(1000000); + NVIC_SystemReset(); //软复位回到bootloader return HIDO_OK; } @@ -316,7 +336,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 +367,6 @@ return HIDO_OK; } -static HIDO_CHAR url[256 + 1]; - /******************************************************************************* * Function Name : OTA_Poll * Description : @@ -367,7 +385,7 @@ if(l_eOTAState == OTA_STATE_IDLE) { - OTA_SetUp(url); + OTA_SetUp(l_acOTAUrl); } return HIDO_OK; @@ -387,25 +405,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