【SA8295P 源码分析】03 - SA8295P QNX Host 上电开机流程分析

【SA8295P 源码分析】03 - SA8295P QNX Host上电开机流程分析

  • 一、阶段1 固件开机自检 (SM BIST):APPS PBL加载XBL后触发 INT_RESET进行Warm Reset
  • 二、阶段2 固件开机自检 (SM BIST):加载TZ,初始Hypervisor,启动QNX Kernel,加载并启动各子系统



系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》
本文链接:《【SA8295P 源码分析】03 - SA8295P QNX Host 上电开机流程分析》


一、阶段1 固件开机自检 (SM BIST):APPS PBL加载XBL后触发 INT_RESET进行Warm Reset

在这里插入图片描述

  • 1 . 按下开机键,触发复位信号,高通®Kryo™CPU Gold core 0 核 心 CPU0 退出Reset状态,开始执行 APPS PBL
    初始化硬件(定时器、PRNG、时钟等等),启用caches 缓存和MMU,并根据BOOT PIN 配置检测引导设备:
    默认启动设备为:UFS Extern Storage外置存储
    默认启动选项:被EDL cookie覆盖 或 通过USB GPIO强制配置

  • 2a . APPS PBL 从引导设备bootdevice 加载并验证 XBL Loader 镜像(region #1)到 Boot IMEM 中。 (xbl_a分区中的xbl.elf 镜像)

  • 2b . APPS PBL 从引导设备bootdevice 加载并验证 XBL SDI 镜像(region #2)到 OCIMEM中(片上内部存储器 On-Chip Internal Memory

  • 2c . APPS PBL 从引导设备bootdevice 加载 XBL SEC镜像(region #0)到 Boot IMEM 中,(xbl_sec 分区中的 xbl_sec.mbn 镜像)
    XBL SEC 是一个QC签名的ELF代码段,用于锁定xPUs

  • 3 . XBL SEC跳到 XBL并将 CPU 控制 从 Secure EL3 安全等级3环境 切换到 Non-Secure EL1 非安全等级1环境

  • 4a . 在阶段1引导中,XBL执行SMSS MBIST 进行内存自检(Memory BIST)和 SMSS LBIST进行逻辑自检(Logic BIST),
    加载并验证SMSSCSM内存中的SMSS FW 固件,并Reset SMSS 触发SMSS 运行,
    然后APXBL Loader)将 CPU 控制权移交给SMSS(安全管理) (smss_a中的smss.elf镜像),并进入WFI 待机模式 (standby 模式 Wait For Interrupt)。
    此时,SMSS 将分别在APIMEMLLCCSMMUGEMNOC 这些区域上执行BIST 内存自检。

  • 5 . 自检完成后,在没有PMIC的情况下,整个芯片触发 INT_RESET,进行 Warm Reset 操作
    之所以进行 Warm Reset ,是保持供电,以便保持之前初始化过的一些 TCSR寄存器和 SMSS IMEM/registers的状态。


二、阶段2 固件开机自检 (SM BIST):加载TZ,初始Hypervisor,启动QNX Kernel,加载并启动各子系统


在这里插入图片描述

在阶段一中,整个芯片启动 INT_RESET,启动warm reset ,此时,APPS PBL 代码会重新跑一遍。
详细过程如下:

  • 2a . APPS PBL 从引导设备bootdevice 加载并验证 XBL Loader 镜像(region #1)到 Boot IMEM 中。 (xbl_a分区中的xbl.elf 镜像)

  • 2b . APPS PBL 从引导设备bootdevice 加载并验证 XBL SDI 镜像(region #2)到 OCIMEM中(片上内部存储器 On-Chip Internal Memory

  • 2c . APPS PBL 从引导设备bootdevice 加载 XBL SEC镜像(region #0)到 Boot IMEM 中,(secdata 分区中的 sec.dat
    XBL SEC 是一个QC签名的ELF代码段,用于锁定xPUs

  • 3 . XBL SECEL3模式下运行Security Configuration 启动SMSSsmss_a中的smss.elf镜像),然后跳转到 EL1 非安全环境 并运行XBL Loader

  • 4 . XBL Loader CPU控制权移交给 SMSS 并进入WFI 模式。
    SMSS将分别在DPUCameraCamNocNSPEthernet以太网、PCIe上执行BIST
    自检完毕后,将 CPU 控制权交回给 XBL Loader
    接着 XBL Loaders 继续正常的冷启动流程

  • 4b . XBL Loader 加载和校验 XBL Config 镜像到 BOOT IMEM 中 (xbl_config_a分区中的xbl_config.elf 镜像)

  • 4c . XBL Loader 加载Shrm 镜像到 Code RAM 中(shrm_a分区中的 shrm.elf 镜像)

  • 4d . XBL Loader 加载并验证 MISC 镜像到 BOOT IMEM

  • 4e . XBL Loader 从引导设备 boot device 加载并验证 AOP 镜像 到 AOP CodeRAM 中 (aop_a 分区中的 aop.mbn 镜像)

  • 4f . XBL Loader 触发 AOP 实时响应处理器 Reset ,开始 AOP CodeRAM 中跑 AOP代码

  • 4g . XBL Loader 加载并验证 QSEE 镜像到 pIMEM 中(tz_a 分区中的 tz.mbn

  • 4h . XBL Loader 加载并验证 QHEE 镜像(hyp_a 分区中的 mifs_hyp_la.img 镜像,用于 hypervisor 虚拟化)

  • 4i . XBL LoaderXBL 镜像中加载并验证 UEFI Segment 代码段

  • 4j . XBL Loader 从跳转到 XBL_SEC ,由 XBL_SECCPU 交到 QSEE (TrustZone)手中

  • 5 . QSEETZ)将CPU 转交到 QHEEhypervisor),高通Hypervisor 运行在 EL2 模式,QHEE 配置 SMMUs,并提供虚拟化服务

  • 6 . 高通 Hypervisor 执行 XBLcore 代码(位于 region #3 中),它是在 Non-sec EL1 非安全模式下运行的,
    UEFI 外围镜像加载器(UEFI peripheral image loader (PIL))挂载并运行 ABL firmware volume(FV)固件(abl_a中的 abl_fastboot.elf abl.elf),其中包含 FastbootLinux Loader 应用程序

  • 7 . Linux Loader 应用程序(位于abl.elf镜像)通过 verified boot 加载并验证 HLOS Kernel 镜像(对应 boot_a 中的 boot_la.img,它是 QNX Host Kernel 微内核),HLOS Kernel 运行在 Non-Sec EL1 模式下

  • 8 . HLOS PIL driver (QNX) 将所有子系统 Iris FWCamera FWAudio FWSensor FWTuring FWDeep Learning FW 的镜像加载到DDR,并相应的配置时钟和电源。HLOS PIL driver (QNX) 执行对QSEE (TrustZone)SCM 系统调用,以请求一个安全的 PIL driver,用于验证各子系统的镜像,然后 高通 Hypervisor 触发每个子系统进行 Reset 启动


注意,此时只是 QNX Host 启动起来了,运行在 EL1 环境中,IVI Android Guest 还没启动呢,GVM 是运行在 EL0 中的





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/23904.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flume实践

1 NetCat方式 ]# ./bin/flume-ng agent --conf conf--conf-file ./conf/flume_netcat.conf --name a1 -Dflume.root.loggerINFO,console [rootmaster ~]# yum -y intalll telnet 发数据: ]# telnet master 44444 数据接收,是在终端上接收的&#xff0…

从组件化角度聊聊设计工程化

目录 设计系统 设计系统的定义 设计系统的优势 设计系统存在的问题 设计工程化 设计系统探索 设计系统落地实践 Design Token Design Token 实践 设计工程化理想方案构想 展望 参考文献 近几年围绕业务中台化的场景,涌现出了许多低代码平台。面对多组件…

Qt翻金币小游戏详细教程(内涵所有源码、图片资源)

一、项目简介 翻金币项目是一款经典的益智类游戏,我们需要将金币都翻成同色,才视为胜利。首先,开始界面如下: 点击start按钮,进入下层界面,选择关卡: 在这里我们设立了20个关卡供玩家选择&…

Jmeter组件:Random CSV Data Set Config(随机读取文件数据)

一、Jmeter组件:Random CSV Data Set Config(随机读取文件数据) 功能:该组件可以随机读取CSV文件中的每一行的数据 二、下载插件:(jmeter-plugins-random-csv-data-set-xx.jar),并放到lib/ext目录下,重启jmeter 也可以在Jmeter…

Nginx基本使用以及部署前端项目

前言 最近学习了一下Nginx,整理了一个博客,主要参考的是狂神说的b站视频教程,文章链接如下:狂神说Nginx快速入门 一、下载、启动Nginx 1.下载Nginx 到Nginx官方选择自己电脑适用的稳定版本下载,我下载的的windows版…

ChatGPT免费使用的方法有哪些?

目录 一、ChatGpt是什么? 二、ChatGPT国内免费使用的方法: 第一点:电脑端 第二点:手机端 三、结语: 一、ChatGpt是什么? ChatGPt是美国OpenAI [1] 研发的聊天机器人程序 。更是人工智能技术驱动的自然语…

图像算法工程师岗位的主要职责(合集)

图像算法工程师岗位的主要职责 一、确定岗位的职责 1.根据工作任务的需要确立工作岗位名称及其数量; 2.根据岗位工种确定岗位职务范围; 3.根据工种性质确定岗位使用的设备、工具、工作质量和效率; 4.明确岗位环境和确定岗位任职资格; 5.确定各个岗位之间的相互关系; 6.根据岗位…

Solidity基础七

无论风暴将我带到什么岸边,我都将以主人的身份上岸 目录 一、Solidity的单位 1. 货币Ether 2. 时间单位Time 二、地址的形成 三、以太坊的账户 1.内部账户(简称CA) 2.外部账户(简称EOA) 3.内部账户和外部账户…

【Linux性能优化】你知道什么是平衡负载么

什么是平衡负载 首先大家思考一下,当你发现自己的服务变慢时,你会首先使用什么命令来排查?我通常做的第一件事,就是执行top或者uptime命令来了解系统的负载情况。比如像下面这样,我在命令行里输入top命令,…

[高光谱]使用PyTorch的dataloader加载高光谱数据

本文实验的部分代码参考 Hyperspectral-Classificationhttps://github.com/eecn/Hyperspectral-Classification如果对dataloader的工作原理不太清楚可以参见 [Pytorch]DataSet和DataLoader逐句详解https://blog.csdn.net/weixin_37878740/article/details/129350390?spm1001…

网络货运平台源码 管理平台端+司机端APP+货主端APP源码

网络货运平台系统源码,网络货运平台源码 管理平台端司机端APP货主端APP 遵循政策要求的八项基本功能,结合货主、实际承运人、监管方等多方业务场景,构建人、车、货、企一体的标准化网络货运平台系统。具有信息发布、线上交易、全程监控、金融…

数据库基础——6.排序与分页

这篇文章来讲一下数据库的排序与分页 目录 1.排序数据 1.1排序规则 1.2 单列排序 1.3 多列排序 2.分页 2.1 背景 2.2 实现规则 2.3 拓展 1.排序数据 1.1排序规则 使用 ORDER BY 子句排序 ASC(ascend):升序 ; DESC&a…

vue项目中使用depcheck检查缺失的依赖项目

使用depcheck检查缺失的项目依赖 由来:今天在做地铁的时候,刷短视频发现一个非常好用的东西,分享一下 它可以帮助我们找出问题,在 package.json 中,每个依赖包如何被使用、哪些依赖包没有用处、哪些依赖包缺失。它是解…

2023年,推荐10个让你事半功倍的CSS在线生产力工具

1、CSS Gradient CSS Gradient 是一个在线工具,可以帮助用户创建并生成 CSS 渐变代码。用户可以使用该工具中提供的图形用户界面来调整颜色、方向和渐变类型,然后生成相应的 CSS 代码。用户可以将生成的代码复制并粘贴到自己的 CSS 样式表中&#xff0c…

Linux——操作系统详解

目录 一.操作系统的含义 1.操作系统是什么? 2.那么操作系统为什么要对软硬件资源进行管理呢?这样做的好处在哪里? 3.操作系统又是怎么进行管理的? 如何理解“先描述,再组织”? 二.总结: …

音乐小白乐器选择,如何学一手才艺,推荐尤克里里

乐器难度说明 注意:这里的难度说明是音准的难度,就是能不能发出标准的声音 乐器按照演奏方式分类,分为 演奏方式乐器举例难度等级难度说明敲击木鱼,架子鼓,钢琴1敲击乐是音最准的,敲哪个地方就发什么音&…

记录--超长溢出头部省略打点,坑这么大,技巧这么多?

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在业务中,有这么一种场景,表格下的某一列 ID 值,文本超长了,正常而言会是这样: 通常,这种情况都需要超长省略溢出打点&#xff0…

Kali-linux Gerix Wifi Cracker破解无线网络

Gerix Wifi Cracker是另一个aircrack图形用户界面的无线网络破解工具。本节将介绍使用该工具破解无线网络及创建假的接入点。 9.3.1 Gerix破解WEP加密的无线网络 在前面介绍了手动使用Aircrack-ng破解WEP和WPA/WPA2加密的无线网络。为了方便,本小节将介绍使用Geri…

学习RabbitMQ高级特性

目标: 了解熟悉RabbitMQ的高级特性 学习步骤: 高级特性主要分为以下几点, 官网介绍 1、消息可靠性投递 【confirm 确认模式、return 退回模式】 2、Consumer ACK 【acknowledge】 3、消费端限流 【prefetch】 4、TTL过期时间 【time to live】 5、死信队…

没有权限merge到源git仓库?一招教你如何解决。

在git上贡献项目的时候,一般步骤是,clone源项目到本地,切出一个新的分支,然后在新分支上开发,最后push到远程,然后提出mr。但是对于一些非开源的项目,可能会出现: 这就是说明没有权…
最新文章