UEFI Drivers UEFI Driver Model

news/2024/11/7 15:02:12/

 1. UEFI Drivers

UEFI Drivers是UEFI Image的一种,UEFI Drivers与UEFI Applications的区别:

Objects managed by UEFI-based firmware:

对UEFI Drivers来说,比较重要的是EFI System Table, Memory, Handles, Images, Events。

2. UEFI Drivers的分类

UEFI Drivers可分为两大类:UEFI Driver Model Driver和UEFI Non Driver Model Driver.

1>. Service Drivers

这种Driver会在一个或多个Service Handle上加载一个或多个Protocol,并在它的Entry Point里会返回EFI_SUCCESS。

2>. Initializing Drivers

这种Driver不会产生任何Handle,也不会增加任何Protocol到Handle Database,它只会进行一些初始化操作,并且返回错误代码。所以这种Driver执行完就会从系统内存中卸载。

3>. Root Bridge Drivers

这种Driver会产生一个或多个Control Handle,而且包含一个Device Path Protocol和一个对芯片跟总线提供的I/O资源软件方式抽象出来的Protocol。最常见的是为PCI Root Bridge产生handles的一个Driver,并且产生的Handle上面支持Device Path Protocol和PCI Root Bridge I/O Protocol.

4>. UEFI Driver Model Drivers

a. Bus Drivers

这种Driver会在Handle Database中产生一个或多个Driver Handle或Driver Image handle,并在Handle上安装一个或多个Driver Binding Protocol的实例。这种Driver在调用Driver Binding Protocol的Start()函数时会产生新的Child Handles,而且会在新的Child Handles上增加另外的I/O Protocol。

b. Device Drivers

与Bus Drivers的区别是不会产生新的Child Handles,只会在现有的Child Handle上增加另外的I/O Protocol。

c. Hybrid Drivers

同时具有Bus Drivers和Device Drivers的特征,既会在现有的Handle上增加I/O Protocol,也会产生新的Child Handles。

注:对应的Handle Type可参见:http://blog.csdn.net/celiaqianhj/article/details/6764433

3. UEFI Driver Model出现的目的

随着硬件总线结构的发展,Bus的种类和数量都在增加,在Preboot的环境下,就需要有一种简单的方式来描述和管理平台上的Bus和Device。UEFI Driver Model就提供了一种简单的方式,具体形式则是Protocols Services和Boot Services。目前为止支持的Bus类型有PCI、USB等等。

1>. 兼容性

遵循 2.3.1 Spec的UEFI Driver Model Drivers必须可以与1.1/2.0 Spec保持兼容性。

2>. 简单性

遵循 2.3.1 Spec的UEFI Driver Model Drivers必须易于实现,易于维护。

3>. 易伸缩性

The UEFI Driver Model必须可以适应不同类型的平台,包括嵌入式系统,笔记本,台式机以及工作站和服务器。

4>. 灵活性

The UEFI Driver Model必须支持可以枚举平台上所有的设备,或者只枚举启动到特定系统所要求的设备。

5>. 可扩展性

The UEFI Driver Model必须可以扩展以支持未来的Bus类型。

6>. 可移植性

UEFI Driver Model Drivers必须可以移植到不同平台或者不同的处理器架构上。

7>. 共存性

Drivers必须可以与其他的Driver或System Firmware共存,且没有资源冲突。

8>. 可以描述复杂的总线拓扑结构

9>. 可执行文件保持最小

10>. 解决了Legacy Option Rom的约束和局限性(Limitation)。

4. Driver的初始化

 一个Driver Image文件可以从不同的媒介上被加载,这些媒介包括:ROM,Flash,硬盘,软盘,CD-ROM或者是从网络连接上。

当一个Driver Image被发现之后,它可以通过Boot Service LoadImage()被加载到系统内存(LoadImage()加载一个PE/COFF格式的Image到系统内存)。同时会为这个Driver创建一个Handle,并且在这个Handle上创建一个Loaded Image Protocol 的实例(EFI_Loaded_Image_Protocol)。包含Loaded Image Protocol 的实例的Handle被称为Image Handle。此时,这个Driver还没有被启动,它只是存在于内存中等待被启动。

我们可以通过Boot Service StartImage()来启动这个Driver。

UEFI Driver Model Drivers必须符合以下几个严格的规则:

1>. 不允许接触任何的硬件,相反的,只允许这个Driver在它自己的Image Handle上安装Protocol实例。

2>. UEFI Driver Model Drivers必须安装一个Driver Binding Protocol到它的Image Handle上,可选择的安装Driver Configuration Protocol, Driver Diagnostics Protocol, Component Name Protocol。另外,如果一个Driver希望可以被卸载,它可以选择更新Load Image Protocol来提供自己的Unloaded功能。

3>. 如果在执行Boot  Service ExitBootService()时,一个Driver希望执行一些特定操作,那么它可以创建一个在调用Boot  Service ExitBootService()时被触发的Event(with a notification function)。

包含Driver Binding Protocol实例的Image Handle被称为Driver Image Handle。

5.UEFI Driver与DXE Driver的区别:

1>. 不需要依赖Dependency来决定执行的顺序

2>. 必须可以被重复执行

3>. 不需要即时启动

4>. 支持硬体的热插拔(Hot-Plug)

5>. 支持软体的热插拔(Unload)

6>. 所有的Function都是Device(Handle)结合Driver(Protocol)所达成

 

 

Refer:

Unified Extensible Firmware Interface Specification, Version 2.3.1 

Driver Writer’s Guide For UEFI 2.0

Beyond BIOS, Second Edition


http://www.ppmy.cn/news/426115.html

相关文章

大连新重集团用友软件UFIDA U9项目签约暨启动会圆满成功

2008年8月6日,对于用友集团和大连新重集团来讲是具有特别意义的一天,因为在这一天,大连新重集团正式宣布选择UFIDA U9,实现多组织、多工厂协同管理,以及集中销售、集中采购、集中计划的信息化管理体系。同时&#xff0…

UEFI——UEFI Package Module

UEFI Package & Module 前言Module & Package 概念Module.inf[Defines][Source][Packages][LibraryClasses][Protocols][Depex] Packagedec[Defines][Includes][LibraryClasses][Protocols][Ppis][Guids][PCD] dsc[Defines][LibraryClasses][Components] 针…

U-boot 对UEFI的支持

U-boot 对UEFI的支持 UEFI on U-Boot Unified Extensible Firmware Interface Specification (UEFI) 已经成为 AArch64 和 X86系统的默认boot接口。它为固件上drivers和applications之间的交互提供了稳定的API。这些API 那囊括了 block storage、network和console 等设备的访问…

UEFI 文件类型.efi

我们首先先看一些UEFI 的框架图: 无论是从功能划分还是各个文件划分,我们都可以看到这种模块话思想。模块话是现在软件的主流,这样能让不同的人独立开发自己的模块,通过统一的接口添加整合到一个firmware file里。 我们uefi f…

用友软件下载地址汇总

1. 用友ERP U8.61 安装盘(文件大小870MB) 官方下载地址:http://download.foxworkroom.com/soft/cw/u861.rar 2. 用友ERP U8.72 安装盘(文件大小1.31GB) 官方下载地址:http://myerp.ufida.com/u872setup.…

入门UEFI

UEFI基础 1. UEFI系统的组成 UEFI提供给操作系统的接口包括启动服务(Boot Service,BS)、运行时服务(Runing service,RT)以及丰富的接口,详细的组成,可以参考下面的接口图例&#x…

UniDAC

常言道,细微之处见体贴。UniDAC有一些过人的方法或属性。 比如,刷新单条记录(RefreshRecord)、多表更新的属性(UpdatingTable)、宏替换参数(Macros)、 集成删除/新增/修改/刷新/锁定SQL语句、FetchRows&…

Ufida U8v10.1 安装到sqlserver2008R2 故障转移集群

U8设计之初被用在局域网单服务器环境下工作,而有客户为了保证业务的低故障延迟性做了sqlserver2008R2的双机热备(比较过时的做法)。但他们并没有使用2008自带的故障转移特性而是使用了第三方的双机控制软件,导致数据库服务切换时出…