深入理解 Android 系统升级

前言

2013年7月至2015年6月在长虹担任Android系统研发工程师,主要负责长虹智能电视升级(OTA升级),研发平台是MST 628 和 MTK 5327等。

摘要

随着Android系统的快速发展,越来越多的智能终端设备搭载Android平台。Android系统升级的可以优化智能电视系统性能、更新系统内容。因此,Android系统升级在Android系统开发领域极其重要。如何保证Android系统升级的安全性、可靠性与可操作性。本文详细介绍了Android系统升级包的制作、Recovery模式的工作原理,TV终端升级包的下载、升级包的具体升级过程等。

一、 Android系统升级概述

Android系统升级的本质是对system、perm、data分区下的文件进行升级,按照升级包的差异来分可以分为整包升级与查分升级。整包升级首先将分区格式化,然后将升级包中的文件拷贝进去。差分升级则只升级文件的差异部分。如图(1.1)所示,系统升级主要包括升级包的制作与发布、终端升级包的下载以及Recovery模式下的具体升级几个过程。本文分九个部分讲述Android系统的系统升级。

第一部分是系统概述;
第二部分讲述Recovery模式,包括如何进入Recovery模式,进入Recovery模式后的操作以及Recovery模式的通信接口;
第三部分主要讲述升级包的制作;
第四部分讲述TV终端升级包的获取及升级策略;
第五部分讲述Android系统的三种启动模式;
第六部分讲述Android系统的模式服务;
第七部分讲述从reboot到Recovery;
第八部分讲述 Recovery服务的核心install_package函数;
第九部分讲述升级程序update_binary的执行过程。

图1-1 图1-1

二、Recovery模式

2.1 Recovery模式中的三个部分
Recovery的工作需要整个软件平台的配合,从通信架构上来看,主要有三个部分。
1) MainSystem:即正常启动模式(BCB中无命令),是用boot.img启动的系统,Android的正常工作模式。更新时,在这种模式中我们的上层操作就是使用OTA或则从SD卡中升级升级包。在重启进入Recovery模式之前,会向BCB中写入命令,以便在重启后告诉bootloader进入Recovery模式。
2) Recovery:系统进入Recovery模式后会装载Recovery分区,该分区包含recovery.img(同boot.img相同,包含了标准的内核和根文件系统)。进入该模式后主要是运行 Recovery服务(/sbin/recovery)来做相应的操作(重启、升级升级、擦除cache分区、擦除data分区等)。
3) Bootloader:除了正常的加载启动系统之外,还会通过读取MISC分区(BCB)获得来至Main system和Recovery的消息。
2.2 Recovery模式中的两个通信接口
在Recovery服务中上述的三个实体之间的通信是必不可少的,他们相互之间又有以下
两个通信接口。
通过CACHE分区中的三个文件:
1) Recovery通过/cache/recovery/目录下文件与Mainsystem进行通信,过程如下 :
/cache/recovery/command:这个文件保存着Main system传给Recovery的命令行。 –update_package=root:path: Main system将这条命令写入时,代表系统需要升级,进入Recovery模式后,将该文件中的命令读取并写入BCB中,然后进行相应的更新升级包的操作。
–wipe_data:擦除用户数据。擦除data分区时必须要擦除cache分区。
–wipe_cache: 擦除cache分区。
2)通过BCB(Bootloader Control Block):
BCB是bootloader与Recovery的通信接口,也是Bootloader与Main system之间的通信接口。存储在flash中的MISC分区,占用三个page,其本身就是一个结构体,具体成员 以及各成员含义如下:
struct bootloader_message{
char command[32];
char status[32];
char recovery[1024];
};
command成员:即当我们想要在重启进入Recover

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值