Hi Faye, 你好。 我就是参考了https://github.com/espressif/ESP8266_IOT_PLATFORM/tree/master/upgrade,它里面就有为fota任务起一个超时定时器,但是我实际测算发现这个定时器超时会导致系统崩溃重启。 你可以帮忙看看我附件中所带的代码吗?谢谢
Regards Bobby
Statistics: Posted by bobby_jiang — Wed Jun 22, 2016 2:05 pm
但是,我发现在回调upgrade_check()中无法关闭在fota任务中创建的socket,并且会导致程序崩溃重启。 void upgrade_check(void *parm) { int ret; /*network not stable, upgrade data lost, this may be called*/ os_timer_disarm(&upgrade_timer); fotaNewFwReady = 0; system_upgrade_flag_set(UPGRADE_FLAG_IDLE); if(fota_socket>0){ ret=closesocket(fota_socket); if(ret!=0){ printf("timer callback::close socket failed!\r\n"); } fota_socket=0; } if(xFotaCmdTaskHandle!=NULL){ vTaskDelete(xFotaCmdTaskHandle); xFotaCmdTaskHandle=NULL; } /*take too long to finish,fail*/