首页 > 其他分享 >Uefi ABL读取XBL设置的标志位

Uefi ABL读取XBL设置的标志位

时间:2024-08-15 10:52:44浏览次数:6  
标签:... ABL gQcomTokenSpaceGuid XBL Uefi EpStatus

PBL(启动固化程序)-> XBL(扩展引导加载程序,负责初始化芯片驱动和核心应用功能。XBL通常会加载一些平台相关的驱动程序,并提供通用接口)-> ABL(应用引导加载程序,负责引导操作系统的启动。)

高通启用UEFI架构的bootloader,有些时候有些状态值,需要ABL阶段获取.

上层思维总是以属性来开端,实际上android 的setproperty和getproperty属性对于uefi启动流程是不可取的.

XBL setSetVariable 设置标志位

#include <Library/UefiRuntimeServicesTableLib.h>//导入头文件
...
...

Boolean EpStatus;
EpStatus = TRUE;
gRT->SetVariable (L"ModuleState", &gQcomTokenSpaceGuid,
            EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,
            (UINTN)sizeof(EpStatus), &EpStatus);

ABL代码端获取值

  #include <Library/UefiRuntimeServicesTableLib.h>//导入头文件
  ...

  BOOLEAN EpStatus;
  UINTN      VarSize = sizeof(BOOLEAN);
  Status = gRT->GetVariable (L"ModuleState", &gQcomTokenSpaceGuid,
                            NULL, &VarSize, (UINT8*)&EpStatus);

EFI_RUNTIME_SERVICES 是关键,当然,我这边使用的高通这个GUID有一个发现就是,这个值我猜测是存入了EMMC的rpmb分区,因为直接刷机此值得状态还是存在的,这个地方还需要继续验证一下,也许日后能用到.

[Guids.common]
  gQcomTokenSpaceGuid =                 { 0x882f8c2b, 0x9646, 0x435f, { 0x8d, 0xe5, 0xf2, 0x08, 0xff, 0x80, 0xc1, 0xbd } }

更多的Uefi SetVariable和GetVariable函数的用法,可以参考[https://edk2-docs.gitbook.io/edk-ii-uefi-driver-writer-s-guide/5_uefi_services/readme.2/525_getvariable_and_setvariable]

UEFI架构的理解还需要进一步的探究,目前只是皮毛的去解决问题

标签:...,ABL,gQcomTokenSpaceGuid,XBL,Uefi,EpStatus
From: https://www.cnblogs.com/linhaostudy/p/18360420

相关文章

  • 在K8S中,Kube-Proxy为什么使用ipvs,而不使用iptables?
    Kubernetes中的kube-proxy是负责实现服务(Services)负载均衡的核心组件之一。它支持两种主要的代理模式:iptables模式和ipvs模式。这两种模式都可以用来实现服务的网络流量转发,但它们之间存在一些关键的区别。1.为什么使用ipvs而不是iptables?性能优势:连接跟踪:ipvs直......
  • 使用diffusers来训练自己的Stable Diffusion 3大模型
    基于diffusers的Stablediffusion训练代码这里给大家介绍一个基于diffusers库来训练stablediffusion相关模型的训练代码,包含Lora、ControlNet、IP-adapter、Animatediff,以及最新的stablediffusion3lora版本的训练代码。现有的一些类似kohya-ss训练器虽然用起来方便,但......
  • Flowable在开启工作流是设置各节点审批人
    该方式用于流程固定并且明确知道每个节点什么人审批。步骤一:指定参数,比如某个节点设置的审批人为${AAAAA}如图:步骤二:在工作流启动前向启动工作流时使用的startProcessInstanceByKeyAndTenantId()方法中填充variables参数,variables中是键值对的形式,其中AAAAA这个参数需要给值......
  • 《python程序语言设计》2018版第7章第2题创建一个stock类,一个公司股票。创建stock,包含
    使用百分比法计算股票变化值百分比法是计算股票变化值的常用方法。具体操作是:将当前股票价格与前一交易日的股票价格进行比较,计算出价格变动的百分比。公式为:(当前价格-前一交易日价格)/前一交易日价格×100%。这种方法简单明了,可以快速得出股票变化的百分比。......
  • Flowable常用方法
    Flowable作为Activiti的分支,其API与Activiti非常相似,但也有一些细微的差别和新增的特性。以下是一些Flowable特有的或常用的方法:流程定义管理部署流程定义:与Activiti类似,通过RepositoryService的createDeployment()方法创建DeploymentBuilder并部署流程定义。查询流程定义:使用R......
  • HashMap和Hashtable的区别 day15
    /*Map:存储元素的特点是每一个元素是一个键值对{【name:"魏一民"】,【age:18】}Map集合的共同拥有的特点:1、Map集合中的元素,键是唯一的,不会在一个Map集合发现两个相同的键1001:魏一民1002:陈真1001:小虎2......
  • vue3 el-table回显选中的数据
    html部分:<el-tableref="multipleTableRef":data="matchLists"stripestyle="width:100%;"@selection-change="handleSelectionChange"row-key="source_id"empty-text="暂无数据"><el-table-col......
  • WPBT (Windows Platform Binary Table) 是一种用于在Windows启动时传递信息的结构。它
    WPBT(WindowsPlatformBinaryTable)的起源可以追溯到Windows操作系统对ACPI(AdvancedConfigurationandPowerInterface)规范的扩展需求。ACPI是一个用于管理硬件配置和电源管理的标准,广泛用于操作系统与固件之间的通信。WPBT是这种规范的一部分,专门设计用于Windows环境。......
  • UEFI Shell 的基本操作和应用场景,适合初学者了解和入门 UEFI Shell 的使用。 UEFI She
    UEFIShell是一种提供命令行接口的环境,用于与UEFI固件进行交互。UEFI(统一可扩展固件接口)是计算机启动过程中的一种固件接口,替代了传统的BIOS。UEFIShell提供了一种方式,让用户在启动操作系统之前进行系统管理和配置。主要特点命令行界面:UEFIShell提供一个类似于操作......
  • ALV TABLE-COTROL
    1.画屏幕 2.流逻辑CONTROLSgr_9112_controlTYPETABLEVIEWUSINGSCREEN9112.PROCESSBEFOREOUTPUT.MODULEstatus_9112.*处理LOOP从内表读到表控制LOOPWITHCONTROLgr_9112_control.MODULEfilltbl1_9112.ENDLOOP.PROCESSAFTERINPUT.*处理LOOP......