对于嵌入式工程师了解芯片启动过程是十分有必要的,在分析、调试各种问题的时候都有可能涉及到这方面的知识。同时这部分知识也是比较复杂的,因为其中涉及到芯片内部架构,启动各个阶段软件代码执行顺序,启动模式等等。下面以比较常用的Qualcomm MSM8953芯片的启动过程为例,进行宏观分析(大部分翻译了高通的手册^-^),下一篇文章进行代码分析。
处理器核心
可以看到MSM8953中的处理器有5个,分别为:
1, APPS Cortex A53 core,运行android
2, RPM(Resource Power Manager) CortexM3 core,主要用于低功耗应用
3, Modem(MSS_QDSP6) 高通自有指令集处理器,处理3G、4G通信协议等
4, Pronto(WCNSS) 处理wifi相关代码
5, LPASS 音频相关
对映下面芯片硬件结构图中各个处理器的框图来看就很清晰了。
启动相关image介绍
1,PBL(Primary Boot Loader) 位于rom中,是芯片上电后执行的真正第一行代码,在正常启动流程中会加载SBL1。如果启动异常会虚拟出9008端口用于紧急下载(短接板子上的force_boot_from_usb引脚(MSM8953 为gpio37)到1.8v可以强制进入紧急下载模式)。
2,SBL1(Second BootLoader