| | |
| | | #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 |
| | | |
| | |
| | | /******************************************************************************* |
| | | * 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; |
| | |
| | | #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); |
| | |
| | | //#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; |
| | | } |
| | | |
| | |
| | | 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; |
| | | } |
| | |
| | | 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) |
| | |
| | | return HIDO_OK; |
| | | } |
| | | |
| | | static HIDO_CHAR url[256 + 1]; |
| | | |
| | | /******************************************************************************* |
| | | * Function Name : OTA_Poll |
| | | * Description : |
| | |
| | | |
| | | if(l_eOTAState == OTA_STATE_IDLE) |
| | | { |
| | | OTA_SetUp(url); |
| | | OTA_SetUp(l_acOTAUrl); |
| | | } |
| | | |
| | | return HIDO_OK; |
| | |
| | | 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; |
| | | } |