2023年6月21日发(作者:)
⾼通Andriod开机流程与镜像说明Android镜像说明Android设备刷机时都需要ROM包,ROM包下⾯有很多的.img和其他的相关镜像⽂件,其中这⾥⾯包含了Android很多的分区,Android镜像⽂件是通过源码编译⽣成的,下⾯是ROM包各个镜像的作⽤:镜像⽂件c___说明boot分区,包括内核⽂件和虚拟内存盘Ramdisk,负责设备开机,可在recovery模式进⾏擦除,重新安装带有boot分区的新系统system分区,包含Android系统的⽤户界⾯以及设置上的⼀些预装系统应⽤recovery分区,替代启动分区,执⾏恢复和维护系统的⼀些操作data分区,⽤于保存⽤户的数据,例如联系⼈,短信,设置偏好和应⽤程序存放的地⽅cache分区,⽤于放置系统频繁访问的数据和应⽤程序组件的分区persist分区包含了设备的传感器和信号部分的驱动程序,例如wifi,蓝⽛连接都有关系开机画⾯⽂件modem image负责处理通讯协议相关的基带镜像硬件的初始化,并且保存加载其他模块信息的顺序trustzone是ARM TrustZone® 技术是系统范围的安全⽅法,基于安全需求和引导模式配置XPU,NAND MPU,它和其他模块代码运⾏在相互隔离的区域,主要实现底层很多安全性特性bootloader⽂件,进⼊fastboot模式相关⽂件电源管理器,是⾼通MSM平台另外加的⼀块芯⽚,虽然与AP芯⽚打包在⼀起,但其是⼀个独⽴的ARM Core。负责与SMP,MPM交互进⼊睡眠或者唤醒整个系统备份gpt头和分区表GPT头和分区表服务端返回的具体磁盘⼤⼩打上最后⼀个分区的补丁、完成分区表头校验的配置⽂件Secure boot相关熔丝烧录信息ADSP动态加载程序图像的分区Verified boot feature introduced in M needLK to load cmnlib corresponding partitionsprog_emmc_firehose_8953_L软件烧录系统的时候,需要⽤到此⽂件,应该是关于EMMC、DDR的配置参数相关的开机流程Android系统是基于linux内核开发的,Android的开机⾸先就是⽤bootloader加载并启动linux内核,当内核加载完成后就启动Android系统,内核就会加载Android init进程进⼊Andriod系统并初始化相关参数和进程,并启动Zygote进程,作为Android其他进程的⽗进程,Zygote进程做完初始化⼯作之后,启动SystemServer来启动其他系统服务。下⾯我们针对每个阶段的执⾏作介绍。引导程序和bootloader当电源按下,引导程序开始从预定义位置(固化在ROM)开始执⾏PBL (Primary Boot Loader),从启动设备(如eMMC)加载SBL1(SecondBootLoader stage) segment1到L2。再加载SBL1 segment2到RPM处理器的RAM中。SBL1 segment1会初始化DDR,然后完成如下加载:1) 从启动设备加载QSEE/ TrustZone image到DDR2) 从启动设备加载DEVCFG image到DDR3) 从启动设备加载Debug Policy(调试相关)到DDR4) 从启动设备加载bootloader image到DDR5) 从启动设备加载RPMfirmware image到RPM的RAM中。SBL1移交运⾏控制权给QSEE(⾼通安全执⾏环境)。QSEE建⽴安全运⾏环境,⽀持fuse。QSEE通知RPM启动RPM 固件的执⾏。QSEE移交运⾏控制权给bootloader,bootloader加载、验证kernel。bootloader是在Android系统运⾏前的⼀个⼩程序,因此引导程序并不是Android系统的⼀部分。⽽是与主板芯⽚有关,是⼚商加锁限制的地⽅。它主要是由固化代码程序和BootLoader程序组成,其中固化程序已经烧⼊到了⽣产的芯⽚中,⽽BootLoader程序通过它的启动模式去引导系统CPU和部分外设的初始化。启动内核BootLoader程序执⾏完后,标志着CPU和部分外设初始化完成,这时候就开始加载启动内核了。内核的启动和加载是⼀个很复杂的流程。在此只是简单的说明下,⼤致可以分为三个阶段:1)内核⾃解压引导程序bootloader完成后会跳转运⾏内核程序,第⼀步就是检测内核是否解压,并将内核放于指定位置2)设置CPU的⼯作模式,使能MMU(虚拟内存),设置⼀级页表(内存相关)等3)内核初始化,作是完成剩余与硬件平台相关的初始化⼯作,在进⾏⼀系列与内核相关的初始化之后,调⽤第⼀个⽤户进程init并等待其执⾏。简单地说内核的启动,就是初始化各种软硬件环境,加载modemimage和驱动程序,挂载根⽂件系统,并找到init⽂件,启动第⼀个进程任务。init进程init是整个系统的第⼀个进程,init进程的运⾏标志着正式进⼊了Android系统。 Init进程主要有三个核⼼⼯作:1)创建和挂载⼀些系统⽬录以及设备节点,并且设置权限(是挂载到 / 下的镜像,它包含了全部的系统可执⾏⽂件。挂载到 /data 下的镜像,它包含了应⽤及⽤户相关的数据。)2)启动属性服务,和⼀系列相关的进程和Android服务3)显⽰boot logo,默认是“Android”显⽰在屏幕上Android服务启动流程Android启动最重要的就是第⼆个核⼼⼯作:各个系统服务的启动,因为Andriod的所有功能都是依赖这些系统服务完成的,如⾳乐视频播放,拨打电话,使⽤wifi等等。这些服务统分为两⼤类⼀个是本地服务,另⼀个是Android服务。下⾯介绍⼀下服务流程的启动。上⽂提到Android系统的init进程,init进程通过启动脚本语⾔的执⾏,本地服务和Andriod服务,本地服务是指运⾏在C++层的系统守护进程,如 ueventd、servicemanager、debuggerd、rild、mediaserver等。还有⼀部分本地服务,是由这些本地服务进⼀步创建的,如mediaserver服务会启动AudioFlinger, MediaPlayerService, 以及 CameraService 等本地服务。Android服务是指运⾏在虚拟机进程中的服务,这些服务的创建过程描述如下:init进程会执⾏app_process程序,创建Zygote进程,它是Android系统最重要的进程,所有后续的Android应⽤程序都是由它产⽣的。Zygote进程会⾸先分出(fork)"SystemServer"进程,"SystemServer"进程的全部任务就是将所有的Android核⼼服务启动起来。核⼼服务:启动电源管理器;创建Activity管理器;启动电话注册;启动包管理器;设置Activity管理服务为系统进程;启动上下⽂管理器;启动系统Context Providers;启动电池服务;启动定时管理器;启动传感服务;启动窗⼝管理器;启动蓝⽛服务;启动挂载服务。其他服务:启动状态栏服务;启动硬件服务;启动⽹络状态服务;启动⽹络连接服务;启动通知管理器;启动设备存储监视服务;启动定位管理器;启动搜索服务;启动剪切板服务;启动登记服务;启动壁纸服务;启动⾳频服务;启动⽿机监听;启动AdbSettingsObserver(处理adb命令)⼀旦系统服务在内存中跑起来了,Android就完成了引导过程,进⼊安卓界⾯。
2023年6月21日发(作者:)
⾼通Andriod开机流程与镜像说明Android镜像说明Android设备刷机时都需要ROM包,ROM包下⾯有很多的.img和其他的相关镜像⽂件,其中这⾥⾯包含了Android很多的分区,Android镜像⽂件是通过源码编译⽣成的,下⾯是ROM包各个镜像的作⽤:镜像⽂件c___说明boot分区,包括内核⽂件和虚拟内存盘Ramdisk,负责设备开机,可在recovery模式进⾏擦除,重新安装带有boot分区的新系统system分区,包含Android系统的⽤户界⾯以及设置上的⼀些预装系统应⽤recovery分区,替代启动分区,执⾏恢复和维护系统的⼀些操作data分区,⽤于保存⽤户的数据,例如联系⼈,短信,设置偏好和应⽤程序存放的地⽅cache分区,⽤于放置系统频繁访问的数据和应⽤程序组件的分区persist分区包含了设备的传感器和信号部分的驱动程序,例如wifi,蓝⽛连接都有关系开机画⾯⽂件modem image负责处理通讯协议相关的基带镜像硬件的初始化,并且保存加载其他模块信息的顺序trustzone是ARM TrustZone® 技术是系统范围的安全⽅法,基于安全需求和引导模式配置XPU,NAND MPU,它和其他模块代码运⾏在相互隔离的区域,主要实现底层很多安全性特性bootloader⽂件,进⼊fastboot模式相关⽂件电源管理器,是⾼通MSM平台另外加的⼀块芯⽚,虽然与AP芯⽚打包在⼀起,但其是⼀个独⽴的ARM Core。负责与SMP,MPM交互进⼊睡眠或者唤醒整个系统备份gpt头和分区表GPT头和分区表服务端返回的具体磁盘⼤⼩打上最后⼀个分区的补丁、完成分区表头校验的配置⽂件Secure boot相关熔丝烧录信息ADSP动态加载程序图像的分区Verified boot feature introduced in M needLK to load cmnlib corresponding partitionsprog_emmc_firehose_8953_L软件烧录系统的时候,需要⽤到此⽂件,应该是关于EMMC、DDR的配置参数相关的开机流程Android系统是基于linux内核开发的,Android的开机⾸先就是⽤bootloader加载并启动linux内核,当内核加载完成后就启动Android系统,内核就会加载Android init进程进⼊Andriod系统并初始化相关参数和进程,并启动Zygote进程,作为Android其他进程的⽗进程,Zygote进程做完初始化⼯作之后,启动SystemServer来启动其他系统服务。下⾯我们针对每个阶段的执⾏作介绍。引导程序和bootloader当电源按下,引导程序开始从预定义位置(固化在ROM)开始执⾏PBL (Primary Boot Loader),从启动设备(如eMMC)加载SBL1(SecondBootLoader stage) segment1到L2。再加载SBL1 segment2到RPM处理器的RAM中。SBL1 segment1会初始化DDR,然后完成如下加载:1) 从启动设备加载QSEE/ TrustZone image到DDR2) 从启动设备加载DEVCFG image到DDR3) 从启动设备加载Debug Policy(调试相关)到DDR4) 从启动设备加载bootloader image到DDR5) 从启动设备加载RPMfirmware image到RPM的RAM中。SBL1移交运⾏控制权给QSEE(⾼通安全执⾏环境)。QSEE建⽴安全运⾏环境,⽀持fuse。QSEE通知RPM启动RPM 固件的执⾏。QSEE移交运⾏控制权给bootloader,bootloader加载、验证kernel。bootloader是在Android系统运⾏前的⼀个⼩程序,因此引导程序并不是Android系统的⼀部分。⽽是与主板芯⽚有关,是⼚商加锁限制的地⽅。它主要是由固化代码程序和BootLoader程序组成,其中固化程序已经烧⼊到了⽣产的芯⽚中,⽽BootLoader程序通过它的启动模式去引导系统CPU和部分外设的初始化。启动内核BootLoader程序执⾏完后,标志着CPU和部分外设初始化完成,这时候就开始加载启动内核了。内核的启动和加载是⼀个很复杂的流程。在此只是简单的说明下,⼤致可以分为三个阶段:1)内核⾃解压引导程序bootloader完成后会跳转运⾏内核程序,第⼀步就是检测内核是否解压,并将内核放于指定位置2)设置CPU的⼯作模式,使能MMU(虚拟内存),设置⼀级页表(内存相关)等3)内核初始化,作是完成剩余与硬件平台相关的初始化⼯作,在进⾏⼀系列与内核相关的初始化之后,调⽤第⼀个⽤户进程init并等待其执⾏。简单地说内核的启动,就是初始化各种软硬件环境,加载modemimage和驱动程序,挂载根⽂件系统,并找到init⽂件,启动第⼀个进程任务。init进程init是整个系统的第⼀个进程,init进程的运⾏标志着正式进⼊了Android系统。 Init进程主要有三个核⼼⼯作:1)创建和挂载⼀些系统⽬录以及设备节点,并且设置权限(是挂载到 / 下的镜像,它包含了全部的系统可执⾏⽂件。挂载到 /data 下的镜像,它包含了应⽤及⽤户相关的数据。)2)启动属性服务,和⼀系列相关的进程和Android服务3)显⽰boot logo,默认是“Android”显⽰在屏幕上Android服务启动流程Android启动最重要的就是第⼆个核⼼⼯作:各个系统服务的启动,因为Andriod的所有功能都是依赖这些系统服务完成的,如⾳乐视频播放,拨打电话,使⽤wifi等等。这些服务统分为两⼤类⼀个是本地服务,另⼀个是Android服务。下⾯介绍⼀下服务流程的启动。上⽂提到Android系统的init进程,init进程通过启动脚本语⾔的执⾏,本地服务和Andriod服务,本地服务是指运⾏在C++层的系统守护进程,如 ueventd、servicemanager、debuggerd、rild、mediaserver等。还有⼀部分本地服务,是由这些本地服务进⼀步创建的,如mediaserver服务会启动AudioFlinger, MediaPlayerService, 以及 CameraService 等本地服务。Android服务是指运⾏在虚拟机进程中的服务,这些服务的创建过程描述如下:init进程会执⾏app_process程序,创建Zygote进程,它是Android系统最重要的进程,所有后续的Android应⽤程序都是由它产⽣的。Zygote进程会⾸先分出(fork)"SystemServer"进程,"SystemServer"进程的全部任务就是将所有的Android核⼼服务启动起来。核⼼服务:启动电源管理器;创建Activity管理器;启动电话注册;启动包管理器;设置Activity管理服务为系统进程;启动上下⽂管理器;启动系统Context Providers;启动电池服务;启动定时管理器;启动传感服务;启动窗⼝管理器;启动蓝⽛服务;启动挂载服务。其他服务:启动状态栏服务;启动硬件服务;启动⽹络状态服务;启动⽹络连接服务;启动通知管理器;启动设备存储监视服务;启动定位管理器;启动搜索服务;启动剪切板服务;启动登记服务;启动壁纸服务;启动⾳频服务;启动⽿机监听;启动AdbSettingsObserver(处理adb命令)⼀旦系统服务在内存中跑起来了,Android就完成了引导过程,进⼊安卓界⾯。
发布评论