WXK
2025-03-26 adf39f48b3c6a26db6a8c8ccb455c6addb8dc359
keil/include/src/OTA.c
@@ -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,18 +186,16 @@
//#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_MAP, 2);//擦除APPFLAG
                    flash_write_nbytes(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, sizeof(tmp));
                    }
                    __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;
                }
@@ -231,8 +230,6 @@
static HIDO_INT32 OTA_Failed(void)
{
    /* 升级参数有误,取消升级 */
    HIDO_UINT16 tmp = 0xFFFF;
//    HIDO_Debug("goto app application\r\n");
      // 执行到这里,说明文件下载失败了,需要进一步处理
@@ -241,9 +238,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_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;