高通8155/8295 boot分析

这篇具有很好参考价值的文章主要介绍了高通8155/8295 boot分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

通用boot流程

8155/8295 boot流程概述


前言

本文将基于高通8155/8295 Q+A hypervisor平台分析整个boot的启动流程。高通其他SOC芯片的启动流程大致相同,所以本文也具备一定的参考性。

阅读本文需要你有一定的嵌入式开发经验或者具备一定的操作系统原理知识。

CPU通用boot流程

下面这张图展示了一个通用的boot流程:

高通8155/8295 boot分析

 注:图片来源于Arria ® 10 SoC Boot User Guide,1.1.1. Typical Boot Flow,PG 4

1,SOC power on/reset之后,将会首先执行CPU内部的Boot ROM代码

2,Boot ROM至少完成下面几个事情:

        2.1,根据bootconfig判断当前SOC启动方式

        2.2,根据不同的启动方式,初始化对应的驱动,例如如果设定为UFS启动,BootROM则会初始化UFS驱动

        2.3,从UFS中加载第一阶段的bootloader,并在片内ram中,跳转到第一阶段的bootloader

        2.4,第一阶段bootloader初始化ddr硬件,并从UFS中加载第二阶段bootloader到ddr中

        2.5,跳转到第二阶段bootloader(Second-Stage Boot Loader)

3,Second-Stage Boot Loader加载并跳转到操作系统内核镜像

4,操作系统挂载文件系统,开始运行application

上面的boot流程比较简单,很多细节并没有描述到,大部分人对于boot流程的理解可能也仅限于此.但是还有一部分喜欢思考的同学会有几个问题:

1,什么是BootROM?

BootROM是固化在SOC内部的一段代码,不同厂家的叫法可能不太一样,比如高通的叫法是PBL(primary boot loader),其他家也有的叫romcode

2,BootROM上电之后是怎么运行的?

上电之后,如果CPU供电正常,晶振正常起振,那么CPU的指针会被reset到BootROM的第一条指令开始执行

3,SOC是如何知道是哪一种启动方式?

一般通过CPU的boot config pin脚来判断启动方式,当然也可以通过内部的fuse来判断,前提是硬件支持e-fuse(可编程熔断保险丝),且产品已经fuse完成

8155/8295 boot流程概述

下图是8155/8295 boot阶段中XBL的大致工作流程:

高通8155/8295 boot分析

8155/8295 boot流程框图

上面我们已经介绍了通用的CPUboot流程,接下来我们会对8155/8295的boot流程进行简单的介绍。

高通8155/8295 boot分析

注:80-PG469-11 Rev. B

Boot流程说明

1 .  After reset, the Kryo Silver core 0 comes out of reset and then executes PBL
On Kryo Silver core 0, applications PBL initializes hardware (clocks, and so on), CPU caches and MMU, and detects the boot device as per the
boot option configuration:
- Default boot option: UFS > SD > USB
- Default boot option: overridden by EDL cookie or Force USB GPIO
2a. Loads and authenticates XBL-SEC (region #0) from the boot device to OCIMEM
2b. Loads and authenticates XBL-Loader (region #1) from the boot device to Boot IMEM
2c. Loads and authenticates XBL-Debug (region #2) from the boot device to OCIMEM
Jumps to XBL-SEC
3. XBL-SEC runs the security configuration in EL3 mode, and then executes the XBL-Loader in EL1 mode
XBL-Loader initializes hardware and firmware images, CPU caches, MMU, boot device, XBLConfig, PMIC driver, and DDR. It performs DDR
training if applicable, executes an SCM call to XBL-SEC to initialize PIMEM, and initializes clocks and configures the clock frequencies as per
clock plan
4a. Loads and authenticates applications debug policy (APDP) image from the boot device
4b. If, DLOAD cookie is set, loads, and authenticates XBL-RAM dump and jumps to XBL-RAM dump to collect crash dump
4c. Initializes SMEM (shared memory) and fills platform ID and RAM partition table
4d. Loads and authenticates AOP image from the boot device and then bring AOP out of reset
4e. Loads and authenticates DEVCFG (TZ device configuration) image from the boot device
4f. Loads SEC.dat (fuse blowing data) image from the boot storage if exists
4g. Loads and authenticates QTEE image from the boot device
4h. Loads and authenticates QHEE image from the boot device
4i. Loads and authenticates ABL image from the boot device
4j. Executes an SCM call to XBL-SEC to jump to QTEE cold boot
5. QTEE sets up a secure environment, and then transfers the execution to QHEE image
6. QHEE proceeds to execute the XBL core (or XBL region #3) and then, XBL core mounts and transfers the execution to UEFI application processor (ABL FV)
7. Linux loader application (part of ABL FV) loads and authenticates the HLOS kernel with verified boot
8-8’. PIL driver in HLOS applications loads each subsystem image to DDR and configures clocks and power rails required
9. PIL driver in HLOS applications executes an SCM call to request secure PIL driver, authenticates the images, and brings each subsystem out of reset
10-14’. For SP image, SP PBL decrypts the image and loads it to SP SRAM

注:80-PG469-11 Rev. B

Boot流程 Q&A

1, CPU是通过哪几个pin来判断boot启动方式的?这些pin脚是受谁控制?

高通8155/8295 boot分析注:80-PG469-11 Rev. B

上图展示了使用GPIO和e-fuse控制启动具体细节。如果使用GPIO控制启动方式,通常是使用GPIO64/67/68/69这四个pin脚来控制,这几个pin脚在高通EVB开发板中是通过拨码开关来控制高低电平。在实际的产品中,通常是有另外的单片机来控制高低电平,这个单片机通常为NXP的S32单片机系列或者瑞萨的RH850系列.

需要注意,在8155上存在FORCED_USB_BOOT pin(GPIO136),拉高这个pin脚可以直接让SOC强行从USB启动。

高通8155/8295 boot分析

2,如果boot config pin没有指定,默认是什么启动方式?

我们假定boot config pin没有指定指的是低电平,那么按照上面表格的顺序会默认尝试首先从UFS启动,如果UFS启动失败会切换到SD启动,如果SD启动还是失败的则会尝试从USB3.1的口上通过USB方式启动.

3,如何判断boot config是否正确?

一般判断boot config是否正确可以通过测量对应的启动方式的clock/data引脚来确定。

4,实际项目开发中是否需要对boot流程中的代码进行修改?

DEMO项目不需要,SOP项目一般都需要,因为在实际SOP的项目中,需要考虑太多的异常场景了,举个例子,现在一般都是MCU和SOC协同工作,MCU负责监控SOC,这就需要MCU实时的了解到SOC当前所处的状态(boot,work,update,flash),很多场景是没有操作系统运行的,实际在跑的可能只有bootloader,此时就要求bootloader以某种方式通知MCU,当前自己所处的状态。再一个例子,MCU对SOC的watchdog机制是需要覆盖到整个运行期间的,其中当然也包括了bootloder阶段,否则一旦出现hang在bootloader阶段但是又不触发重启就麻烦了.文章来源地址https://www.toymoban.com/news/detail-457582.html

到了这里,关于高通8155/8295 boot分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA学习实践之旅——前言及目录

    很早就有在博客中记录技术细节,分享一些自己体会的想法,拖着拖着也就到了现在。毕业至今已经半年有余,随着项目越来越深入,感觉可以慢慢进行总结工作了。趁着2024伊始,就先开个头吧,这篇博客暂时作为汇总篇,记录在这几个月以及之后从FPGA初学者到也算有一定

    2024年02月03日
    浏览(58)
  • Spring Boot读取resource目录下文件失败解决方案及分析

    最近有个需求,就是需要从resource目录下读取文件返回给用户。在idea中运行时,有些resource下文件读取工具类能够正常获取读取到文件。但是通过java –jar的方式去运行jar包,此时resource下文件读取工具类读取文件就失效了。通过查询搜索,了解到了是读取的方式导致文件读取

    2024年02月05日
    浏览(58)
  • 【SA8295P 源码分析】70 - QAM8295P 原理图参考设计 之 DP、eDP 接口硬件原理分析

    【源码分析】 因为一些原因,本文需要移除, 对于已经购买的兄弟,不用担心,不是跑路, 我会继续持续提供技术支持, 有什么模块想学习的,或者有什么问题有疑问的, 请私聊我,我们 +VX 沟通技术问题,一起学习,一起进步 接下来,我一一私聊已经购买的兄弟添加V

    2024年02月12日
    浏览(56)
  • 从零开始学Spring Boot系列-前言

    在数字化和信息化的时代,Java作为一种成熟、稳定且广泛应用的编程语言,已经成为构建企业级应用的首选。而在Java生态系统中,Spring框架无疑是其中最为耀眼的一颗明星。它提供了全面的编程和配置模型,用于构建企业级应用。随着Spring Boot的出现,这一框架变得更加易于

    2024年02月22日
    浏览(59)
  • 二、高通相机bringup 流程

    和你一起终身学 习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、相机Sensor 点亮相关的文件 二、Sensor 驱动文件详解 一、相机Sensor 点亮相关的文件 1.1 Sensor 驱动XML以及CPP文件 Sensor 文件路径: vendorqcomproprietarychi-cdkoemsensorsensor_name 这颗S

    2024年02月08日
    浏览(47)
  • 【SA8295P 源码分析】87 - SA8295P HQNX + Android 编译环境搭建指导

    因为一些原因,本文需要移除, 对于已经购买的兄弟,不用担心,不是跑路, 我会继续持续提供技术支持, 有什么模块想学习的,或者有什么问题有疑问的, 请私聊我,我们 +VX 沟通技术问题

    2024年02月10日
    浏览(44)
  • 【SA8295P 源码分析 (一)】87 - SA8295P HQNX + Android 编译环境搭建指导

    未订阅的兄弟,不建议订阅专栏了 已订阅的兄弟,请关注下本文末尾,加 联系方式 进行技术交流 还有一个影响磁盘 I/O 读写性能的因素就是 I/O 调度算法。 Linux内核提供了多个I/O调度算法,用于管理和调度块设备的I/O请求,常见的I/O调度算法如下: IOSCHED_DEADLINE (截止时间

    2024年02月07日
    浏览(47)
  • 高通平台&MTK平台驱动开发流程

    高通(Qualcomm)是全球领先的无线通信技术解决方案提供商,尤其在移动通信领域有深远的影响。高通的Snapdragon系列处理器广泛应用于智能手机、平板电脑、智能手表等多种设备中。Snapdragon处理器以其优异的性能、高效的能耗比以及强大的图形和视频处理能力而著称。高通平

    2024年04月13日
    浏览(47)
  • milkv-duo启动流程分析:手动构建boot.sd

    目录 上电测试 制作boot.sd 编译Linux内核 multi.its 在上一篇,我们构建了 fip.bin 。让我们继续用以前的 boot.sd 。我们插上电源, 并没有进入linux系统。这是因为我们没有设置好bootargs。手动输入 此时,成功加载linux内核。输出如下: 编译Linux内核 首先先把defconfig复制过去。修改

    2024年02月08日
    浏览(54)
  • 【SA8295P 源码分析】83 - SA8295P HQNX + Android 完整源代码下载方法介绍

    因为一些原因,本文需要移除, 对于已经购买的兄弟,不用担心,不是跑路, 我会继续持续提供技术支持, 有什么模块想学习的,或者有什么问题有疑问的, 请私聊我,我们 +VX 沟通技术问题

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包