zoukankan      html  css  js  c++  java
  • android recovery升级过程中掉电处理

      一般在升级过程,都会提示用户,请勿断电,不管是android的STB,TV还是PHONE,或者是其他的终端设备,升级过程,基本上都可以看到“正在升级,请勿断电”,然后有个进度条,显示升级的进度。

        但是从系统安全的角度考虑,如果用户真断电了,我们仍然需要能够从异常掉电的情况中,恢复系统或者继续升级。 

        我们先理解下recovery的过程,我们升级过程,其实分为两个阶段,升级包校验过程,以及升级包更新过程

         

    2.1 校验过程掉电

        在升级包校验过程,是recovery对升级包zip的完整性以及合法性进行校验,不会写入任何数据,此时掉电,系统不受任何影响

     

    2.2 更新升级包过程掉电

        更新过程,会从升级包zip中提取数据,写入到flash的分区中,此时如果掉电,可能系统就被写坏了,在第一节中,我们了解了,其实我们是有两个系统的:

     Android启动: uboot  -> boot -> system

     Recovery启动:uboot -> recovery

        也就是我们在recovery中,可以更新android系统需要所有的分区,但是发现有个问题,recovery本身依赖uboot以及recovery分区,那么recovery如果在更新uboot或者recovery分区过程掉电,那么掉电之后recovery是无法正常启动的。

    我们分为三种情况讨论:

                                                     更新掉电区间

      2.2.1 更新logo boot system等分区过程掉电

        此过程,recovery系统仍然OK,我们重新上电之后,可以继续进入recovery系统升级即可。

     

      2.2.2 更新recovery分区掉电。

          Google原生的recovery分区升级是在android中完成的,recovery更新android,android更新recovery,无论何时,都有一个系统正常,保证了系统不会变砖,recovery更新android的流程。

              

        Recovery通过update.zip更新除recovery分区外的所有分区。

        Android通过/system/etc/install-recovery.sh 把/system/etc/recovery-resource.dat更新到recovery分区

     

      2.2.3更新uboot掉电

     

           Uboot是我们系统的启动分区。如果损坏就无法启动,目前国内,基本上厂商都是使用的是emmc flash,emmc包含有BOOT0 BOOT1 USER部分的,一般我们会存储三份uboot镜像,这样其实我们,在emmc上面是存储了三份uboot,如果升级掉电,损坏了其中一个,还有两个uboot是可以启动的,所以不用担心,更新uboot掉电导致的无法启动问题。

     

        有些人就有疑问了,如果是nand flash那么就没有BOOT0 BOOT1了,怎么来保证呢,其实道理是相同的,我们可以在nand flash上面存储两份uboot,这样如果损坏了其中一个,还有一个uboot是好的。

     

        目前来看,国内做android设备的厂商,基本上都是使用的emmc,emmc等同于nand +坏块管理模块,所以emmc比nand的价格高一些,但是少了坏块的处理,并且最终都是由消费者买单,所以普遍上厂商都乐于使用emmc存储。

     

     

    2.3 总结

      升级校验过程掉电,不影响系统本身。

      升级更新过程掉电,可以保证重新上电之后进入recovery继续升级。对于特殊分区,像uboot分区,我们需要特殊进行备份处理。

     

    2.4 备注

      上面讲到的是整包升级掉电,还有一个特殊的升级,就是差分包升级,如果是差分包升级过程掉电呢,还可以继续升级吗?我们在下一节中详解。

  • 相关阅读:
    基于python+django+mysql的接口测试平台
    firefox没有装在C盘,webdriver启动firefox时报错
    Python知识点面试题
    Python面试题整理
    Python程序猿面试杂谈
    Python面试-websocket及web框架
    Python面试-DB相关
    Python面试简介及并行并发
    flink-demo2
    flink-table demo
  • 原文地址:https://www.cnblogs.com/codeking100/p/10338288.html
Copyright © 2011-2022 走看看