编译源码烧写到nexus后,在开机后有时会出现各种各样的问题,本篇就来介绍下android系统的启动流程。引用网上的图片来展开分析:
第一阶段:Android设备上电后,首先会从处理器片上ROM的启动引导代码开始执行,片上ROM会寻找Bootloader代码,并加载到内存。(这一步由“芯片厂商”负责设计和实现)
第二阶段:Bootloader开始执行,首先负责完成硬件的初始化,然后找到Linux内核代码,并加载到内存。(这一步由“设备厂商”负责设计和实现)
第三阶段:Linux内核开始启动,初始化各种软硬件环境,加载驱动程序,挂载根文件系统,并执行init程序,由此开启Android的世界。(这一步则是Android内核开发过程中需要涉及的地方)
从上面可以很容易看出来android系统启动的流程:bootloader、linux kernel、init(此处启动Zygote进入java世界)。这是从android设计者的角度出发,接下来我们从用户角度看看android启动流程(即开机流程)。android启动后会呈现三个不同的图片和动画,我们可以从这里深入。
Android系统在启动的过程中,最多可以出现三个画面,每一个画面都用来描述一个不同的启动阶段。第一个开机画面是在内核启动的过程中出现的,它是一个静态的画面。第二个开机画面是在init进程启动的过程中出现的,它也是一个静态的画面。第三个开机画面是在系统服务启动的过程中出现的,它是一个动态的画面。——by 老罗
既然理性和感性认识都有了,接下来就结合android4.4源码来详细分析启动过程吧:
卧槽 bootloader没找到,稍等啊
参考资料:
1、Android内核开发:图解Android系统的启动过程