zoukankan      html  css  js  c++  java
  • 高通SOC启动流程

    背景

    开始接手高通开发的有关工作,为了调试底层驱动,因此有必要了解高通平台上电启动的流程是怎么样的。

    以 MSM8953 为例子。

    MSM:mobile station modems,移动基带处理器,即:带基带的手机处理器

    Reference:https://www.cnblogs.com/asreg/articles/9531152.html

    有关概念

    Secure Boot :安全启动。

    • 目的:厂家发布的产品,只能跑他们自家的软件,从而防止第三方进行恶意修改,进而影响到系统稳定、安全。
    • 原理:SecureBoot 与系统启动流程息息相关,通过镜像校验链,一步一步建立起一个可信的运行环境,从而保证安全类应用的执行安全。
    • 流程:高通的 Secure Boot 原理与 展锐 的基本一样:
      • 通过将密钥及安全配置文件写到 efuse (只能写一次)
      • 此后的每次启动时,镜像执行时会使用密钥校验认证后面的镜像,判断其是否是终端厂家的软件,如果不是,则终止启动流程。

    加密:

    • 密钥,对称加密,非对称加密(公钥、私钥)

    启动框图

    处理器核心流程

    启动相关image介绍

    1、APP PBL Primary BootLoader): 位于rom(只读)中,是芯片上电后执行的真正第一行代码,在正常启动流程中会加载 SBL1

    如果启动异常会虚拟出9008端口用于紧急下载模式,短接板子上的force_boot_from_usb引脚(MSM8953 为gpio37)到1.8v以达到强制进入紧急下载模式的目的。 在紧急下载模式时可以使用QFILE工具进行Download。

    2、SBL1( Second BootLoader stage 1) :位于EMMC中,由PBL加载,初始化 buses、DDR、clocks等,会虚拟出9006端口,用于不能开机时dump ram。

    3、QSEE/TrustZone :安全相关,如fuse(安全熔丝)。QSEE 指的是 Qualcomm Secure Execution Environment

    4、DEVCFG :OEM配置信息(如OEMLock)。

    5、 Debug Policy: 调试相关。

    6、APPSBL :BootLoader,通常使用LK(LittleKernel)。

    7、HLOS( High Level Operating System) :即为Linux/Android。

    8、Modem PBL :Modem处理器的PBL。

    9、MBA(Modem Boot Authenticator) :Modem处理器启动认证。

    注意:

    • PBL中是含有EMMC驱动的,有访问EMMC的能力,自身运行在MCU内部SRAM中。
    • PBL首先从EMMC加载SBL1到L2(内部缓存并非DDR),SBL1同样运行在片内SRAM。

    可以看到MSM8953中的处理器有5个子系统,分别为:

    启动流程

    软件层面的启动流程为:PBL --> SBL --> QSEE/TE --> LK --> Kernel --> Android

    启动流程:

    1、系统上电,使MSM8953从上电复位开始运行。

    2、在Cortex A53中运行的PBL会加载各部分到对应的内存中:

    • a) 从启动设备(如EMMC)加载SBL1 segment1到L2(即为TCM,Tightly-Coupled Memory,紧耦合内存)。
    • b) 加载SBL1 segment2到RPM处理器的RAM中。

    3、SBL1 segment1会初始化DDR,并完成如下加载:

    此时DDR才允许使用,而EMMC在一开始就可以使用了。

    • a)从启动设备加载QSEE image到DDR。
    • b)从启动设备加载DEVCFG image到DDR。
    • c)从启动设备加载Debug Policy image到DDR。
    • d)从启动设备加载HLOS APPSBL(Bootloader) image到DDR。
    • e)从启动设备加载RPM firmware image到RPM的RAM中。

    4、SBL1移交运行控制权给QSEE。QSEE建立安全运行环境,配置xPU,支持fuse。

    • 因为SBL1运行在AArch32模式,而QSEE运行在AArch64模式。为了切换到AArch64模式,SBL1会启动重映射器,操作RMR寄存器,然后触发warm-reset,QSEE就能够运行在AArch64模式了。

    5、QSEE通知RPM启动RPM固件的执行。

    6、QSEE移交运行控制权给HLOS APPSBL(Bootloader)。

    • APPSBL只能在AArch32模式开始运行。
    • 这时AArch32的运行模式切换是在EL3/Monitor模式完成的。通过查看APPSBL的ELF头能够得知其需要运行在32位指令集架构下。EL3/Monitor模式改变到32位模式,然后再启动APPSBL。

    7、APPSBL加载、验证kernel。APPSBL通过SCM调用改变到HLOS kernel需要的AArch64模式。这和之前LK直接跳转到kernel运行是不同的。

    8、HLOS kernel通过PIL加载MBA到DDR。

    9、HLOS kernel对Hexagon modem DSP进行解复位。

    10、Modem PBL继续它的启动。

    11、HLOS kernel 通过PIL加载AMSS modemimage到DDR。

    12、Modem PBL验证MBA然后跳转到MBA。

    13、HLOS通过PIL加载WCNSS(Pronto)image到DDR。

    14、HLOS对WCNSS(Pronto)进行解复位以便Prontoimage开始执行。

    15、HLOS通过PIL加载LPASS image到DDR。

    16、HLOS对LPSAA进行解复位以便LPASSimage开始执行。

    附录:各子系统构件框图

  • 相关阅读:
    不要轻易相信ALV
    什么是SAP Note?如何打SAP Note?
    BW作为源系统连接时,激活DSO或其他模型时提示8*数据源不存在,无法激活
    MDX Parser问题导致BO无法连通BW的解决方案
    BW中跳转报表参数传递
    SD、MM转换BI CONTENT激活错
    如何加载经过许可的第三方断字符
    把SQL Server 错误日志导出为EXCEL 并发送到指定的ftp 或者 共享盘
    tsql 调用作业
    SQL Server 2005 维护计划无法保存
  • 原文地址:https://www.cnblogs.com/schips/p/how_qualcomm_soc_boot.html
Copyright © 2011-2022 走看看