当前位置: 首页 > news >正文

我的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 

启动不同阶段

启动过程:

详细内容:

  1. PBL 阶段
    1. 黑色块表示具体的ROM,TME也是开机 最初阶段进行运行的firmware,TME全称为Trust Managerment Engine,以看名字就知道与安全有关。通常是为开机提供Rot和一套验证机制。蓝色块代表了不同阶段的执行程序,e.g 各种loader。
    2. 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
    3. 如果启动失败,PBL会创建一个虚拟端口9008供镜像下载。
    4. PBL还会检查BootOption GPIO或fuse来确定当前的启动方式,如通过USB或Flash EMMC或者UFS启动。
  2. SBL阶段 (高通新平台用xbl sc替换,Android12之前都还有)
    1. SBL(Secondary Boot Loader)镜像从EMMC/UFS加载并进行校验。
    2. SBL负责将镜像分配到不同的内存区域,如RPM Code RAM。
    3. SBL还负责处理电源、休眠唤醒时钟等相关管理任务。
  3. XBL SC阶段
    1. 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进行设计确认。提出我们的需求,请高通实现。这个对架构师的要求比较高,需要看的远才行。
    2. XBL SC loads SHRM image from the boot device and TME authenticates and brings it out of reset. 
    3. XBL SC loads AOP CFG and AOP image from the boot device and TME authenticates and brings AOP out of reset.
    4. XBL SC loads CPUCP firmware image from the boot device and TME authenticates it.
    5. XBL SC loads TZ device configuration (DEVCFG) image and Qualcomm TEE image from the boot device and TME authenticates it.
    6. ...
    7. xbl sc是高通签名的一个镜像文件,是否会影响release的bootup?看上去并不会!
    8. XBL config的主要内容有哪些?xbl_config.elf
      1. 包含了CDT,这个很重要,现在高通不希望我们改动CDT了,他的code是IDP的CDT,release给我们的code有而是基于IDP开发的。关于CDT的细节可以参考我的NPI项目之设备系统启动(一) -- 客制化/给设备身份的CDT-CSDN博客
      2. PMIC, DDR and XBL device tree。
  4. XBL阶段 
    1. XBL(Extended Boot Loader)阶段,用于对硬件环境进行初始化,但这些通常与高通特定的技术相关,且可能不会出现在所有的高通平台上。
    2. 从XBL sc切换到XBL core, which is known as UEFI.
  5. UEFI 阶段
    1. UEFI mounts and runs ABL firmware volume (FV), which has Fastboot and Linux loader applications.
    2. 进行charging有关的设定和初始化,能够启动ADSP中支持PD快充
    3. pre-charge/quick charge/
  6. ABL阶段
    1. ABL的入口代码位于Linuxloader.c,其入口函数是Linuxloaderentry().
    2. 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.
  7. Kernel 阶段
    1. 从EMMC/UFS 中获取boot.img并加载到指定的内存区域。
    2. 加载内核、ramdisk、devicetree等组件到指定地址,然后引导kernel。
    3. 内核启动入口在head.S中,最终调用的函数是start_kernel,位于main.c中。
  8. Android 阶段
    1. 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 文献速递介绍 虽然深度学习在医疗保健研究中产生了显著影响,但其在医疗保健领域的影响无疑比在其他应用领域更慢、更有限。造成这种情况的一个重要原因是&#xff…...

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副本默认只读&#xff0c;也就是slave只有只读权限 replicationOf myapplicat…...

小型医院医疗设备管理系统|基于springboot小型医院医疗设备管理系统设计与实现(源码+数据库+文档)

小型医院医疗设备管理系统目录 目录 基于springboot小型医院医疗设备管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、职员信息管理 2、设备信息管理 3、库房信息管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、…...

CSS学习(三)

目录&#xff1a; 1. CSS引入方式 1.1 三种样式表 1.2 内部样式表&#xff08;嵌入式引入&#xff09; 1.3 行内样式表&#xff08;内联样式表&#xff09; 1.4 外部样式表 1.5 总结 1. CSS引入方式 1.1 三种样式表 1.2 内部样式表&#xff08;嵌入式引入&#xff09; …...

CentOS7安装InfluxDB2简易教程

InfluxDB是一个开源的时间序列数据库&#xff0c;它专门用于处理大规模的时间序列数据。时间序列数据是在特定时间点上收集的数据&#xff0c;例如传感器数据、监控数据、应用程序日志等。 InfluxDB设计用于高效地存储、查询和分析大量的时间序列数据。它具有高性能、可扩展性和…...

数据库:信息存储与管理的关键

数据库&#xff1a;信息存储与管理的关键 数据库是现代信息系统中不可或缺的组成部分&#xff0c;它承担着存储、管理和检索数据的重要任务。本文将详细介绍数据库的定义、分类、作用以及特点。 1. 数据库的介绍 数据库是一个有组织的数据集合&#xff0c;用于存储和管理大量…...

极智芯 | 解读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"&#xff0c;在对象容器中不允许重名。 1.硬件rtc设备基类 此层处于设备驱…...

产品经理学习-产品运营《流程管理》

如何进行流程管理 信息可视化 甘特图-流程管理思维导图-方案讨论原型图-活动文档 明确责任制 分工明确&#xff0c;关键环境有主负责人通过时间倒推督促管理 沟通技巧 明确共同利益以结果激励做好信息同步 如何进行监控活动效果 监控活动的效果是要监控数据 活动每个环境的…...

压缩感知——革新数据采集的科学魔法

引言&#xff1a; 在数字时代&#xff0c;数据以及数据的收集和处理无处不在。压缩感知(Compressed Sensing, CS)是一种新兴的数学框架&#xff0c;它挑战了我们传统上对数据采集和压缩的看法&#xff0c;给医学图像、天文观测、环境监测等领域带来了颠覆性的影响。但到底什么…...

华为配置直连三层组网直接转发示例

华为配置直连三层组网直接转发示例 组网图形 图1 配置直连三层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户接入WLAN网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff…...

MCAL知识点(二十八):TC275如何通过EB-Tresos配置实现硬件触发ADC同步采样(电机控制器三相电流同步采样)

目录 1、概述 2、实现目标 3、EB-Tresos配置 3.1、AdcGeneral 3.2、AdcGlobInputClass 3.3、AdcHwUnit_X...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...