[MTK项目] 6.0mOTA升级失败分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Command: "/sbin/recovery" "--update_package=@/cache/recovery/block.map" "--locale=zh_CN"
Supported API: 3
update_package = @/cache/recovery/block.map
I:Finding update package...
I:Update location: @/cache/recovery/block.map
Opening update package...
E:failed to map file
E:install package error, result = 2
The update.zip is corrupted
Installation aborted.
OTA failed! Please power off the device to keep it in this state and file a bug report! write result : MOTA_RESULT_FILE
write result : remove_mota_file
write result : remove_mota_file(DEFAULT_MOTA_FILE)
Supported API: 3
update_package = NULL
I:no boot messages recovery
I:[1]check the otaupdate is done!
I:Saving locale "zh_CN"
升级失败和升级成功的log差异再次
update_package 是否为空
MTK搜索
[FAQ17442][Recovery][Common]Android M 版本
data加密后升级包放入/data分区如何升级?
[DESCRIPTION]
Android M 版本,data加密后,开启MTK_SHARED_SDCARD并把升级包放入内卡;或者有需要把升级包放入/data分区来升级,一般这种情况,直接按键进入recovery
mode,选择apply from sdcard来实现升级,是行不通的,建议在验证升级时,使用
adb 命令的方式升级。
[SOLUTION]
步骤如下:
1、在normal mode先把升级包(update.zip) push 到data分区目,比如
/data/update.zip.
2、adb shell 下执行:system/bin/uncrypt /data/update.zip
/cache/recovery/block.map
注意:要等待一段时间,直到命令执行退出…,然后在执行如下命令;
3、adb shell echo \"--update_package=@/cache/recovery/block.map\" >
/cache/recovery/command
4、adb reboot recovery
最后手机reboot进入recovery mode开始升级,如果以上各个步骤遇到问题,或者不
能升级,欢迎提eservice联系mediatek。
可以看出这里应该和加密版本有关系,加密版本的OTA在线升级的逻辑和SD卡的升级逻辑不通
通过log也能看出
sd卡升级是没有走这边的解析和update_package赋值的
关键逻辑update_package=打出位置位于recovery.cpp
main函数下:
update_package=mt_main_init_fota(update_package);
fprintf(stdout, "update_package = %s\n", update_package ? update_package : "NULL");
Command: "/sbin/recovery" "--update_package=@/cache/recovery/block.map" "--locale=zh_CN"
打印位置:
printf("Command:");
for (arg = 0; arg < argc; arg++) {
printf(" \"%s\"", argv[arg]);
}
printf("\n");
如下是正常升级成功的
is_gpt = 1
gpt prefix is /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name
I:no boot messages
I:Open /cache/recovery/command fail errno = No such file or directory
locale is [zh_CN]
stage is []
reason is [(null)]
cannot find/open a drm device: No such file or directory
fb0 reports (possibly inaccurate):
如下是正常升级出问题的
is_gpt = 1
gpt prefix is /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name
I:no boot messages
I:Got arguments from /cache/recovery/command