[MTK项目] 6.0mOTA升级失败分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档