zoukankan      html  css  js  c++  java
  • Android系统启动

    启动流程包括两个阶段:

    linux系统启动

    android应用系统启动

    1、linux系统启动

    启动次序:

    系统上电

    Bootloader引导

    linux内核启动

    init初始化系统服务

    1.1 系统上电与启动ROM

    上电,PC指向复位时的零地址,即从启动代码开始执行,启动代码在NOR Flash或NAND Flash中。

    1.1.1 从NOR Flash中启动

    启动代码在NOR Flash开始处

    设置好存储器地址、存取规则

    配置电源管理模块,各模块上电

    复制正式代码到内存中

    设置地址映射

    PC指向内存启动代码

    1.1.2 从NAND Flash中启动

    上电开始,DMA将NAND Flash第一页数据搬运到内部RAM中

    PC指向内部RAM,执行启动代码

    设置中断向量、硬件配置等

    将正式代码复制到外部SDRAM

    PC指向正式代码

    以上说的正式代码就是指的Bootloader

    1.2 Bootloader引导程序初始化硬件设备

    建立内存映射

    将内核加载到内存

    1.3 linux内核启动

    初始化内核,即初始化内核所需的数据结构、函数功能、硬件设备等

    初始化设备驱动,加载驱动

    启动内核

    挂载文件系统,创建根设备

    启动用户空间进程,init进程启动

    1.4 init初始化服务

    初始化log系统

    解析init.rc中的配置,执行相应动作

    设备初始化,属性服务器初始化并开启属性服务来管理系统属性

    无限循环

    2、android应用系统启动

    init创建了android系统中的关键系统,如android系统本地服务(Native Service)、Zygote进程,其中Zygote进程和其子进程android系统服务(System Server)是android系统的基础。

    启动Zygote进程和System Service进程后,启动主页面(Home)

    主页面启动后,android应用系统启动完成

    2.1 启动android系统本地服务

    由init启动,属于核心服务,采用C++编写,在运行时库上实现。

    Native Service是android内核层与android应用层通信的重要管道,通过Socket向应用层提供服务。

    提供各种本地服务来支持android应用系统的运行

    2.2 启动Zygote

    虚拟机进程,同时是一个虚拟机实例的孵化器。

    当执行Android应用程序时,Zygote创建子进程来执行该应用程序。

    2.3 启动Android系统服务

    Zygote的第一个子进程。

    android框架层的核心。

    除了以上已经启动的服务外,其他服务都是由SystemService启动的。

    2.4 启动android系统主页面

    展现桌面,Home应用程序为Launcher。

    Launcher启动过程:

    SystemService启动PackageManagerService(负责启动系统应用程序)

    SystemService启动ActivityManagerService

    ActivityManagerService启动Launcher

    Launcher启动时通过PackageManagerService将系统已经启动的应用程序图标展示在桌面上。

  • 相关阅读:
    cadence中画焊盘注意事项
    频率带宽解释
    一种RC滤波电路的验证
    24L01-2.4G无线传输模块调节记录
    51中xdata,idata,data,pdata的区别
    调试24L01经验总结
    将scl分频
    I2C详细介绍
    汽车电源系统概述
    PCB命名规则-allegro
  • 原文地址:https://www.cnblogs.com/ISeeIC/p/3636026.html
Copyright © 2011-2022 走看看