【BIOS/UEFI】HII 基本框架及概述

这篇具有很好参考价值的文章主要介绍了【BIOS/UEFI】HII 基本框架及概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        HII(Human Interface Infrastructure )定义了一套管理用户输入的基础框架。HII数据库主要提供用户安装、卸载以及使用各种字符串、字体和图片等资源的接口。

【BIOS/UEFI】HII 基本框架及概述

        HID Devices 是用户输入设备,如键盘、串口和网络;Display Devices 是输出设备,如显示器、串口和网络。HID Devices 和 Display Devices 通过 Forms Browser 交互。Forms Browser 是负责显示信息和收集输入、输出信息的模块,其要显示的信息从 HII Database 中获取。HII Database 负责所有 HII 数据的管理。Driver 将要显示的信息注册到 HII Database 中,在显示的过程中 Driver 和 Forms Browser 交互。交互后的信息通常存储在 UEFI Global Variable Store 中,也可以存储在其他地方,存储的控制权在 Driver,由 Driver 自己决定。

       【UEFI Spec 译文:】驱动程序和应用程序将元素(如字体、字符串、图像和表单)安装到 HII 数据库中,该数据库充当整个平台的中央存储库。Forms Browser 使用这些元素在显示设备上呈现用户界面,并通过 HID 设备从用户接收信息。之后,用户在 Form Browser 所做的更改将保存到 UEFI global variable storage(使用 GetVariable() 和 SetVariable() )或是自定义驱动提供的存储变量中。

【BIOS/UEFI】HII 基本框架及概述

        UI App 是一个启动选项。BDS (启动设备选择)阶段加载 UI App,该启动选项一方面会调用 Set Browser 所提供的 SentForm 服务,将所需要显示的页面显示出来(主页面)。从主页面中可分级找到系统其他的配置信息并显示另一方面,UI App 驱动系统中各种 HII Driver,HII Driver 提供其配置信息注册给 HII DataBase,这些信息包括 IFR、String、Font、Image等。  Setup Browser 从 HII DataBase 获取信息用于显示和交互。页面和信息都有了,Setup Browser 就可以完整地显示了。交互后,用户修改地信息存入Flash(前文提到由 HII Driver 决定,这里只是说图中示例)。

UEFI (Spec)中 HII 组件

Strings 

        在 uni 文件中描述。Strings 以 Unicode 类型(2 byte)存储,以满足多语言的支持。语言格式要符合 RFC 4646 基本格式。String Token 相当于 ID,是唯一的,是 String 的标识。在源代码中要同时指明 String Token 和语言才能获取最终的 String如果指明的语言没有相应的字符描述,则使用默认语言。我见过的情况是:在缺少中文显示的时,setup 的选项显示成一个叹号。

【BIOS/UEFI】HII 基本框架及概述

Fonts

        Font 通过点阵的方式显示,有宽字符和窄字符,汉字需要使用宽字符,英文使用窄字符。使用的字符需要有对应的字库。

Keyboard

        不同的键盘存在布局区别,Keyboard 用于键盘布局的匹配。

Forms

      Forms Browser 使用应用程序或驱动在 HII Database 初始化时安装 Forms 数据。 Forms Browser 提供的用户接口包括读取 Forms 的内容、与用户交互以及存储数据。在 UEFI Spec 中定义了二进制格式的 IFR 用来描述页面如何显示、切换等信息。而 VFR 语言是 Edk2 的实现,Edk2 还提供了 IFR Compiler 工具用于实现将 VFR 语言编译成 IFR 语言。使用 XML、JavaScript 等其他语言也是可以的,只要最终能转换成 IFR 就行,UEFI Spec 只认 IFR。

        控件:

  • checkbox:用于选择 true 或 false,比如先择开还是关
  • numeric:用于选择一个范围,比如选择年月
  • oneof:用于从多个选项中选择一个
  • string:用于输入字串

        显示效果 :

  • disableif:使选项完全失效了
  • suppressif:只是不显示,选项本身还是有效的,如有默认值则使用默认值
  • grayoutif:置灰选项,使得选项用户不能更改

.vfr ( .sd ) 文件内容示例:

【BIOS/UEFI】HII 基本框架及概述         

 Packages

        Packages 是一个标准的数据结构,把包括 Strings、Fonts、Keyboard、Forms 、以及 Image 的数据组织起来,并管理。换句话说,这些数据都打包成 Package,然后注册,实际中注册使用 PackageList。

HII Database

        HII Database 是 HII 框架一个核心的公共模块,用于管理所有 HII 数据,包括 String、Forms、Keyboard、Images、Device Paths等。

【BIOS/UEFI】HII 基本框架及概述

HII Protocols

【BIOS/UEFI】HII 基本框架及概述

HII Browser Engine Protocols

 

EFI_HII_CONFIG_ROUTING_PROTOCOL

        由 HII Database 提供。

EFI_HII_CONFIG_ACCESS_PROTOCOL

        EFI_HII_CONFIG_ACCESS_PROTOCOL 由HII Driver 提供。每个 HII Driver 都需要提供自己的 EFI_HII_CONFIG_ACCESS_PROTOCOL  用来负责自己数据的读和写以及交互。ExtractConfig()和RouteConfig()通常被实现 HII Configuration Routing Protocol 的驱动调用,Callback() 通常被 Forms Browser 调用。ExtractConfig() 函数用于提取元素(Strings)到当前的配置中,RouteConfig() 函数用于存储已经配置好的信息,Callback() 函数用于记录用户的操作(被修改的信息)。

【BIOS/UEFI】HII 基本框架及概述

EFI_FORM_BROWSER2_PROTOCOL

  • SentForm():用于显示页面(主页面);
  • BrowserCallback():HII Driver 可以通过 BrowserCallback 获取到当前 HII Driver 的配置选项里用户已经修改但还未存储的信息

HII Driver 初始化流程:

  1. HII Driver 提供Config Access Protocols
  2. 安装 Device Path Protocol
  3. 安装 Config Access Protocol。Config Access Protocol 一定是安装在某一个 Device Path 上的;
  4. Create PackageList。PackageList 通常要包含 Form、String、
  5. 调用 HII Database Protocol 里的 NewPackageList,将 Package List 安装到 HII Database 里。输入的参数包括 Config Access Protocol 所装在的 Device Path,最终得到 HII handle,至此,信息都安装完毕。一个 HII Handle 对应一个 Device Handle,通过 HII Handle 可以找到 Device Handle,相反的,通过 Device Hanlde 可以找到其对应的 Config Access Protocol。

 【BIOS/UEFI】HII 基本框架及概述

Form Browser 的处理流程:

【BIOS/UEFI】HII 基本框架及概述

  • BlockToConfig  和 ConfigToBlock
  • HII Driver 通常调用的是 Browser Callback函数;UI App 调用 SentForm 函数,用于显示主页面。
  • HII Driver 自己的 Config Access Protocol 里的CallBack 函数调用 UEFI Browser Protocol 里的 CallBack 函数。

【制作粗糙,后期有时间再完善一下,请读者海涵。有问题请不宁赐教。】文章来源地址https://www.toymoban.com/news/detail-496805.html

到了这里,关于【BIOS/UEFI】HII 基本框架及概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows 引导启动流程详述(BIOS-UEFI)

    上个世纪70年代初,“只读内存”(read-only memory,缩写为ROM)发明,开机程序被刷入ROM芯片,计算机通电后,第一件事就是读取它。 这块芯片里的程序叫做\\\"基本輸出輸入系統\\\"(Basic Input/Output System),简称为BIOS。 存储在 ROM 芯片中的这一小段程序就是 BIOS 程序,虽然现在新

    2024年02月11日
    浏览(27)
  • UEFI与 Legacy BIOS两种启动模式详解

    参考链接1 参考链接2 (1)、 UEFI启动模式 与 legacy启动模式 legacy启动模式: 就是这么多年来PC一直在使用的启动方式(从MBR中加载启动程序),UEFI BIOS作为一种新的BIOS自然也应该兼容这种老的启动方式; UEFI启动模式: UEFI BIOS下新的启动技术。如果你的PC在UEFI启动模式下预装了

    2024年02月04日
    浏览(69)
  • 【BIOS/UEFI硬件知识储备】内存——主板布线、双通道

            内存走线方式分为:Direct Topology(直连)、T-Topology(T-Type)、Daisy-Chain Topology(D-Type)。直连的布线就是由CPU直接拉到对应通道的槽位上,独立布线,各个通道互不影响,也就是一个槽就是一个通道。T-Type和D-Type用于一个通道对应两个插槽的情况。 T-Type      

    2024年01月16日
    浏览(28)
  • # 磁盘引导方式相关知识之BIOS、msdos、MBR、UEFI、gpt、esp、csm

    磁盘、分区、引导等知识经常似懂非懂,不能完全说清楚,梳理下: 序号 主板芯片 引导方式 支持的磁盘 分区表类型 支持的磁盘 分区表格式 对应引导位置 备注 1 BIOS 传统方式 (俗称Legacy BIOS) msdos MBR MBR -- 活动主分区 Legacy方式也可以支持gpt磁盘 ,比如ventoy PE工具 2 EFI/U

    2024年02月10日
    浏览(33)
  • 电脑bios使用的uefi启动,系统盘使用的mbr格式,为什么安装完系统无法进入?

      在电脑的安装系统过程中,我们会遇到一些问题,比如说使用UEFI启动但是磁盘分区使用MBR格式,导致系统安装完成之后无法引导。这是因为UEFI启动只支持GPT格式的磁盘分区。 在本文中,我们将探讨如何将磁盘转换成GPT格式,并重新安装系统,以便正确地引导系统。    

    2024年02月12日
    浏览(45)
  • 旧电脑通过转接卡安装nvme固态硬盘无需修改bios即可用旧SATA硬盘实现UEFI启动win10/11

    注意:本文探讨的是支持UEFI启动的旧电脑。MBR启动个人感觉已经被淘汰,作者不再做研究。 主要材料: PCI-E转M.2的转接卡(根据你旧电脑支持情况选择) 支持NVME协议M.2接口的固态硬盘 U盘1个(8G以上)制作PE-启动盘(支持UEFI启动)。 有一台可正常使用电脑。(制作启动盘

    2024年02月04日
    浏览(77)
  • 中柏 EZpad 8 Windows 平板电脑 |驱动备份|系统优化|不能调节显示器亮度|进入Bios/uefi 快捷键 |蓝牙扫描不到设备|CPU占用过高解决方案

              之前一直使用的这个平板,但是有个很严重的问题就是性能实在太差了,每次都是CPU百分百,Mem 百分之50% 这个结果真的很意外, 但是又无可奈何,后面花时间做了一些优化包括 进程限制  启动优化  内存页面优化  但结果都不尽人意,一启动程序就卡顿 ..........  中间又

    2024年02月09日
    浏览(87)
  • 【UEFI基础】EDK网络框架(ARP)

    从这里开始涉及到的网络协议都是比较通用的了,在一般的TCP/IP四层模型中都能够看到这些内容,不过这里主要介绍的还是其在BIOS下的实现,但是在此之前还是需要先说明ARP的作用。 ARP的全称是 A ddress R esolution P rotocol,它是一种解决地址问题的协议。以目标IP为线索,用来

    2024年01月20日
    浏览(33)
  • 【UEFI基础】EDK网络框架(TCP4)

    相比UDP4,TCP4是一种面向连接的通信协议,因此有更好的可靠性。 TCP4的首部格式如下: 各个参数说明如下: 字段 长度(bit) 含义 Source Port 16 源端口,标识哪个应用程序发送。 Destination Port 16 目的端口,标识哪个应用程序接收。 Sequence Number 32 序号字段。 TCP链接中传输的数

    2024年01月22日
    浏览(28)
  • 【UEFI基础】EDK网络框架(UDP4)

    UDP的全称是 U ser D atagram P rotocol,它不提供复杂的控制机制,仅利用IP提供面向无连接的通信服务。它将上层应用程序发来的数据在收到的那一刻,立即按照原样发送到网络。 UDP报文格式: 各个参数说明如下: 字段 长度(字节) 描述 Source Port 2 发送端口,标识哪个应用程序

    2024年01月22日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包