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。

猜你喜欢

转载自www.cnblogs.com/429512065qhq/p/9975461.html