onenet程式碼突然FOTA升級失敗問題
阿新 • • 發佈:2018-11-19
1. 失敗回覆事件41,下載失敗。先檢查一下是不是下載包的函數出了問題,難道是我漏了什麼嗎?果然是下面的下載失敗,為什麼會下載失敗?還是需要檢視下失敗的錯誤程式碼
ret = ota_package_download(LENGTH, buffer, size, NULL); if(ret != NEUL_UPDATE_RET_OK) { app_at_send_at_rsp_string_lines_with_claim_and_log("DL FAIL"); cb->onEvent(cissys_event_write_fail,NULL,cb->userData,NULL);//writeCallback = 2; return 0; }
2. 難道是空間不夠了?暫時遮蔽下面的程式碼,關閉了DM功能,還是失敗,似乎不是空間不夠,哪裡出了問題?先檢查底層的幾個函式
// if(neul_kv_set(LWM2M_NEW_MESSAGE_ID, (uint8 *)&g_coap_mid, sizeof(unsigned short))!= NEUL_RET_OK )
// if (get_random((uint8 *)&g_coap_mid, sizeof(unsigned short)) != NEUL_RET_OK)
3. 難道是我修改了時間的原因,難道是平臺有問題?難道是任務的堆疊不夠了?在什麼也不修改,還是會有問題?
bool cissys_updateFirmware (cissys_callback_t *cb) { uint8 ret = 0; app_at_send_at_rsp_string_lines_with_claim_and_log("update start"); cissys_sleepms(4000);
4. 寫錯誤的暫時沒發現,那麼接下來是校驗的函式,如果是檢驗包的錯誤,可能是差分包的生成工具有問題吧?打印出了FV FAIL,重新檢查FOTA CREATE這個工具,同時在下面的函式加了兩秒的延時,奇怪為啥會校驗失敗?難道就是這裡加延時的原因?
bool cissys_checkFwValidation(cissys_callback_t *cb) { UNUSED(cb); NEUL_UPDATE_OTA_PACKAGE_STATUS pkg_status = NEUL_UPDATE_OTA_PACKAGE_NOT_DOWNLOADED; (void)neul_update_get_update_status(&pkg_status); if(pkg_status == 0) { cb->onEvent(cissys_event_fw_validate_success,0,cb->userData,NULL); } else { app_at_send_at_rsp_string_lines_with_claim_and_log("FV FAIL"); cb->onEvent(cissys_event_fw_validate_fail,0,cb->userData,NULL); } //validateCallback = 2; return true; }
5. 是因為上面加延時,還是FOTA creater的原因?其中成功了一次,但是後面失敗了,錯誤回覆5,其中又一次成功了,很奇怪
NEUL_UPDATE_OTA_PACKAGE_VERSION_MISMATCHED, //!< Old version in package mismatched.
生成的差分包有時候是2K,有時候是8K,奇怪。而且目前好像只成功了一次,這樣吧,試下老的fota creater。