完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` 本帖最后由 HelloWii 于 2015-9-9 11:02 编辑 www.sinlinx.com 从这章开始,我们来分析Android的一个启动过程的分析 我们首先来看一下Android的整个系统的启动分析, 图:启动分析 首先我们得先给我们的设备通电(Powon),上完电CPU内部会有一个bootloader,这个是在生产的时候就已经烧录好了,它会根据我们的硬件GPIO的一些设置来判断我们的系统是在U盘,SD卡,或者是在内置Flash中启动,然后去引导我们的uboot。 我们的uboot主要是初始化一些外设,比如我们的内存、Flash,以及我们CPU的一些IO,并且通过串口给我们提供修改启动参数的一个启动过程,并且根据我们所配置的参数去引导内核启动,当我们的内核启动之后,他会首先初始化一些外设,加载驱动,并且根据我们uboot所配置的参数来启动我们的系统。 当我们的Android系统被起来之后,他也会进行一系列的初始化过程,他会首先挂在我们的分区,并且创建Android一些相关的目录,创建完成之后,他会动态加载一些必要的驱动,然后就会根据我们的启动脚本,来启动我们的系统服务,如:mediaserver、servicemanage等,或者我们自己新加的一些服务就会在这里进行启动,启动完之后,他还会做一些环境变量的配置,这些配置会在系统中使用,最后我们将所有的服务系统启动之后,我们的启动服务就会守护整个系统,如果中间有一个服务中检出错了,我们这个守护进程就会重新创建这个服务。现在Android设备的启动时间都是比较长的,所以我们想要加快Android系统的启动过程主要是从uboot、kernel、Android这三块来做调整 我们主要讲的是Android这一层面的启动过程,并且根据我们的理解来做一些优化。 下面我们来看一下Android启动过程分析的主要内容 图:Android 启动过程主要内容 接下来我们来学习一下Android的启动模式,Android的启动模式共包括两种模式: 一种是recovery升级模式:启动recovery分区内核和文件 另一种是正常启动模式:引导内核和启动Android系统 那么我们来看一下我们的uboot在启东时,如何区分是recovery升级模式还是正常启动模式呢,那么我们再来看一下Android的启动过程 图:Android的启动过程 第一种方式: 当我们给我们的设备上电,启动到uboot模式时,首先会有一个输入模式,如果我们触发了输入模式,并且输入了recovery命令,那么我们重启uboot时,uboot就会检查到我们的recovery命令,这是uboot就会引导我们的recovery分区,就会进入recovery升级模式。 第二种方式: 如果我们没有设置recovery命令,那么我们的uboot再启动过程中也会等待我们的按键输入,等待一定的时间,比如我们等待我们的power健+音量加或者音量减健,如果说,在等待的这一段时间里,恰好捕获到一对组合按键,这时候我们的uboot也会直接引导我们的recovery分区,从而进入recovery升级模式。 第三种方式: 我们系统正常启动之后,我们下载了一个新的安装包,然后我们调用reboot命令来进行recovery升级,这时候我们重启之后就会直接进入到recovery模式,默认去安装我们下载的安装包,如果我们重启时设置了安装包的路径,那么他就会使用这个安装包去进行升级,如果说这三条都不满足的话,那么我们的uboot就会直接启动我们的boot images来正常启动Android系统。 Recovery模式主要完成两个任务: 一是可以清楚我们的一些数据,第二个是完成系统的升级,而在系统升级时也会遇到两种模式,一个是差量包升级,第二个是全包升级,当我们使用Android手机时遇到过这种情况,我们下载一个升级包,有的升级包只有几十兆,但是有的升级包却是上百兆,那么几十兆的就是差量包升级的一个过程。 Recover分区他有自己的一套文件系统,他和我们的正常文件系统是有区别的,他比较小,而且启动的时候也没有启动太多的服务,他是一套简单的文件系统,在升级过程中他会把我们的system分区挂在起来,然后使用差量升级包和我们的system下的文件进行一个比对,然后把这些差量数据打到system文件系统中,从而完成我们一个差量包的升级。而我们的全包升级呢,就是把整个包的内容全部替换掉我们system分区下的内容,完成一次全包升级,在升级过程中我们最好不要断电,断电会导致升级失败,会把我们的系统写坏,如果在我们的升级过程中,因为我们下载的升级包不对,或者说当前的差分包和我们的系统不匹配,那么这时我们的升级就会失败,在失败之后,我们会在屏幕上看到失败的信息,这时我们可以重启系统,启动之后在cache分区下可以看到升级过程中的所有log,而开发人员就可以根据我们的log信息分析一下问题到底出在哪里。 我们升级成功之后,我们的系统就会重启,重启之后如果没有检查到我们的按键消息,那么他就会正常的启动安卓,也就是在正常的升级之后,他会把我们的recovery命令擦除掉,从而我们不会再检查到recovery的一些命令,这就是Android的两种模式,recovery模式和正常启动模式 ` |
|
相关推荐
|
|
|
|
|
|
|
|
可是这个帖子,我不能编辑。。。。 |
|
|
|
|
|
飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之开发板测试
654 浏览 0 评论
该问题是用APP给芯海科技的CST92F25芯片发指令是出现的
2242 浏览 1 评论
771 浏览 0 评论
1530 浏览 1 评论
2276 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:27 , Processed in 0.589195 second(s), Total 48, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号