您的位置:首页 > 产品设计 > UI/UE

Section1:UEFI概述

2016-07-28 20:39 801 查看
UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)定义了操作系统和固件平台之间的接口,即一种标准。UEFI实现一般可分为两部分:1)平台初始化;2)固件 - 操作系统接口。:
UEFI提供给OS的接口包括:启动服务(Boot Services,BS)和运行时服务(Runtime Service,RT)以及隐藏在BS之后的丰富的Protocol。UEFI驱动和服务以Protocol的形式通过BS提供给操作系统。



从OS Loader被加载到OS Loader执行ExitBootServices()的这段时间,是从UEFI环境向操作系统过渡的过程。在这个过程中,OS Loader可以通过BS和RT使用UEFI提供的服务,获得计算机系统资源控制权,该过程称为TSL(Transient System Load)。当OS完全掌握系统资源,OS Loader调用ExitBootServices()结束BS并收回BS占用的资源,之后计算机系统进入UEFI
Runtime阶段。
在TSL阶段,系统资源通过BS管理,BS提供如下服务:1)事件服务(事件是异步操作的基础);2)内存管理;3)Protocol管理;4)Protocol使用类服务(包括Protocol的打开与关闭、查找支持Protocol的控制器);5)驱动管理;6)Image管理(加载、卸载、启动和退出UEFI应用程序或驱动);7)ExitBootServices(结束BS服务)。RT提供的服务包括:1)时间服务;2)读写UEFI系统变量;3)虚拟内存服务(将物理地址转换为虚拟地址);4)其他服务(重启系统ResetSystem等)。
UEFI优点:

UEFI开发效率高:代码用C语言甚至C++编写;UEFI通过固件 - 操作系统接口(即BS、RT服务)为OS和OS Loader屏蔽了底层硬件细节,使得UEFI上层应用可以方便重用。
UEFI系统的可扩展性:驱动的模块化设计;软硬件升级的兼容性。大部分硬件的初始化通过UEFI驱动实现,每个驱动是一个独立的模块,可以包含在固件或设备中,运行时根据需要动态加载。
UEFI系统性能:UEFI提供异步操作;UEFI舍弃中断(保留时钟中断),采用“事件+异步操作”;可伸缩的遍历设备方式(仅遍历启动所需的设备);UEFI系统安全性,UEFI在执行应用程序或驱动前先检测程序和驱动的证书合法性。

UEFI系统启动过程:UEFI系统从加电到关机可分为7个阶段,



前三个阶段是UEFI初始化阶段,DXE阶段结束后,UEFI环境已经准备完毕。
BDS和TSL是OS Loader作为UEFI应用程序运行的阶段。
OS Loader调用ExitBootServices()服务后进入RT阶段,该阶段包括OS Loader后期和OS运行期。
当系统硬件或OS出现严重错误不能正常运行时,固件会尝试修复错误,这时系统进入AL期。“?”表示其行为由系统供应商自行定义。



SEC(Security Phase)阶段,计算机系统加电(开机或重启)后进入此阶段。

从功能上说,该阶段执行以下4种任务:接收并处理系统启动、重启、异常信号;初始化临时存储区域(临时RAM,在此阶段仅CPU和CPU内部资源被初始化,因此需要只能存在于CPU内部的临时RAM,最常用Cache);作为可信系统的根(SEC是以后各个阶段被信任的基础);传递系统参数给下一阶段(即PEI,SEC验证结果作为参数传递给PEI入口函数,包括系统当前状态、可启动固件地址和大小、临时RAM区域地址和大小、栈地址和大小)。
SEC阶段执行流程:以临时RAM初始化为,SEC的执行又分为临时RAM生效之前的Reset Vector部分、临时RAM生效后调用SEC入口函数进入SEC功能区。Reset Vector执行流程如下:进入固件入口;从实模式转换到32位平坦模式(包含模式);定位固件中的BFV(Boot Firmware Volume);定位BFV中的SEC映像;若是64位系统,从32位模式转换到64位模式;调用SEC入口函数。在Reset
Vector部分,系统还没临时RAM,因而不能用基于栈的程序设计,只能用jmp指令模拟。进入SEC阶段后,首先利用CAR(Cache As Ram)技术初始化栈等,完成参数传递,并将控制权交给PEI。



PEI(Pre-EFI Initilization)阶段是在为DXE准备执行环境,将需要传递到DXE的信息组成HOB(Handoff Block)列表,最终将控制权转交到DXE手中。从功能上讲,PEI可分为以下两部分:PEI内核,负责PEI基础服务和流程;PEIM派遣器,找出系统中所有PEIM。PEI阶段对系统的初始化主要由PEIM完成的。PEIM之间的通信通过PPI(PEIM-to-PEIM Interfaces)完成。PEI执行流程如下图所示。



DXE(Driver Execution Environment)阶段执行大部分系统初始化工作,进入此阶段时,内存已可以完全被使用,因而此阶段可以进行大量的复杂工作,其执行流程如下。与PEI类似,从功能上,DXE可分为:DXE内核,负责DXE基础服务和执行流程;DXE派遣器,负责调度执行DXE驱动,初始化系统设备。DXE提供的基础服务包括系统表、启动服务、RunTime
Services。每个DXE驱动是一个独立模块,DXE驱动之间通过Protocol通信(注:每个Protocol对应一个GUID,可利用BS的OpenProtocol和GUID打开对应的Protocol,进而使用其提供的服务)。当所有满足条件的Driver都被加载,系统完成初始化,然后DXE利用EFI_BDS_ARCH_PROTOCOL找到BDS并调用BDS入口函数,从而进入BDS阶段。BDS阶段被认为是一种特殊的DXE阶段的应用程序。



BDS(Boot Device Selection)阶段主要执行启动策略,主要功能包括:初始化控制台设备;加载毕业的设备驱动;根据系统设置加载和执行启动项。如果加载启动项失败,系统将重新执行DXE dispatcher以加载更多驱动,然后重新尝试加载启动项。BDS策略通过全局NVRAM变量配置,这些变量可通过RT服务的GetVariable()读取,SetVariable()设置。当启动项加载完毕后,OS Loader启动,系统进入TSL阶段。
TSL(Transient System Load)是OS Loader作为一个UEFI应用程序运行的第一个阶段,此时系统资源仍由UEFI内核控制。TSL阶段的作用是为OS Loader准备执行环境,因此该阶段被称为临时系统,UEFI Shell是这个临时系统的人机交互界面,但系统一般不会进入UEFI Shell,而是直接执行OS Loader,只有当用户干预或OS Loader出错时才会进入UEFI Shell。在TSL阶段,当BS的ExitBootServices()服务被调用后,系统进入Run
Time阶段。
RT(Run Time)阶段,此时系统的控制权从UEFI内核转交到OS Loader,UEFI占用的各种资源被OS Loader回收,仅保留UEFI Runtime服务。随着OS Loader的运行,OS最终获得系统控制权。
AL(After Life)阶段为系统固件提供错误处理和灾难恢复机制。若在RT阶段,系统(硬或软件)遇到灾难性错误,则进入AL阶段。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UEFI