我的NPI项目之设备系统启动(七) -- 高通OS启动阶段和镜像分区简析
每当有新的平台起来的时候,大概率会伴随着新系统的发布,无论是高通的还是Google Andorid的。在做平台Bringup阶段总会遇到各种各样的专业术语。例如,总是会听到有人说PBL,SBL,XBL,UFEI,Bootloader,Kernel,Android 等等。这些是说的启动的不同阶段呢,还是指不同的分区镜像呢?今天就以QCM4490为例,简单做一下解释和区分。
分区(镜像)名称:
xbl,xbl_s.melf
xbl config,xbl_config.elf
uefi,uefi.elf
QSEE/TrustZone,tz.img
super,super.img
vendor,vendor.img
system,system.img
启动不同阶段:
启动过程:

详细内容:
- PBL 阶段
- 黑色块表示具体的ROM,TME也是开机 最初阶段进行运行的firmware,TME全称为Trust Managerment Engine,以看名字就知道与安全有关。通常是为开机提供Rot和一套验证机制。蓝色块代表了不同阶段的执行程序,e.g 各种loader。
- PBL(Primary Boot Loader)负责枚举启动方式和加载SBL(Secondary Boot Loader)镜像。
PBL is a rom-based bootloader and there isn't any log such as UART can be catched by external device, so the best way to debug PBL is JTAG with Trace32。 - 如果启动失败,PBL会创建一个虚拟端口9008供镜像下载。
- PBL还会检查BootOption GPIO或fuse来确定当前的启动方式,如通过USB或Flash EMMC或者UFS启动。
SBL阶段(高通新平台用xbl sc替换,Android12之前都还有)- SBL(Secondary Boot Loader)镜像从EMMC/UFS加载并进行校验。
- SBL负责将镜像分配到不同的内存区域,如RPM Code RAM。
- SBL还负责处理电源、休眠唤醒时钟等相关管理任务。
- XBL SC阶段
- XBL system controller, 用于加载XBL镜像(xbl loader),提供XBL config,并将执行移交到xbl。主要功能是setup xbl运行环境,e.g bus/ DDR / clocks / Charger and CDT 有关的设定。xbl sc的代码通常是不可以更改的,通常是release的二进制镜像文件,俗称xbl_sc(但是它不是一个单独的img,而是被包裹在xbl_s.melf分区中)。如果,我们需要在xbl_sc中进行修改代码,通常做法是提QCOM case。例如,同一套代码在不同设备上启动,并且要选择不同的XBL config, 那么我们就必需要改动XBL SC进行选择。但是这样,会带来一个问题,就是每次codebase升级,我们都需要进行提QCOM case寻求帮助。
所以,这里有个教训就是,在我们需要启用新平台时候,需要进行和Qcom TAM进行设计确认。提出我们的需求,请高通实现。这个对架构师的要求比较高,需要看的远才行。 - XBL SC loads SHRM image from the boot device and TME authenticates and brings it out of reset.
- XBL SC loads AOP CFG and AOP image from the boot device and TME authenticates and brings AOP out of reset.
- XBL SC loads CPUCP firmware image from the boot device and TME authenticates it.
- XBL SC loads TZ device configuration (DEVCFG) image and Qualcomm TEE image from the boot device and TME authenticates it.
- ...
- xbl sc是高通签名的一个镜像文件,是否会影响release的bootup?看上去并不会!
- XBL config的主要内容有哪些?xbl_config.elf
- 包含了CDT,这个很重要,现在高通不希望我们改动CDT了,他的code是IDP的CDT,release给我们的code有而是基于IDP开发的。关于CDT的细节可以参考我的NPI项目之设备系统启动(一) -- 客制化/给设备身份的CDT-CSDN博客
- PMIC, DDR and XBL device tree。
- XBL system controller, 用于加载XBL镜像(xbl loader),提供XBL config,并将执行移交到xbl。主要功能是setup xbl运行环境,e.g bus/ DDR / clocks / Charger and CDT 有关的设定。xbl sc的代码通常是不可以更改的,通常是release的二进制镜像文件,俗称xbl_sc(但是它不是一个单独的img,而是被包裹在xbl_s.melf分区中)。如果,我们需要在xbl_sc中进行修改代码,通常做法是提QCOM case。例如,同一套代码在不同设备上启动,并且要选择不同的XBL config, 那么我们就必需要改动XBL SC进行选择。但是这样,会带来一个问题,就是每次codebase升级,我们都需要进行提QCOM case寻求帮助。
- XBL阶段
- XBL(Extended Boot Loader)阶段,用于对硬件环境进行初始化,但这些通常与高通特定的技术相关,且可能不会出现在所有的高通平台上。
- 从XBL sc切换到XBL core, which is known as UEFI.
- UEFI 阶段
- UEFI mounts and runs ABL firmware volume (FV), which has Fastboot and Linux loader applications.
- 进行charging有关的设定和初始化,能够启动ADSP中支持PD快充
- pre-charge/quick charge/
- ABL阶段
- ABL的入口代码位于Linuxloader.c,其入口函数是Linuxloaderentry().
- Linux loader application (part of ABL FV) loads and authenticates the HLOS kernel with verified boot, jumps to HLOS. The HLOS runs at nonsecure EL1 mode.
- Kernel 阶段
- 从EMMC/UFS 中获取boot.img并加载到指定的内存区域。
- 加载内核、ramdisk、devicetree等组件到指定地址,然后引导kernel。
- 内核启动入口在head.S中,最终调用的函数是start_kernel,位于main.c中。
- Android 阶段
- init 经常创建孵化器进程,孵化器进程再逐个的创建Android运行时的service。显示界面,进入Android;
当我们熟悉了分区和阶段之后,在bringup主板阶段,就可以很好的区分,代码执行到哪个阶段了,具体位于哪个分区代码中。
--熟悉启动,定制启动。
相关文章:
我的NPI项目之设备系统启动(七) -- 高通OS启动阶段和镜像分区简析
每当有新的平台起来的时候,大概率会伴随着新系统的发布,无论是高通的还是Google Andorid的。在做平台Bringup阶段总会遇到各种各样的专业术语。例如,总是会听到有人说PBL,SBL,XBL,UFEI,Bootload…...
vue框架-vue-cli
vue-cli Vue CLI是一个官方的脚手架工具,用于快速搭建基于Vue.js的项目。Vue CLI提供了一整套可配置的脚手架,可以帮助开发人员快速构建现代化的Web应用程序。 Vue CLI通过提供预先配置好的Webpack模板和插件,使得开发人员可以在不需要手动编写Webpack配置的情况下快速创建…...
Sora (text-to-video model-文本转视频模型)
以下翻译自维基百科 Introduction Sora 是由美国人工智能 (AI) 研究组织 OpenAI 开发的文本到视频模型。它可以根据描述性提示生成视频,并及时向前或向后扩展现有视频。截至 2024 年 2 月,它尚未发布,尚未向公众开放。 History 在 Sora 之…...
java生态环境评价Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 java 生态环境评价管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…...
数据结构-最短路径(Dijkstra算法与Floyd算法)
介绍 对于网图来说,最短路径是指两顶点之间经过的边上权值之和最少的路径,其路径上第一个点记为源点,最后一个为终点。 计算最短路径有两个经典算法,即迪杰斯特拉(Dijkstra)算法与弗洛伊德(Fl…...
文献速递:GAN医学影像合成--联邦生成对抗网络基础医学图像合成中的后门攻击与防御
文献速递:GAN医学影像合成–联邦生成对抗网络基础医学图像合成中的后门攻击与防御 01 文献速递介绍 虽然深度学习在医疗保健研究中产生了显著影响,但其在医疗保健领域的影响无疑比在其他应用领域更慢、更有限。造成这种情况的一个重要原因是ÿ…...
Java实现自动化pdf打水印小项目 使用技术pdfbox、Documents4j
文章目录 前言源码获取一、需求说明二、 调研pdf处理工具word处理工具 三、技术栈选择四、功能实现实现效果详细功能介绍详细代码实现项目目录WordUtilsMain类实现部分:第一部分Main类实现部分:第二部分Main类实现部分:第三部分 资料获取 前言…...
hive load data未正确读取到日期
1.源数据CSV文件日期字段值: 2.hive DDL语句: CREATE EXTERNAL TABLE test.textfile_table1(id int COMMENT ????, name string COMMENT ??, gender string COMMENT ??, birthday date COMMENT ????,.......) ROW FORMAT SERDE org.apache.…...
C++ 遍历map的3中方法
方法1 #include <iostream> #include <string> #include <map> using namespace std;int main() {map<string, string> nameList {{"张三丰", "武当山"},{"张无忌", "光明顶"},{"张二蛋", "…...
redis 主从模式,sentinel 模式配置
编辑 sentinel.xml 和 redis.conf redis.conf 中核心是配置 bind 192.168.64.144 daemonize yes protected-mode no dbfilename redis-6379.rdb #默认dump.rdb replica-read-only yes # 自动2.6副本默认只读,也就是slave只有只读权限 replicationOf myapplicat…...
小型医院医疗设备管理系统|基于springboot小型医院医疗设备管理系统设计与实现(源码+数据库+文档)
小型医院医疗设备管理系统目录 目录 基于springboot小型医院医疗设备管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、职员信息管理 2、设备信息管理 3、库房信息管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、…...
CSS学习(三)
目录: 1. CSS引入方式 1.1 三种样式表 1.2 内部样式表(嵌入式引入) 1.3 行内样式表(内联样式表) 1.4 外部样式表 1.5 总结 1. CSS引入方式 1.1 三种样式表 1.2 内部样式表(嵌入式引入) …...
CentOS7安装InfluxDB2简易教程
InfluxDB是一个开源的时间序列数据库,它专门用于处理大规模的时间序列数据。时间序列数据是在特定时间点上收集的数据,例如传感器数据、监控数据、应用程序日志等。 InfluxDB设计用于高效地存储、查询和分析大量的时间序列数据。它具有高性能、可扩展性和…...
数据库:信息存储与管理的关键
数据库:信息存储与管理的关键 数据库是现代信息系统中不可或缺的组成部分,它承担着存储、管理和检索数据的重要任务。本文将详细介绍数据库的定义、分类、作用以及特点。 1. 数据库的介绍 数据库是一个有组织的数据集合,用于存储和管理大量…...
极智芯 | 解读NVIDIA RTX5090 又是一波被禁售的节奏
欢迎关注我的公众号「极智视界」,获取我的更多技术分享 大家好,我是极智视界,本文分享一下 解读NVIDIA RTX5090 又是一波被禁售的节奏。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 按 NVIDIA GPU …...
rtt的io设备框架面向对象学习-硬件rtc设备
目录 1.硬件rtc设备基类2.硬件rtc设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 硬件rtc和软件rtc设备是互斥的。因为它们的名字都叫"rtc",在对象容器中不允许重名。 1.硬件rtc设备基类 此层处于设备驱…...
产品经理学习-产品运营《流程管理》
如何进行流程管理 信息可视化 甘特图-流程管理思维导图-方案讨论原型图-活动文档 明确责任制 分工明确,关键环境有主负责人通过时间倒推督促管理 沟通技巧 明确共同利益以结果激励做好信息同步 如何进行监控活动效果 监控活动的效果是要监控数据 活动每个环境的…...
压缩感知——革新数据采集的科学魔法
引言: 在数字时代,数据以及数据的收集和处理无处不在。压缩感知(Compressed Sensing, CS)是一种新兴的数学框架,它挑战了我们传统上对数据采集和压缩的看法,给医学图像、天文观测、环境监测等领域带来了颠覆性的影响。但到底什么…...
华为配置直连三层组网直接转发示例
华为配置直连三层组网直接转发示例 组网图形 图1 配置直连三层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户接入WLAN网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时ÿ…...
MCAL知识点(二十八):TC275如何通过EB-Tresos配置实现硬件触发ADC同步采样(电机控制器三相电流同步采样)
目录 1、概述 2、实现目标 3、EB-Tresos配置 3.1、AdcGeneral 3.2、AdcGlobInputClass 3.3、AdcHwUnit_X...
Lindy流程冷启动死亡陷阱(97%新手踩中的第3个环节):实时检测+自动回滚机制详解
更多请点击: https://kaifayun.com 第一章:Lindy流程冷启动死亡陷阱的底层认知 Lindy效应在软件工程中并非仅适用于“越老越可靠”的技术寿命预测,它更深层地揭示了一种反直觉的系统演化规律:一个尚未被时间验证的流程࿰…...
别再死记硬背WideDeep了!用TensorFlow 2.x手把手复现Google Play的推荐模型(附源码)
从零实现Wide&Deep推荐模型:TensorFlow 2.x实战指南 在推荐系统领域,Google提出的Wide&Deep模型架构已经成为工业界的经典范式。但大多数教程仅停留在理论讲解层面,当开发者真正动手实现时,往往会遇到特征工程适配、联合训…...
通过curl命令直接调试Taotoken大模型接口的完整指南
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过curl命令直接调试Taotoken大模型接口的完整指南 对于开发者而言,直接使用curl命令调用HTTP API是一种基础且强大的…...
终极解决方案:三分钟掌握全网资源下载神器res-downloader
终极解决方案:三分钟掌握全网资源下载神器res-downloader 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 还在为无…...
利用Taotoken模型广场为不同业务场景快速选型与测试合适大模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken模型广场为不同业务场景快速选型与测试合适大模型 为客服对话、内容生成、代码辅助等不同业务场景挑选合适的大模型&a…...
如何快速构建数学可视化:Manim交互式开发完整教程
如何快速构建数学可视化:Manim交互式开发完整教程 【免费下载链接】manim Animation engine for explanatory math videos 项目地址: https://gitcode.com/GitHub_Trending/ma/manim 想要告别数学动画制作中反复修改代码、重新渲染的烦恼吗?&…...
紧急预警:传统ML Ops正被Agent-native ML取代!3类组织已启动迁移,你还在手动调参?
更多请点击: https://kaifayun.com 第一章:AI Agent机器学习应用的范式跃迁 传统机器学习系统通常以静态模型为中心,依赖人工特征工程、固定训练-推理流水线与离线评估闭环。而AI Agent的兴起正推动一场根本性范式跃迁:从“被动预…...
用Python和NumPy实现2D图像旋转:从复数乘法到旋转矩阵的保姆级实践
用Python和NumPy实现2D图像旋转:从复数乘法到旋转矩阵的保姆级实践 在计算机视觉和游戏开发中,图像旋转是最基础却至关重要的操作之一。想象一下,当你需要调整一张照片的角度,或者在游戏中让角色转向特定方向时,背后的…...
2026山东省数学建模D题思路分享(附源码,论文)
D题:基于多维指标因子分析的"苏超"球队竞争力评估 —— 解题思路 完整思路,代码,论文:https://docs.qq.com/doc/DUVJPa1R5YWhHaE9Y 一、问题概述 江苏省城市足球联赛(“苏超”)以"一城一主场"模式…...
告别手速焦虑:大麦抢票自动化系统全攻略
告别手速焦虑:大麦抢票自动化系统全攻略 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到演唱会门票而烦恼吗?每…...
