[Android]高通平台BootLoader启动流程

本文详细介绍了高通平台BootLoader的启动流程,从PBL到SBL1,再到LK,涵盖启动过程中的关键步骤,如硬件初始化、加载安全操作系统、加载APPSBL以及后续的Kernel加载。通过对SBL1和LK的代码流程分析,揭示了BootLoader如何为Android操作系统提供启动环境。
摘要由CSDN通过智能技术生成

一、什么是BootLoader

BootLoader代码是芯片复位后,进入操作系统之前执行的一段代码。主要用于完成由硬件启动到操作系统启动的过渡,从而为操作系统提供基本的运行环境。

BootLoder主要的启动流程可以概括为:PBL阶段、SBL阶段、LK阶段。之后会加载并启动kernel。

二、名词解释


5个处理器: 

  1. APPS :Cortex A53 core(MSM8953),运行android。
  2. RPM(Resource Power Manager):CortexM3 core,主要用于低功耗应用。
  3. Modem(MSS_QDSP6) :高通自有指令集处理器,处理3G、4G通信协议等。
  4. Pronto(WCNSS): 处理wifi相关代码。
  5. LPASS :音频相关。

启动相关: 

  1. PBL(Primary Boot Loader):位于芯片内ROM中,是芯片上电后执行的真正第一行代码,在正常启动流程中会加载SBL1。如果启动异常会虚拟出9008端口可用于 Emergency download(短接板子上的force_boot_from_usb引脚(MSM8953 为gpio37)到1.8v可以强制进入紧急下载模式)。(此段代码封装在芯片内部,并不开源)
  2. SBL1 (Second BootLoader stage 1) :位于eMMC中,由PBL加载,初始化buses、DDR、clocks等。
  3. QSEE/TrustZone  安全相关。
  4. Debug Policy 调试相关。
  5. APPSBL :即为BootLoader,目前使用LK(little kernel)。
  6. HLOS (High LevelOperating System) 即为Linux/Android。

三、启动流程

  1. AP侧CPU上电。
  2. 在芯片内部ROM的PBL首先运行,PBL会从boot device(eMMC)中加载并验证SBL1到TCM中。这里的TCM可以理解为CPU的二级缓存。既然PBL能够从boot device(eMMC)中加载SBL1,那PBL应该是初始化过boot device的。  
  3. SBL1初始化DDR,并从boot device中加载并且校验如下镜像: QSEE或者TZ镜像、QHEE镜像、RPM_FW、镜像、APPSBL等。
  4. SBL1加载并验证完上述镜像后,即将执行权转移到QSEE中,QSEE将设置并初始化一个安全的执行环境。
  5. QSEE通知RPM去执行RPM_FW相关代码。
  6. QSEE将执行权转移到APPSBL中,APPSBL也就是LK。
  7. LK加载HLOS的kernel。

四、代码流程简要流程 

SBL

PBL部分并不开源,所以从SBL开始。

sbl1入口: sbl1.s

此部分代码路径在:boot_images/c

  • 15
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值