msm8953

高通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的正常顺序启动。

相关阅读

高通modem启动过程_「msm8953」高通8953启动流程 - seo实验室相关推荐

  1. android seekto实现_「seekto」android MediaPlayer 的SeekTo 方法 - seo实验室

    seekto Android使用 mediaplayer 播放video视频过程中, 当用户退出当前播放,再从后台恢复播放时,需要跳转到之前退出的时间点继续播放. 使用的方法基本都是 seekto 之 ...

  2. 利用python画分形图_「分形」python简单的分形图片 - seo实验室

    分形 康托集 # 康托集 import pygame pygame.init() screen = pygame.display.set_caption('康托集') screen = pygame. ...

  3. cookiejar包_「cookiejar」http.cookiejar库之CookieJar - seo实验室

    cookiejar cookiejar和HTTPCookieProcessor 我们在使用爬虫的时候,经常会用到cookie进行模拟登陆和访问.在使用urllib库做爬虫,我们需要借助http.coo ...

  4. wsl2启动桌面_「原创」windows10下自定义WSL安装路径及启动WSL2

    win10是目前在win系列的个人操作系统中,个人觉得是最好用的,没有之一.现在又能拥有WSL2的功能,让ubuntu与win10无缝的结合.简直就是完美的不能再完美了.享受着win10的强大桌面系统 ...

  5. java currenttimemillis 效率_「currenttimemillis」高并发下System.currentTimeMillis()并发问题以及优化对比 - seo实验室...

    currenttimemillis 前言 在高并发场景下system.currenttimemillis()并发问题严重,甚至比创建一个普通对象要耗时的多:在系统中有时候不可避免要打印一些时间戳,但怎 ...

  6. python高阶函数、map reduce 自己如何去定义_「python」高阶函数map、reduce的介绍

    Python map 先看官方介绍: map(function, iterable, ...)Return an iterator that applies function to every ite ...

  7. Supplier JAVA_「supplier」java1.8之supplier理解 - seo实验室

    supplier supplier也是是用来创建对象的,但是不同于传统的创建对象语法:new,看下面代码: public class TestSupplier { private int age; T ...

  8. java expected_「expected」JAVA常见错误之 expected - seo实验室

    expected 例1:public class line1{ int test1=666; line2 l2=new line2(); l2.ShowIt(test1); } 例2:public c ...

  9. 高通modem启动过程_苹果首次承认正自研基带芯片,高通要被抛弃了?

    以苹果技术实力,摆脱依赖,只是时间的问题." 作者 | 肖漫 苹果和高通的基带芯片故事续集,又开始上映了. 据彭博社 12 月 10 日报道,苹果公司芯片负责人对员工表示,苹果已开始为未来的 ...

  10. tomcat 不支持put 高版本_「MG6_DCT280」湿式七档双离合版本-性价比并不高

    上汽名爵_MG6定义为「掀背式运动轿车」,设计感很有些英伦风格,性能也确实可圈可点.然而这台车只有MT版本值得选择,即使在新款升级"DCT280"湿式七档双离合变速箱后也不例外.因 ...

最新文章

  1. java培训教程分享:Java编写软件代码自动提示功能
  2. (二)Thymeleaf标准表达式之——简单表达式
  3. nmon服务器监控工具的使用安装
  4. 创业公司,怎么用人更划算?
  5. boost::combine相关的测试程序
  6. 《精通Python设计模式》学习之原型模式
  7. 元宵节快乐 | 2月15日 星期二 | 携程在国内率先开启混合办公模式;米哈游推出元宇宙品牌;AMD宣布完成对赛灵思的收购...
  8. [USACO08OPEN]寻宝之路Clear And Present Danger
  9. vim 的ctags,taglist和supertab详解
  10. bzoj 1024 SCOI2009 生日快乐
  11. mysql故障切换 java_javaoraclethin和oci连接方式实现多数据库的故障切换
  12. Android学习——写个小实例
  13. 10.React中的组件、父子组件、React props父组件给子组件传值、子组件给父组件传值、父组件中通过refs获取子组件属性和方法...
  14. 税务计算机类考试题型,税务师考试题型分值分配、计算器要求及2020年考试时间安排...
  15. java 解析json数据流的几种方式
  16. 支气管分割并3D展示效果
  17. 2019年几大主流的前端框架(UI/JS)框架
  18. 两台Linux完美实现双机热备
  19. 微信开发之微信网页授权获取openid
  20. UE4实现一个简单的炸弹爆炸与镜头振动效果

热门文章

  1. html5在线裁剪,HTML5和JQuery裁剪图像实时预览缩略图并上传
  2. dll,sys文件被认定为病毒后如何删除
  3. 一个标准的k-means(误差平方和版本)
  4. Office安装成功之后,.ppt的文档图标显示不正常,怎么解决?
  5. JavaScript梗图详解
  6. 汇编 fsub ,fmul,fdiv,fild,CVTTPS2PI 指令
  7. 怎样压缩PPT文件的体积
  8. 正则表达式数字匹配规则整理
  9. 批量删除 Excel 工作薄文档中的工作表
  10. 计算机网络培训心得PPT,ppt培训心得体会(精选3篇)