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。