i.mx6 Android5.1.1 初始化流程之框架

时间:2023-02-04 09:25:14

 

i.mx6 Android5.1.1 初始化流程之框架

 

 

Android启动过程分为以下几个步骤:

1.  Boot ROM:  上电后启动芯片固话代码。

2.  BootLoader:固话代码会根据启动模式启动bootloader,(一般为启动引脚的电平的不同,从不同的介质中启动,启动介质可以分为nor flash,nand flash, emmc等,BootLoader一般为uboot)

3. kernel:

  1). 会初始化硬件

  2). 根据uboot传过来的参数初始化系统

  3). 加载一些必要的驱动

  4). 启动两个进程init:(PID=1)  kthreadd(PID=2)

 

4.Android:

  1).挂在分区,创建目录   (init进程)

  2).动态加载驱动              (int进程)

  3).启动本地服务    (init进程)  

  4).设置系统属性    (在我看来就跟环境变量,全局变量啥的没区别)    

  5).启动servicemanager服务    (这个是重要的一个本地服务。用来进行服务间的binder通讯的,当该服务重启了,所有服务都会重启)

  6).启动Zygote进程                  (该进程由init启动,主要作用为:1.启动虚拟机(可以使用Java了),2.注册JNI(可以调用本地函数了),3.加载类资源、系统资源(使得新的应用能够更快启动),4.启动System server,5.接收从System server发过来的申请,创建新的应用程序)  

  7).启动System server             (1.加载JAVA服务(本地服务在init进程中已经加载了),2.接收申请并发送给zygote,用来创建应用)        

  8).守护系统                  (根据init.rc,确保某些重要的服务不会被关闭,如果关闭则重启)

i.mx6 Android5.1.1 初始化流程之框架

 

其中i.mx6的uboot和kernel暂时不分析,以后再说,我们这里只说Android

 

首先,我们先查看一下系统的进程。

i.mx6 Android5.1.1 初始化流程之框架

i.mx6 Android5.1.1 初始化流程之框架

i.mx6 Android5.1.1 初始化流程之框架

i.mx6 Android5.1.1 初始化流程之框架

通过查看PPID,我们可以发现,大部分进程都是由init,kthreadd,zygote生成的。

init:         其init进程也是整个Android的第一个进程,从kernel启动,使系统正式从内核空间转到用户空间了。PID为1

kthreadd:为也是kernel启动的进程。PID为2

 zygote:  PID为133

 

/init生成了:

/sbin/ueventd

/sbin/watchdogd

/system/bin/logd

/sbin/healthd

/system/bin/lmkd

/system/bin/servicemanager (通过binder进行通讯的服务)

/system/bin/vold

/system/bin/surfaceflinger  (显示管理服务)

/system/bin/sh

/system/bin/netd                (网络管理服务)

/system/bin/debuggerd

/system/bin/drmserver  

/system/bin/mediaserver  (多媒体服务)

/system/bin/installd    (应用安装服务)

/system/bin/keystore

/system/bin/rild

zygote                                (zygote:第一个Java程序)

/system/bin/sdcard

/sbin/adbd        (adb服务)

这里的zygote为init生成的

 

 

kthreadd:看到了一个binder进程

 

zygote生成了:(全是JAVA进程)

system_server    

com.android.systemui

android.process.media

com.android.inputmethod.latin

com.android.phone

com.android.launcher

com.android.deskclock

com.estrongs.android.pop

com.android.keychain

com.microchip.calibration

com.android.providers.calendar

com.android.managedprovisioning

com.android.onetimeinitializer

com.android.settings

com.android.calendar

 

后面接着的

i.mx6 Android5.1.1 系统属性

i.mx6 Android5.1.1 初始化流程之init进程

i.mx6 Android5.1.1 初始化流程之init.rc解析

i.mx6 Android5.1.1 初始化流程之zygote