From 1cf09c6c4a137d29f63fd8df3c0ca16b9329079e Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期四, 17 四月 2025 16:25:52 +0800 Subject: [PATCH] 适配最新boot,适配4g工卡 --- keil/include/src/OTA.c | 44 +++++++++++++++++++++++++------------------- 1 files changed, 25 insertions(+), 19 deletions(-) diff --git a/keil/include/src/OTA.c b/keil/include/src/OTA.c index f1e4d1e..02fb7bf 100644 --- a/keil/include/src/OTA.c +++ b/keil/include/src/OTA.c @@ -26,8 +26,8 @@ *******************************************************************************/ #define MAX_REQUEST_SIZE (5 * 1024) #define APP2_ADRESS 0x0402f000 -#define APP_SIZE 0x04080000-APP2_ADRESS - +//#define APP_SIZE 0x04080000-APP2_ADRESS +#define APP_CONFIG_APPLICATION_SIZE 0x19000 //4K对齐 /******************************************************************************* * Type Definition * *******************************************************************************/ @@ -128,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) { @@ -185,20 +186,19 @@ //#endif // HAL_Delay(10); // Reboot(0); - uint32_t result = 0; - uint16_t tmp = 0xCCCC; + uint16_t tmp = 0xBBBB; __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); + result1=flash_open(FLASH_ID0,NULL); + if(!result1) + { + flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);//擦除APPFLAG + flash_write_nbytes(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, sizeof(tmp)); + flash_erase(FLASH_ID0, APP_CONFIG_IAP_PARAM_MAP, FLASH_SECTOR_SIZE);//擦除APPFLAG + } __enable_irq(); - Serial0PutString("进入升级模式\r\n"); - g_com_map[CNT_UPDATE]=0; - save_com_map_to_flash(); - delay_us(100000); + delay_us(1000000); NVIC_SystemReset(); //软复位回到bootloader - break; + break; } OTA_RequestFileData(l_u32OTAFileRecvLen); @@ -231,8 +231,6 @@ static HIDO_INT32 OTA_Failed(void) { /* 升级参数有误,取消升级 */ - HIDO_UINT16 tmp = 0xFFFF; - // HIDO_Debug("goto app application\r\n"); // 执行到这里,说明文件下载失败了,需要进一步处理 @@ -241,9 +239,17 @@ 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 -// g_com_map[OTA_FLAG]=0; -// save_com_map_to_flash(); -// delay_us(100000); + uint16_t tmp = 0xFFFF; + __disable_irq(); + result1=flash_open(FLASH_ID0,NULL); + if(!result1) + { + flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);//擦除APPFLAG + flash_write_nbytes(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, sizeof(tmp)); + flash_erase(FLASH_ID0, APP_CONFIG_IAP_PARAM_MAP, FLASH_SECTOR_SIZE);//擦除APPFLAG + } + __enable_irq(); + delay_us(1000000); NVIC_SystemReset(); //软复位回到bootloader return HIDO_OK; @@ -331,7 +337,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_CONFIG_APPLICATION_SIZE); #endif /* 请求升级文件长度 */ if(OTA_RequestFileLen() != HIDO_OK) -- Gitblit v1.9.3