Android系统启动升级流程_第1页
Android系统启动升级流程_第2页
Android系统启动升级流程_第3页
Android系统启动升级流程_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要本文首先介绍了 Android系统更新要用到的一些概念:硬件、三种模式及 相互之间的通信。然后介绍了 Android系统的启动和升级流程。概述通常,Android系统的升级包名称为update.zip。Android系统内部自带 了烧写升级包的工具,我们可以手动烧写,也可以通过某些机制自动更新系统。同 时,我们可以手动修改和制作升级包。本文主要阐述在 Android系统升级中用到的 一些概念,本文只是作为索引,并不涉及到具体的烧写工作。本文基于Android系统的版本:4.0.4 0硬件Android系统的烧写,是非常贴近硬件的。一是,烧写是在实实在在的硬件上操作的。二则,有时在翻阅源码的

2、时候,需要知道硬件的类型,以便找到和硬 件相对应的源码。烧写相关的硬件主要有三部分:CPU内存和nand flash。当然,只是相 对本文而言。CPUS来执行程序中的指令。内存只是在运行中,将需要运行的程序 加载其中并运行,关机后即消失。nandflash用来存储程序的数据,它会一直存 在。系统启动时,会将nand flash上的操作系统加载到内存,然后运行在 CPU 中,对于非系统程序,按需加载到内存中运行。了解这些,有助于了解整个烧写的 过程。在板子上,可以通过下面的命令,查看 CPU勺信息:plaincat /proc/cpuinfo通过如下命令查看内存的信息:plaincat /pro

3、c/meminfonand flash 是需要分区的,每个分区中对应了 Android系统烧写包中不 同的image,比如:boot、system分区等。可以通过如下命令来查看 nand flash 的分区情况:plaincat /proc/mtd # 查看分区状况通常,nand flash包含了以下分区:开机动画:用于在开机或者升级过程中显示在屏幕上的内容。boot :用于Android系统的正常启动recovery :用于 Android系统进入recovery 模式下,参见本文后续介 绍。misc :用于保存BCB的内容,参见本文后续介绍。system :对应于Android系统的正常模

4、式下的/system目录。cache :用于不同模式之间的通信,参见本文后续介绍。user-data :用于Android应用数据的存放。nand flash上的分区可以按需要增减,这取决于不同的Android系统配置。不过它有可能在Android不同的模块中都有定义。同时,这些分区的可能在 Android不同的模块中都有配置,比如:内核、 bootloader。通过下面的命令查看nand flash的总大小:plaindmesg | grep NAND三种模式烧写的过程中,需要在三种模式下互相切换。确切的说,应该是三个操作 环境:bootloader、recovery 和 main syst

5、em 0bootloader主要用来屏蔽硬件的差异,类似于 PC中的BIOS,它的功能相对比较简单,内部提供了一些命令,比如:可以将 nand flash分区加载到内存、 运行内存中的程序、操作 SD卡等。Android中的booloader是uboot,位于源码的 uboot目录下。main system就是正常运行的Android操作系统,而recovery则是一个mini的Android系统,顾名思义,就是用来进行系统恢复相关的操作的,它的运 行规则和main system 一样,只是,它在启动时只加载 recovery服务,此服务用 于烧写Android系统。三者之间的关系如下图所示:

6、系统先启动到bootloader模式下,然后根据情况,启动到recovery或者 main system 模式下。bootloader板子启动时,在Putty控制台中接回车,可以进入uboot,输入help可 以查看其可用的命令。uboot的命令是可以自定义的,需要在 uboot源码中进行设 置。uboot下可以使用fastboot命令,进入fastboot模式下,可以使用PC与之 连接(此时,使用fastboot协议通信),进行Android系统的烧写工作。在uboot中,你可以更新uboot在内的所有系统模块。recoveryrecovery系统包含了内核和类似于根文件系统两部分,启动时仍

7、采用init进程和init.rc配置脚本,不同的是init.rc脚本比较简单,system目录中只存放了一些必备的工具。recovery 系统下,你能更新除uboot之外的所有Android系统模块。recovery 模式下, 只有个 recovery月艮务, 该务对应于 recovery 进 程,源码位置: bootablerecovery 。main systemmain system 是正常运行的 Android系统。通信Android板子每个时亥U只可以处于 bootloader 、recovery main system其中的一个模式中,烧写过程中,三个模式之间需要通信,比如: ma

8、in system通 知recovery烧写那个升级包。大致有三种方式可以用来通信:BCB寄存器和cache分区。BCBBCB (bootloader control block)可以用于 main system 传递数据给bootloader和recovery模式。BCB的内容存在于nand flash 的一个独立的分区, 可以在nand flash分区表中看到,分区的名称为 misc。通过BCB main system 可以通知bootloader启动到recovery 模式下, 同时也可以传递命令给recovery ,比如烧写哪个文件。recovery在烧写的过程中,会设置 BCB以确保

9、烧写成功前,一直会开机启动到recovery模式下,这样可以防止烧写过程中断电的情况。寄存器main system模式下,运行如下命令会重启,并进入 recovery 模式:(也可调用android_reboot 函数)plainreboot recoveryreboot命令实际上是系统调用,最终会调用到内核的kernel_restart 函数,该函数最终会设置某个寄存器的位置,然后执行重启操作。重启后,bootloader会检测到该寄存器的值,并根据其值,启动到 recovery模式 下。cache分区recovery 和 main system 模式下,者B会将 nand flash 的

10、cache 分区挂载 到cache目录从而实现这两种模式下的通信。比如: main system模式下,下载升 级包update.zip ,并将其路径设置到文件/cache/recovery/command 中,然后重启 至U recovery 模式下,recovery 进程会读取至U文件 /cache/recovery/command 中的 值,并执行系统升级工作。升级包通常升级包的名称为update.zip ,它包含了要升级的内容和升级脚本, 也就是说,整个升级的过程都由升级包本省控制。升级脚本解析对应的源码:META-INFcomgoogleandroidupdater-script 。

11、可用的命令列表可以参见 bootablerecoveryupdaterinstall.c 的函数 RegisterInstallFunctions() 。解析升级脚本采用语言 Edify ,源码位置:bootablerecoveryupdater 和 bootablerecoveryedify 。若想自己制作update.zip包,需要使用的以下三个文件:out/host/linux-x86/framework/signapk.jar build/target/product/security/testkey.pk8 build/target/product/security/testkey.

12、x509.pem 制作的过程:解压从源码中编译出来的update.zip。修改解压后的文件。重新压成包update.zip使用命令处理update.zip,该命令主要是最zip执行签名操作:java - Xmx1024m -jar signapk.jar -w testkey.x509.pem testkey.pk8 update.zip update_unsigned.zipupdate_unsigned.zip就是最终的升级包。启动流程启动流程大致如下:1. 开机后,启动到bootloader下,bootloader会作一些初始化的操作, 然后会从三个地方确定后面的动作:查找SD卡上指定的

13、文件:此种情况,主要用于,通过SD卡,升级系统。只要在SD卡中按照规则放置升级文件和相关的脚本,即可实现系统的升级。查找按键的状态:此种情况主要用于开机后进入bootloader或者recovery模式,按键也通常是硬件上的几个键按下的状态。获取BCB的内容:需要根据BCB的内容,来执行具体的操作,通常是进入 recovery 模式。若没有发现上述的三种信息,则会按照正常的启动流程,进入 main system 模式。2. 若需要通过SD卡升级,则会显示升级提示界面,并开始系统升级,完 成后,重启进入 main system 03. 若需要进入 recovery 模式,在 bootloader 模式下,会力口载 recovery 分区到内存,然后进入recovery模式下。recovery 会启动 recovery 进程,该进程会读取 /cache/recovery 分区中 的内容,决定具体的操作。若没有相关的配置,则进入控制台模式。4. 若需要进入main system模式,则会加载boot分区中的内容,然后进 入正常的启动流程。升级流程升级的流程大致如下:1. main system模式下,下载 update.zip

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论