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

ABL读取XBL设置的标志位

时间:2024-09-02 23:05:40浏览次数:8  
标签:读取 EFI ABL XBL EpStatus SERVICES UEFI

高通启用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分区,因为直接刷机此值得状态还是存在的,这个地方还需要继续验证一下,也许日后能用到.
bootable\bootloader\edk2\MdePkg\Include\Library\UefiRuntimeServicesTableLib.h

ifndef UEFI_RUNTIME_SERVICES_TABLE_LIB_H

define UEFI_RUNTIME_SERVICES_TABLE_LIB_H

///
/// Cached copy of the EFI Runtime Services Table
///
extern EFI_RUNTIME_SERVICES *gRT;

endif

编译xbl和abl,打印串口即可get到EpStatus的值.

这里需要提到的是,我这边用了QcomTokenSpace这个Protocol,
ABL的QcomModulePkg.dec和XBL的中均添加了相应的Protocol
[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架构的理解还需要进一步的探究,目前只是皮毛的去解决问题.

标签:读取,EFI,ABL,XBL,EpStatus,SERVICES,UEFI
From: https://www.cnblogs.com/yyy8/p/18393700

相关文章

  • ABL获取XBL信息记录
    generateaGUID.4c698461-54ba-4963-a12b-e9c77c0728d8e2575d56-a5c2-4baf-ad5d-58a0dde9fcfahttps://www.cnblogs.com/linhaostudy/p/18360420UefiABL读取XBL设置的标志位https://www.cnblogs.com/yyy8/p/18393668https://www.cnblogs.com/yyy8/p/18393675https://www.c......
  • 高通xbl创建protocol驱动,abl调用xbl中的驱动
    UEFI有关的文件格式介绍:fdf:flashdefinitionfile,描述flash分区地址范围dec:packagedeclarationfile,定义了不同模块的GUID信息dsc:descriptionfile,主要包含需要用到的所有inf文件inf:单个模块的编译信息,类似makefileefi:最终编译生成的UEFI可执行文件一、xbl创建protocol驱......
  • abl如何调用xbl里面的protocol
    参考:高通文档HowtouseSMEMinABL?Forpreviousplatform,AndroidLKwasusedforbootloader,whileinrecentplatformsUEFIisusedtoreplacetheoldAndroidLKbootloader.TherearetwopartsofUEFImodules,oneisinboot_imageswhichiscalledUEFIco......
  • (多模态)CoDi:Any-to-Any Generation via Composable Diffusion
    摘要我们提出了可组合扩散(CoDi),这是一种新的生成模型,能够从任何输入模式组合生成任何输出模式组合,如语言、图像、视频或音频。与现有的生成式人工智能系统不同,CoDi可以并行生成多种模式,其输入不限于文本或图像等模式的子集。尽管缺乏许多模式组合的训练数据集,但我们建议在输......
  • 添加和读取图片的exif信息
    添加经纬度信息和自定义字段#import<ImageIO/ImageIO.h>-(NSData*)addExifDataToImage:(NSData*)imageDatawithLatitude:(double)latitudelongitude:(double)longitudecustomField:(NSString*)customFieldValue{//创建图片数据源CGImageSourceRefsource=......
  • 安全:nftables的常用命令(查看规则)
    一,nftables的地址簇和相应的iptables命令行工具nftables的地址簇iptables命令行工具ip  仅匹配IPv4数据包。如果没有指定地址系列,这是默认设置iptablesip6   ip6tablesinet   iptables和ip6tablesarp   arptablesbridge   ebtable......
  • 【Qt笔记】QTableView控件详解
     目录引言 一、定义与架构二、主要功能与特点2.1 显示表格数据2.2编辑表格数据2.3自定义外观和交互2.4数据排序和过滤2.5支持拖放操作2.6自适应大小2.7上下文菜单2.8信号与槽三、常用属性设置3.1设置模型3.2 设置选择模型3.3 隐藏垂直标题3.4 ......
  • 这份 Stable diffusion 提示词攻略,记得收好了!
    大家好,今天给大家分享的是关于Stablediffusion提示词的基础和进阶语法,为什么有必要了解这个呢?首先是提示词对出图效果影响很大,了解提示词的用法有助于我们写出更优秀的提示词;其次就是我们可能会去C站拷贝别人的提示词,虽然直接拷贝过来也能得到不错的效果,但这样只会“知其......
  • PrimeVue DataTable 属性值解析
    primeVueDataTable组件的属性值使用DataTable属性NameTypeDefaultdescriptionvaluenull|any[]null要显示的对象数组。dataKeystring|Functionnull唯一标识数据中的记录的字段名称。rowsnumber0每页显示的行数。firstnumber0要显示的第一行的索引。totalR......
  • 让AI学会打光,从此利好电商(Stable Diffusion进阶篇:Imposing Consistent Light)
    IC-Light的下载安装有两个不同的节点包可以在ComfyUI中安装IC-Light,一个是kijai大佬的节点包:https://github.com/kijai/ComfyUI-IC-Light没有魔法的小伙伴可以扫描下面二维码获取相关整合资料!另一个是huchenlei大佬的节点包:https://github.com/huchenlei/ComfyUI-IC......