1. 程式人生 > >onenet程式碼突然FOTA升級失敗問題

onenet程式碼突然FOTA升級失敗問題

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。