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.pswp.cn/diannao/83255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83255.shtml
英文地址,請注明出處:http://en.pswp.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&…