首页 > 编程知识 正文

高通骁龙625处理器,一键进入高通9008模式

时间:2023-05-05 07:45:14 阅读:47475 作者:4036

高通8953启动流程

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

处理器核心

如上图所示,MSM8953处理器有五个处理器:

1、应用:运行Cortex a53酷睿、安卓。

2、资源电源管理器(rpm ) :酷睿,主要用于低功耗APP应用。

3、modem(mpss_qdsp6 ) :处理高通量专有指令集处理器、3G、4G通信协议等。 4、pronto(WCNSS ) :处理WiFi相关代码

5、LPAS :音频相关

从以下的与芯片硬件结构图的各处理器相对应的框图来看是显而易见的。

开始介绍相关的image :

1、主引导加载器(PBL )位于rom (只读加载器)中,是芯片通电后运行的第一行真正的代码,在正常启动过程中加载SBL1。 出现启动异常时虚拟弹出9008端口用于紧急下载(从短板上的force_boot_from_usb引脚(MSM8953为gpio37 )强制进入紧急下载模式)。

2、SBL1(secondbootloaderstage1)位于EMMC,由PBL加载,初始化buses、DDR、clocks等后,9006端口虚拟化,无法通电时用于dump ram

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

4、DEVCFG OEM配置信息(例如OEM锁定)。

5、调试策略调试相关。

6、APPSBL是引导加载器,目前使用的是lk (轻量级密钥)。

7、hlos (高清操作系统)为Linux/Android。

8、调制解调器PBL是调制解调器处理器的PBL。 9、调制解调器(MBA )调制解调器处理器开始认证。

启动进程

1、接通系统电源,将MSM8953从电源接通复位后开始运行。

2、加载在Cortex A53上运行的PBL。

a )从引导设备(如EMMC )加载SBL1 segment1到L2 (即TCM )。

b )将sbl 1段2加载到RPM处理器的RAM中。

3、SBL1 segment1初始化DDR,完成以下加载:

a )从引导设备将QSEE image加载到DDR中。

b )将DEVCFG image从引导设备加载到DDR中。

c )将调试策略图像从引导设备加载到DDR中。

d )从引导设备将hlosappsbl (引导加载器) image加载到DDR中。

e )从引导设备将RPM固件图像加载到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将运行控制权交给HLOSappsbl(bootloader )。

a ) APPSBL只能在AArch32模式下工作。

b )此时,AArch32的运转模式的切换是在EL3/Monitor模式下进行的。 通过APPSBL的ELF标头,您可以看到它需要在32位指令集体系结构下运行。 将EL3/Monitor模式更改为32位模式,然后启动APPSBL。

7、APPSBL加载,验证密钥。 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和灾难恢复初始化时间的问题,可以从上述说明中找到。

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、将其余各img从SBL1加载到DDR中,然后按linux正常顺序启动。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。