完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.1 Recovery 模式简介
Recovery 模式指的是一种可以对安卓机内部的数据或系统进行修改的模式,(类似于windows pe 或 DOS)。在这个模式下我们可以刷入新的安卓系统,或者对已有的系统进行备份或升级,也可以在此恢复出 厂设置。 1.2 Recovery 模式在框架层的位置 Android 启动后,会先运行bootloader。Bootloader 会根据某些判定条件决定是否进入recovery 模 式。Recovery 模式会装载recovery 分区,该分区包含recovery.img。Recovery.img 包含了标准内核(和 boot.img 中的内核相同)以及recovery 根文件系统。 Android recovery 三个部分两个接口,recovery 的工作需要整个软件平台的配合,从架构角度看,有 三个部分: 1. Main System: 用boot.img 启动的Linux 系统,Android 的正常工作模式。 2. Recovery:用recovery.img 启动的Linux 系统,主要是运行recovery 程序。 3. Bootloader:除了加载、启动系统,还会通过读取flash 的MISC 分区获得来自Main System 和 Recovery 的消息,并以此决定做何种操作。 两个通信接口: 1. /cache/recovery/:command、log、intent 2. BCB(Bootloader Control Block):misc 分区 Main System 如何进入Recovery 模式:当我们在Main System 使用update.zip 包进行升级时 系统会重启并进入recovery 模式。在系统重启前,我们可以看到Main System 定会向recovery 域写入 boot-recovery(粉红色线),用来告知bootloader 重启后进入Rcovery 模式。这一步是必须的,至于 Main System 是否会向recovery 域写入值我们在源码中不能肯定这一点。即便如此,重启进入Recovery 模式后,Bootloader 会从/cache/recovery/command 中读取值并放入到BCB 的recovery 域。而Main System 在重启之前肯定会向/cache/recovery/command 中写入Recovery 将要进行的操作命令。 1.installPackage: RecoverySystem 的接口,完成升级包路径转换,并调用bootCommand。 2.bootCommand:RecoverySystem 的接口,将命令写入/cache/recovery/command,并调用 pm.reboot。 3.Pm.reboot:PowerManager 的接口,重启并进入Recovery 模式。 2 编译OTA 包 2.1 OTA 介绍 OTA (over the air)升级是Android 系统提供的标准软件升级方式。它功能强大,提供了完全升级 (完整包)、增量升级模式(差异包),可以通过本地升级,也可以通过网络升级。 2.2 生成完整包 完整包所包含内容:system、recovery、boot.img 发布一个固件正确的顺序: 1. make -j4 2. make otapackage -j4 3. ./mkimage.sh ota 发布固件必须使用./mkimage.sh ota,将boot 与kernel 打包,不需要单独烧kernel,如果量产固件 是分开的,将会影响后面差异包升级,除非你不需要用差异升级。 在out/target/product/rkxxxx/目录下会生成ota 完整包rkxxxx-ota-eng.root.zip,改成 update.zip 即可拷贝到T 卡或者内置的flash 进行升级。 2.3 生成差异包 OTA 差异包只有差异内容,包大小比较小,主要用于OTA 在线升级,也可T 卡本地升级。OTA 差异包 制作需要特殊的编译进行手动制作。 (1)首先发布v1 版本的固件,生成v1 版本的完整包 (2)保存 out/target/product/rkxxxx/obj/PACKAGING/target_files_intermediates/rk3188-target_files-en g.root.zip 为rkxxxx-target_files-v1.zip,作为v1 版本的基础素材包。 (3)修改kernel 代码或者android 代码,发布v2 版本固件,生成v2 版本完整包 (4)保存 out/target/product/rkxxxx/obj/PACKAGING/target_files_intermediates/rk3188-target_files-en g.root.zip 为rkxxxx-target_files-v2.zip,作为v2 版本的基础素材包。 (5)生成v1-v2 的差异升级包: Android7.1 google CTS 测试要求开启verifying boot 功能。目前默认开启verifying boot 功能的平台有 RK3368H Android7.1 mid、RK3399 Android7.1 mid,作差异包时必现加上block 参数。 ./build/tools/releasetools/ota_from_target_files -v -i rkxxxx-target_files-v1.zip -p out/host/linux-x86 -k build/target/product/security/testkey rkxxxx-target_files-v2.zip out/target/product/rk3188/rkxxxx-v1-v2.zip 说明: 生成差异包命令格式: ota_from_target_files -v -i 用于比较的前一个target file --block 使用block 方式进行OTA 升级,打开verfying boot 的功能时必现加上这个参数 -p host 主机编译环境 -k 打包密钥 用于比较的后一个target file 最后生成的ota 差异包 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
533 浏览 0 评论
803 浏览 1 评论
700 浏览 1 评论
1926 浏览 1 评论
3171 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 19:52 , Processed in 0.570780 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号