recovery恢复工程设置的时候时间过长且有黑屏问题分析

recovery恢复工程设置的时候时间过长且有黑屏问题分析_第1张图片

最近,遇到个recovery恢复工程设置的时候时间过长且有黑屏问题分。

以前没有遇见过这个问题,最近的软件的版本才暴露出来。

通过版本回退,发现没有发现什么致命的修改。

 * FACTORY RESET
 * 1. user selects "factory reset"
 * 2. main system writes "--wipe_data" to /cache/recovery/command
 * 3. main system reboots into recovery
 * 4. get_args() writes BCB with "boot-recovery" and "--wipe_data"
 *    -- after this, rebooting will restart the erase --
 * 5. erase_volume() reformats /data
 * 6. erase_volume() reformats /cache
 * 7. finish_recovery() erases BCB
 *    -- after this, rebooting will restart the main system --
 * 8. main() calls reboot() to boot main system

recovery恢复工程设置中,最重要的两个操作:

1  format   :  /data   和  /cache分区

2  make_ext4 或 yaffs2 ,重建文件系统分区

首先分析恢复工程设置时间过长的问题:

最后通过,kernel及应用层打印时间,发现瓶颈在:

#if defined(CACHE_MERGE_SUPPORT)
        int result = make_ext4fs(v->device, v->length, target_volume, sehandle);
#else
        int result = make_ext4fs(v->device, v->length, volume, sehandle);
#endif

但是,从来没有修改过此函数,呵呵,其实也没有能力修改到这个部分。

最后,通过对比另一台手机(不同EMMC,但是都是SAMSUNG的),发现另一台手机的时间少了很多

几乎是:  几秒 同  60 秒的区别。

由于软件一模一样,只是机器设备不一样(EMMC不同),由此确定是EMMC的不同导致性能相差很多,马上联系FAE,确认此问题点是否有改善的余地。

 

对于第二个问题,一直黑屏的问题:

    ui->SetBackground(RecoveryUI::ERASING);
    ui->SetProgressType(RecoveryUI::INDETERMINATE);
    //ui->Print("Formatting %s...\n", volume);

由于多言语的问题(如俄罗斯客户不希望看到英语等等,反正客户要求的就是正确的)

//ui->Print("Formatting %s...\n", volume);

把上面这句话,屏蔽掉了,导致界面不刷新,保持之前黑屏的样子

又由于之间格式化的时间非常短,所以这个问题一直没有暴露出来

这次刚刚好,两个问题一起出来

 

参考:

       /bootable/recovery/recovery.cpp
       /bootable/recovery/roots.cpp

 

你可能感兴趣的:(android,recovery,恢复工厂设置)