| | |
| | | *******************************************************************************/ |
| | | #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 * |
| | | *******************************************************************************/ |
| | |
| | | * 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) |
| | | { |
| | |
| | | //#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); |
| | |
| | | static HIDO_INT32 OTA_Failed(void) |
| | | { |
| | | /* 升级参数有误,取消升级 */ |
| | | HIDO_UINT16 tmp = 0xFFFF; |
| | | |
| | | // HIDO_Debug("goto app application\r\n"); |
| | | |
| | | // 执行到这里,说明文件下载失败了,需要进一步处理 |
| | |
| | | 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; |
| | |
| | | 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) |