高通平台的启动流程如下:
现对各个阶段说明如下:
- PM检测到系统上电,将会给MSM发出上电复位信号,要求MSM复位。这样AP(Kryo应用处理器)将会退出reset状态。
注:Kryo是Qualcomm Technologies推出的首款定制设计的64位CPU。 - 在AP处理器侧,应用主引导加载程序(应用PBL)执行。PBL:Primary Boot Loader 是不可改变的bootloader。PBL的作用是硬件初始化、配置数据等。 (该部分是在内部ROM中执行 )
a. 对extensible boot loader (XBL) region #1 进行身份认证,并将其从引导设备(as TCM)加载到L2。
b. 验证XBL region #2 (DDR/SDI equivalent)并将其加载到片上内部存储器(OCIMEM),然后跳转到XBL region #1 - 在 XBL region #1中,XBL对PMIC镜像进行身份认证并将其从引导设备加载到内部缓冲区 (该部分是在IMEM中执行 )
a. 对QSEE进行身份认证,并将其从引导设备加载到pIMEM
QSEE - Qualcomm Secure Execution Environment
b. 对QHEE (Hypervisor) image 进行身份认证,并将其从引导设备加载到DDR
QHEE - Qualcomm Hypervisor Execution Environment
c. 对RPM firmware image 进行身份认证,并将其从引导设备加载 RPM code RAM
d. 对little kernel(LK) boot (or XBL region #3)进行身份认证,并将其从启动设备加载到DDR - XBL region #1 结束工作,下一步由QSEE执行 (以下是在DDR中执行 )
- QSEE使RPM退出reset状态,启动并执行RPM firmware
- QSEE建立一个安全的环境,并跳转到QHEE image,启动并执行它
- QSEE跳转到LK boot(or XBL region #3),启动并执行
- LK boot (or XBL region #3)对HLOS kernel进行身份验证,并进行装载 (HLOS - high-level operating system指操作系统,比如windows、linux、android等)。以android系统为例,这里装载完成后,开始运行linux。
- HLOS kernel 通过PIL把MBA加载到DDR
(MBA - modem boot authenticator PIL - peripheral image loader) - HLOS kernel 使Hexagon modem DSP退出reset状态(从kernel log也可以看到,8-9s左右modem才复位)
- Modem PBL将MBA从DDR复制到modem TCM,对MBA进行身份认证,并跳转到MBA image
- HLOS通过PIL把AMSS modem image加载到DDR
- MBA对modem image进行身份认证,然后跳转到modem(这里modem才真正跑起来)
- HLOS通过PIL加载Venus、 LPASS 和 SSC images到DDR
- HLOS使Venus、 LPASS 和 SSC退出reset状态,并通过一个安全的SMC调用(监控模式)启动执行各个子系统。
注意:纵向是执行的存储设备(在哪里执行),横向是执行的单元(包括多个处理器以及dsp)。
以MSM8953为例,其内部包含有多个dsp和ap的: