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架构的理解还需要进一步的探究,目前只是皮毛的去解决问题

Uefi ABL读取XBL设置的标志位的更多相关文章

  1. 登录操作(方法一:设置flag标志位)

    登录操作(方法一:设置flag标志位) user_name="star"passwoed='123'passed_authentication=Falsecount=0for i ...

  2. 多线程设置flag标志位实现同步

    信号灯解决同步问题 我尽量注释了代码,可以很容易理解了. package Thread; /** * 信号灯 * 借助标志位 */ public class FlagThread { public s ...

  3. [apue] 一个查看当前终端标志位设置的小工具

    话不多说,先看运行效果: >./term input flag 0x00000500 BRKINT not in ICRNL IGNBRK not in IGNCR not in IGNPAR ...

  4. 韩顺刚-tcp报文头协议详细分析第一包数据:序号是0,发送数据的长度是0,因为没有收到对端的数据,所以确认号是0, Syn的标志位设置成1,这里没有发送的数据,只发送TCP的20个字节的头部

    TCP报文段首部格式 大部分TCP报文头部都是20个字节,有的数据包要加上选项. 上面一行代表4个字节,源端口和目的端口都是2个字节. TCP协议是面向字节流的协议 TCP是一段一段分块的发送数据的 ...

  5. Java学习笔记14---使用标志位控制循环

    使用标志位控制循环 前面提到了控制循环的常用技术:计数器控制的循环.另一种控制循环的常用技术是在读取和处理一个集合的值时指派一个特殊值.这个特殊的输入值也成为标志值(sentinel value),用 ...

  6. 汇编语言标志位 含义 NV UP EI NG NZ AC PE CY

    缩写原意: Overflow of = OV NV [No Overflow] Direction df = DN (decrement) UP (increment) Interrupt if = ...

  7. 内核参数优化之2-1 tcp/ip 标志位报文解析

    以下内容纯属虚构,切勿轻易相信! 众所周知,tcp/ip三次握手和四次挥手,均由syn/ack/fin三个标志位报文决定,但是这三个标志位报文,并不是说在构建连接的时候只发送一次的,因为协议不知道网络 ...

  8. 从点击Button到弹出一个MessageBox, 背后发生了什么(每个UI线程都有一个ThreadInfo结构, 里面包含4个队列和一些标志位)

    思考一个最简单的程序行为:我们的Dialog上有一个Button, 当用户用鼠标点击这个Button时, 我们弹出一个MessageBox.   这个看似简单的行为, 谁能说清楚它是如何运行起来的,背 ...

  9. TCP/IP 标志位 SYN ACK RST UTG PSH FIN

    三次握手:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个 SYN=1,ACK=1标志的数据包给发送端,告诉它,可以 ...

  10. 嵌入式单片机,ATmega328P,外部中断INT0,INT1,INT2,中断标志位介绍

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

随机推荐

  1. 利用路由守卫实现token过期后返回登录界面

    const timeX = localStorage.getItem("time");//如果有时间戳存在会判断token是否过期if(timeX!==null){ const t ...

  2. RHCA rh442 004 加载模块 ulimit cgroup

    模块调优 lsmod 可以看到内核加载的模块 [root@servera ~]# lsmod | grep usb [root@servera ~]# modprobe usb_storage [ro ...

  3. Fiddler的工作原理

    Fiddler是位于客户端和服务器端中间的HTTP代理,是目前最常用的http抓包工具之一 . Fiddler抓取客户端和服务器之间的所有HTTP请求后进行分析.断点.过滤等操作. Fiddler可以 ...

  4. (一)MOngoDB的安装与配置(Windows和Centos)

    其实Windows的安装没有什么难的,主要是后的Centos下的安装,我是在centos7上安装测试的,不管是手动安装还是脚本安装我都是成功才发出来的,有什么的问题可以留言,写博客只是为了记录和简单的 ...

  5. 【DataBase】MySQL 06 条件查询 & 排序查询

    视频参考自:P28 - P42 https://www.bilibili.com/video/BV1xW411u7ax 条件查询概述 # 进阶2 条件查询 -- 语法:SELECT 查询列表 FROM ...

  6. agnostic在计算机领域的常用翻译 —— location-agnostic deployment option

    关于agnostic的翻译: 例子: NVIDIA OSMO scales workloads across distributed environments. For robotics worklo ...

  7. 【转载】 模仿学习:在线模仿学习与离线模仿学习 ———— Imitate with Caution: Offline and Online Imitation

    网上闲逛找到的一篇文章,介绍模仿学习的,题目: Imitate with Caution: Offline and Online Imitation 之所以转载这个文章是因为这个文章还是蛮浅显易懂的, ...

  8. Docker部署rabbitmq遇到的问题

    1.背景 Docker部署rabbitmq遇到的如下两个问题 问题一:访问交换机时报错 Management API returned status code 500 问题二:访问channel时报错 ...

  9. 树莓派CM4(二): UART/IIC/SPI调试

    1. 参考资料 资料汇总页面 https://shumeipai.nxez.com/raspberry-pi-datasheets <bcm2711-peripherals.pdf>,下载 ...

  10. WIN32下的模拟时钟

    #include <Windows.h> #include <math.h> #include <tchar.h> #include "resource. ...