UEFI Spec 学习笔记---33 - Human Interface Infrastructure Overview(1)

33 - Human Interface Infrastructure Overview

本章节主要用于介绍Human Interface Infrastructure(HII)架构介绍,描述如何通过 HII 来管理用户的输入,以及描述在 UEFI spec 中涉及 HII 相关的 Protocol、function 和类型定义。

33.1 Goals

简单来说,就是要生成一个简单方便地可视化界面,让使用者可以在不同阶段来进行配置 FW.

33.2 Design Discussion

Human Interface Infrastructure 架构如下:

Driver 以及 application 会将 HII source 安装到 Hii Database,而 HII Database 就是一个数据中心,中间保存的就是(字体、字符、图片以及表单).Form Browser 通过 Display Device 来呈现界面用于给客户浏览数据,然后用户通过 HID device (Human Interface Device 这类设备通常包括键盘、鼠标、游戏手柄、触摸板等用于人与计算机进行交互的输入或输出设备。)来输入数据给 Form Browser.在交互完成后,用户提交了修改给 Form Browser,然后 Form browser 通过 Variable Store 来修改保存到 NVRAM 中。

33.2.1 Drivers And Applications

以 package 列表形式的使用者接口是由 driver 和 application 动态创建的,接口可以预编译或者作为 resource 包含在 driver 和 application 中。若是以资源的形式包在 driver 或者 application 中,则可以对资源进行修改,而不需要重新编译,比如若是在 UNI 文件中定义,需要修改的话就需要重新编译,若是动态 C 里面去修改的话就不需要重新编译,比如硬件信息。

用户数据是以文本的格式进行保存,然后 resource 会被编译成一个 RES 文件然后链接到主程序。(PE/COFF resource 区域----PE/COFF(Portable Executable/Common Object File Format)是微软公司定义的一种文件格式,用于可执行文件、动态链接库(DLLs)、资源文件等在Windows操作系统中的存储。)

RES 文件中的资源数据在 PE/COFF 文件中通常位于 .rsrc 节,并以层次化的目录结构进行组织。

33.2.1.10 O/S-Present Forms Browser/Processor

在某些时候,OS 也是需要访问 HIIDATABASE 表单数据,所以定义了一个 O/S agent 用于封装数据并通过标准方式导出。

数据一般是保存 NVRAM 中,可以通过 HII 接口导出 HIIDatabase 数据。

33.2.7 Fonts

UEFI描述了一种标准字体,这是所有支持位图输出设备上文本显示的系统所必需的。标准字体(system 字体)是一种固定间距字体,其中所有字符要么窄(8x19 像素),要么宽(16x19 像素)。UEFI还允许显示其他字体,包括固定间距和可变间距。平台对这些字体的支持是可选的。UEFI字体描述使用简化字体包(简化字体包)或正常字体。

33.2.7.1 Font Attributes

字体属性有三种:

  • Font Name:也就是我们常见的字体样式,比如Arial、Times New Roman 等,标准字体也就是"sysdefault"
  • Font Size:字体大小描述的就是单个字符单元(Cell)的最大高度,标准的都是 19.
  • Font Style:字体样式描述了对字体基本视觉样式的标准视觉修改。支持的字体样式包括:粗体,斜体,下划线,双下划线,压花,轮廓和阴影。一些字体样式也可以由字体呈现引擎模拟。标准字体总是没有附加的字体样式。
33.2.7.2 Limiting Glyphs

主要显示字符的因素是存储空间的问题,在进 OS 之前,若是需要显示所有没有预料到的字符串,则需要保存所有在 Unicode 字体的字形数据。

所以我们可以提前收集需要显示的字符串,从而减小需要保存的字形数据。

UEFI 默认支持基本的拉丁字符,若是 UEFI application 或者 Driver 需要显示其他的字符,他们可以添加新的字符数据到现有的 HII Database.在现有的字符字形定义在已经存在的 Unicode 字符库中没有则添加。

33.2.7.3 Fixed Font Description

字体可以在宽度、样式、基线、高度、大小等方面有所不同。固定字体定义包括空白和字形数据,以及字形数据的位置。这可以防止在运行时调整不同固定字体的字符以美观地配合在一起。为了向UEFI驱动程序提供如何设计固定字体字符的基本描述,下面定义了行业标准字体术语:

baseline-从单元格的左上角到上限(A, B, C,…)的距离

cap_height :从大写字母底部到大写字母顶部的距离

x_height :从基线到小写字母‘ x ’顶部的距离-

descender:从基线(g, j, p, q, y)下方延伸的距离-

ascender:从小写字母‘ x ’顶部到高小写字母(b, d, f, h, k, l)的距离

同时也支持双字节存储的,但是就不像 8*16 那样一行一行存储,而是先存储左边半边,然后再存储右边半边,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ip命令详解

控制网卡的硬件状态 ip link set ens36 down ip link set ens36 up 修改网卡名称(临时) ip link set ens36 down ip link set ens36 name xxx 修改网卡的mac地址 ip link set ens36 down ip link set xxx name ens36 查看ip的addr ip addr show ip ad…

hadoop中了解yarm

Hadoop中的YARN(Yet Another Resource Negotiator)是一种新的Hadoop资源管理器,是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。以下是其相关介绍: 核心思想 将JobTracker的资源管理和作业调度/监控功…

做好的QT软件,换一个笔记本打开后发现字体很小,部分字体还被控件遮挡

出现这种情况的原因主要是屏幕的DPI(每英寸点数)不同。Qt中控件的大小单位为像素,在高DPI下,控件会变小,低DPI下控件会变大。而Qt中字体的单位默认为磅,无论在什么显示器上显示同一磅值的字体,其…

linux - 权限的概念

目录 用户权限 超级用户与普通用户的区别 超级用户(root): 普通用户: 切换用户身份 使用sudo执行高权限命令 用户管理 用户组管理 文件权限 文件访问者类别 基本权限 权限表示方法 权限修改 chmod chown chgrp u…

Python函数返回值的艺术:为何True/False是更优实践及例外情况分析

在Python编程实践中,子程序的返回值设计往往是一个容易被忽视但却至关重要的设计决策。本文将深入探讨为什么返回True/False往往是更好的选择,何时应该避免这种做法,以及如何处理与None值相关的问题。 为什么返回True/False是更好的实践&…

STM32单片机内存分配详细讲解

单片机的内存无非就两种,内部FLASH和SRAM,最多再加上一个外部的FLASH拓展。在这里我以STM32F103C8T6为例子讲解FLASH和SRAM。 STM32F103C8T6具有64KB的闪存和20KB的SRAM。 一. Flash 1.1 定义 非易失性存储器,即使在断电后,其所…

【Tools】Visual Studio使用经验介绍(包括基本功能、远程调试、引入第三方库等等)

这里写目录标题 1. VS基本使用1.1. 快捷键1.2. 查看变量地址1.3. 查看代码汇编1.4. visual studio 热重载功能的使用1.5. vs远程服务器调试1.6. 引入第三方库VLD1.7. release debug模式 1. VS基本使用 1.1. 快捷键 ctrl c :复制光标所在行 注意:只需要光标在这…

网络爬虫学习之httpx的使用

开篇 本文整理自《Python3 网络爬虫实战》,主要是httpx的使用。 笔记整理 使用urllib库requests库的使用,已经可以爬取绝大多数网站的数据,但对于某些网站依然无能为力。 这是因为这些网站强制使用HTTP/2.0协议访问,这时urllib和r…

Python内存管理:赋值、浅拷贝与深拷贝解析

赋值与共享资源 在Python中,直接赋值操作(如 list2 list1)会导致两个变量共享同一个内存地址。这意味着对 list1 的修改会直接影响到 list2,因为它们指向同一个对象。 注意: 赋值等于完全共享资源 如果我们不希望这样完全共享&…

CentOS7原有磁盘扩容实战记录(LVM非LVM)【针对GPT分区】

一、环境 二、命令及含义 fdisk ‌ ‌ fdisk‌是一个较老的分区表创建和管理工具,主要支持MBR(Master Boot Record)格式的分区表。MBR分区表支持的硬盘单个分区最大容量为2TB,最多可以有4个主分区。fdisk通过命令行界面进行操…

获取相机图像(ROS2)

文章目录 前言一、获取笔记本自带相机图像1.打开终端2.安装usb-cam功能包3.启动相机节点4.再打开一个终端5.启动rqt查看图像(1)方法一:点击窗口选项,打开图像话题(2)方法二:使用命令行,直接打开图像话题 二、获取USB相机图像总结 …

Go 语言中接口类型转换为具体类型

类型转换方法 在 Go 语言中,将接口类型转换为具体类型主要有以下几种方法: 1. 类型断言(Type Assertion) var i interface{} "hello"// 基本形式 s : i.(string) // 将接口i转换为string类型 fmt.Println(s) // 输…

ES C++客户端安装及使用

介绍 Elasticsearch , 简称 ES ,它是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源&…

力扣-94.二叉树的中序遍历

题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 class Solution { public:void inorder(TreeNode* root, vector<int>& res){//C这里&一定要加if(!root)return;inorder(root->left,res);res.push_back(root->val);inorder(ro…

《大模型微调实战:Llama 3.0全参数优化指南》

全参数微调&#xff08;Full Parameter Fine-Tuning&#xff09;是推动大模型适应垂直领域任务的核心技术&#xff0c;尤其对于Llama 3.0这类千亿级参数模型而言&#xff0c;其性能优化与场景适配能力直接决定了实际应用价值。然而&#xff0c;全参数微调面临计算成本高、内存占…

张 提示词优化(相似计算模式)深度学习中的损失函数优化技巧

失函数的解释 损失函数代码解析 loss = -F.log_softmax(logits[

《Spring Boot 4.0新特性深度解析》

Spring Boot 4.0的发布标志着Java生态向云原生与开发效能革命的全面迈进。作为企业级应用开发的事实标准框架&#xff0c;此次升级在运行时性能、云原生支持、开发者体验及生态兼容性四大维度实现突破性创新。本文深度解析其核心技术特性&#xff0c;涵盖GraalVM原生镜像支持、…

协作赋能-1-制造业生产流程重构

制造业生产流程重构——从“信息孤岛”到“全链协同” 在制造业的数字化转型浪潮中&#xff0c;一个看似矛盾的现象正在蔓延&#xff1a;企业部署了ERP、MES、PLM等管理系统&#xff0c;却仍未摆脱“纸质工单满天飞、跨部门扯皮不断”的困境。以汽车制造业为例&#xff0c;其…

基于React的高德地图api教程002:自定义地图样式

文章目录 2、自定义地图样式2.1 自定义底图样式2.2 添加卫星地图和路网图2.3 完整代码下载2、自定义地图样式 2.1 自定义底图样式 高德地图提供了多种地图样式,对底图进行设置,可选样式如下图所示: 添加地图样式切换控件: <div style={{marg

谷歌Gemini生图升级:与GPT-4o的对决,谁更胜一筹?

在人工智能技术的快速发展中&#xff0c;图像生成&#xff08;即“生图”&#xff09;已经成为AI领域的一大热点。谷歌最近对其多模态模型Gemini 2.0 Flash的生图功能进行了升级&#xff0c;从之前的“实验版”&#xff08;Gemini 2.0 Flash Experimental Image Generation&…