欢迎来到天天文库
浏览记录
ID:42623395
大小:170.96 KB
页数:9页
时间:2019-09-19
《Android-Recovery Mode(recover模式详解)-幸福软件公司-ChinaUnix博客》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android-RecoveryMode(recover模式详解)1.RecoveryMode:factorydefault,firmwareupgrade,patchupgradeandOTAupgrade.2.Androidbootmode:1.bootloadermode(camera+power)2.recoverymode(home+power)3.normalboot1.command=='boot-recovery'→启动recovery.img。recovery模式2.command=='u
2、pdate-radio/hboot'→更新firmware(bootloader)3.其他→启动boot.img3.CACHE分区文件Recovery工具通过NANDcache分区上的三个文件和主系统打交道。主系统(包括恢复出厂设置和OTA升级)可以写入recovery所需的命令,读出recovery过程中的LOG和intent。/cache/recovery/command:recovery命令,由主系统写入。所有命令如下:--send_intent=anystring-writethetextoutto
3、recovery.intent--update_package=root:path-verifyinstallanOTApackagefile--wipe_data-eraseuserdata(andcache),thenreboot--wipe_cache-wipecache(butnotuserdata),thenreboot/cache/recovery/log:recovery过程日志,由主系统读出/cache/recovery/intent:recovery输出的intent4.MISCparti
4、tion:BootloaderControlBlock(BCB)存放recoverybootloadermessage。结构如下:structbootloader_message{charcommand[32];charrecovery[1024];};commandformat:“boot-recovery”:标示recovery正在进行,或指示bootloader应该进入recoverymode“update-hboot/radio”:指示bootloader更新firmwarerecovery内容“r
5、ecovery”其中recoverycommand为CACHE:/recovery/command命令两种RecoveryCase?FACTORYRESET(恢复出厂设置)1.用户选择“恢复出厂设置”2.设置系统将"--wipe_data"命令写入/cache/recovery/command3.系统重启,并进入recover模式(/sbin/recovery)4.get_args()将"boot-recovery"和"--wipe
6、_data"写入BCB5.erase_root()格式化(擦除)DATA分区6.erase_root()格式化(擦除)CACHE分区7.finish_recovery()擦除BCB8.重启系统?OTAINSTALL(OTA升级)1.升级系统下载OTA包到/cache/some-filename.zip2.升级系统写入recovery命令"--update_package=CACHE:some-filename.zip"3.重启,并进入recovery模式4.get_args()将"boot-recovery
7、"和"--update_package=..."写入BCB5.install_package()作升级6.finish_recovery()擦除BCB7.**如果安装包失败**prompt_and_wait()等待用户操作,选择ALT+S或ALT+W升级或恢复出厂设置8.main()调用maybe_install_firmware_update()1.如果包里有hboot/radio的firmware则继续,否则返回2.将"boot-recovery"和"--wipe_cache"写入BCB3.将firmw
8、areimage写入cache分区4.将"update-radio/hboot"和"--wipe_cache"写入BCB5.重启系统6.bootloader自身更新firmware7.bootloader将"boot-recovery"写入BCB8.erase_root()擦除CACHE分区9.清除BCB9.main()调用reboot()重启系统Recovery模式流程/init→init.rc→/sbin/r
此文档下载收益归作者所有