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

news2024/9/30 17:24:44

【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.coloradmin.cn/o/905827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8编写yaml文件小工具

在刚接触k8s的时候觉得yaml资源文件非常的难写,完全看不懂,经过一段时间的摸索学习,发现k8s平台中是提供了一系列的工具和技巧的,可以帮助我们很好的编写资源文件,提升编写yaml文件的能力,常用的命令工具是…

python爬虫9:实战2

python爬虫9:实战2 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好…

时序预测 | MATLAB实现SO-CNN-LSTM蛇群算法优化卷积长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现SO-CNN-LSTM蛇群算法优化卷积长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现SO-CNN-LSTM蛇群算法优化卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 时序预测 | MATLAB实现SO-CNN-LSTM蛇群…

深入解析淘宝API,实现高效商务应用

淘宝API的基本调用 1. API文档与SDK 淘宝API官方提供了详细的API文档,包含了API的使用说明、参数列表、示例代码等内容。开发者可以通过文档了解每个API接口的具体功能和使用方法。此外,淘宝API还提供了多种编程语言的SDK,方便开发者进行快速…

桌游新篇:3.1 UserCase分析

距离上一次停止更新这个系列有将近9个月了。 工作这么久,学会了一件事,就是想清楚再动手。当然,后续工作已经渐渐展开了,而且当下属于天时地利人和(既有当前MR设备带来的硬件buff,又有大语言模型&#xff…

SOPC之NIOS Ⅱ实现电机转速PID控制

通过FPGA开发板上的NIOS Ⅱ搭建电机控制的硬件平台,包括电机正反转、编码器的读取,再通过软件部分实现PID算法对电机速度进行控制,使其能够渐近设定的编码器目标值。 一、PID算法 PID算法(Proportional-Integral-Derivative Algo…

21-注意点说明:scoped样式冲突 / data

组件的三大组成部分 - 注意点说明 组件的样式冲突 scoped 默认情况:写在组件中的样式会 全局生效 -> 因此很容易造成多个组件之间的样式冲突问题 1.全局样式: 默认组件中的样式会作用到全局 2.局部样式: 可以给组件加上 scoped 属性,可以让样式只作用于当前组件 scoped原理…

《有效调节情绪,保持工作心态平和》

工作中,我们有时会遇到各种挑战和困难,这些挑战和困难可能引发我们的负面情绪,例如焦虑、愤怒和沮丧等。然而,保持稳定的情绪是实现高效工作的重要因素之一。本文将分享如何在工作中保持稳定的情绪。 首先,让我们来谈谈…

Spring Boot 如何通过jdbc+HikariDataSource 完成对Mysql 操作

😀前言 本篇博文是关于Spring Boot 如何通过jdbcHikariDataSource 完成对Mysql 操作的说明,希望你能够喜欢😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的…

Python多组数据三维绘图系统

文章目录 增添和删除坐标数据更改绘图逻辑源代码 Python绘图系统: 基础:将matplotlib嵌入到tkinter 📈简单的绘图系统 📈数据导入📈三维绘图系统自定义控件:坐标设置控件📉坐标列表控件 增添和…

录屏有哪些讲究?有哪些好用的录屏软件?

在如今数字时代,视频分享已经成为一种流行的传播方式。为了制作高质量的视频内容,录屏已经成为了一种必备的技能。但是,要想制作出令人满意的录屏视频,需要了解一些讲究和使用一些好用的录屏软件。 录屏是一种视觉传达方式&#x…

【prism】发布订阅和取消订阅,进一步梳理

一个对象对应一个事件订阅 一个事件是可以被重复订阅的,如果一个事件被订阅了三次,那边发布一次该事件,就会触发三次事件订阅: 通过观察Prism的事件聚合器对象,发现它此时包含了三个事件对象,其中第三个事件订阅数量达到了3! 这样的话,如果调用一次 Publish ,那么S…

Android 获取 SHA256 签名

在 Android Studio 中的 Terminal ,输入命令: keytool -list -v -keystore debug.keystore 如果出现以下提示: keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 按照提示输入相关信息,…

SIP 7英寸触摸屏寻呼主机

SV-8006TP SIP7英寸触摸屏寻呼主机 一、描述 SV-8006TP是我司的一款SIP桌面式对讲广播主机,具有10/100M以太网接口,从网络接口接收网络的音频数据,提供立体声音频输出。 SV-8006TP寻呼话筒可以通过麦克风或者本地线路输入对终端进行分区广…

Java【手撕双指针】LeetCode 283. “移动零“, 图文详解思路分析 + 代码

文章目录 前言一、移动零1, 题目2, 思路分析3, 代码展示 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链表,…

传统图像处理之直方图均衡化

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。 一、参考资料 直方图均衡化的原理及实现 图像处理之直方图均衡化 二、直方图 1. 直方图的概念 图像的灰度直方图,描述了图像中灰度分布情况&#xf…

BaiChuan13B多轮对话微调范例

前方干货预警:这可能是你能够找到的,最容易理解,最容易跑通的,适用于多轮对话数据集的大模型高效微调范例。 我们构造了一个修改大模型自我认知的3轮对话的玩具数据集,使用QLoRA算法,只需要5分钟的训练时间…

antd5源码调试环境启动(MacOS)

将源码下载至本地 这里antd5 版本是5.8.3 $ git clone gitgithub.com:ant-design/ant-design.git $ cd ant-design $ npm install $ npm start前提:安装python3、node版本18.14.0(这是本人当前下载的版本) python3安装教程可参考:https://…

达梦数据库读写分离集群原理

概述 本文就达梦数据库读写分离原理进行介绍。 达梦读写分离集群特点: 可以配置8个即时备库或8个实时备库;读写操作自动分离、负载均衡;提供数据同步;备库故障自动处理,故障恢复自动数据同步等功能,也支持…

基于”Python+”多技术融合在蒸散发与植被总初级生产力估算中的应用

熟悉蒸散发ET及其组分(植被蒸腾Ec、土壤蒸发Es、冠层截留Ei)、植被总初级生产力GPP的概念和碳水耦合的基本原理;掌握利用Python与ArcGIS工具进行课程相关的操作;熟练掌握国际上流行的Penman-Monteith模型,并能够应用该…