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