zoukankan      html  css  js  c++  java
  • 高通8953启动流程【转】

    本文转载自:https://blog.csdn.net/xiezhi123456/article/details/80989150

    高通8953启动流程

            嵌入式工程师有必要了解芯片启动过程,在分析、调试各种问题时都有可能涉及这方面知识。同时,这部分知识复杂,涉及到芯片内部架构,启动各个阶段软件代码执行顺序,启动模式等等。以常用的MSM8953芯片启动过程为例,进行宏观分析。

    处理器核心

    从上图看出,MSM8953处理器有5个,分别为:

    1、APPS: Cortex A53 core,运行Android。

    2、RPM(Resource Power Manager):Cortex M3 core,主要用于低功耗应用。

    3、Modem(MPSS_QDSP6):高通自有指令集处理器,处理3G、4G通信协议等。

    4、Pronto(WCNSS):处理WiFi相关代码

    5、LPAS:音频相关

    对应下面芯片硬件结构图中各个处理器的框图来看就很清晰。


    启动相关image介绍:

    1、PBL(Primary BootLoader) 位于rom(只读内存)中,是芯片上电后执行的真正第一行代码,在正常启动流程中会加载SBL1。如果启动异常会虚拟出9008端口用于紧急下载(短接板子上的force_boot_from_usb引脚(MSM8953 为gpio37)到1.8v强制进入紧急下载模式)。

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

    3、QSEE/TrustZone  安全相关,如fuse(安全熔丝)。

    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 BootAuthenticator) Modem处理器启动鉴权。

    启动流程

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

    2、在Cortex A53中运行的PBL会加载:

    a)从启动设备(如EMMC)加载SBL1 segment1到L2(即为TCM)。

    b)加载SBL1 segment2到RPM处理器的RAM中。

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

    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。

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

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

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

    a)APPSBL只能在AArch32模式开始运行。

    b)这时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开始执行。

    下面是流程的简化图,其中区分了AArch32和AArch64位的QSEE/TrustZone。

    关于EMMC和DDR的初始化时间问题,从上面的描述中可以看到。

    1、PBL中是含有EMMC驱动的,有访问EMMC的能力,自身运行在MCU内部SRAM中。

    2、除了PBL程序的img在MCU片内ROM外,其余img均存储在EMMC中。

    3、PBL首先从EMMC加载SBL1到L2(内部缓存并非DDR),SBL1同样运行在片内SRAM。

    4、有SBL1初始化DDR各种时序后,DDR自此可用(eMMC一直可用)。

    5、再由SBL1加载其余各个img到DDR,然后按照linux的正常顺序启动。
    ---------------------
    作者:xiezhi123456
    来源:CSDN
    原文:https://blog.csdn.net/xiezhi123456/article/details/80989150
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    ABAP 程序中的类 沧海
    ABAP类的方法(转载) 沧海
    More than 100 ABAP Interview Faq's(2) 沧海
    SAP and ABAP Memory总结 沧海
    ABAP Frequently Asked Question 沧海
    ABAP System Reports(Additional functions) 沧海
    ABAP Questions Commonly Asked 1 沧海
    ABAP Tips and Tricks 沧海
    ABAP System Fields 沧海
    ABAP 面试问题及答案(一):数据库更新及更改 SAP Standard (转) 沧海
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/9998427.html
Copyright © 2011-2022 走看看