BIOS开发之路(三)——UEFI的概念及启动阶段

一、UEFI概述

1、UEFI的全称是Unified Extensible Firmware Interface,统一可扩展固件接口,定义了操作系统和平台固件之间的接口,可以让PC从预启动的操作环境,加载到操作系统上,是BIOS的替代者。UEFI提供给操作系统的接口包括启动时服务和运行时服务。

2、UEFI相对于BIOS的改进:

(1)UEFI对硬件的支持超过BIOS。UEFI可以使用2.2TB以上的硬盘作为启动盘,而BIOS不借助第三方软件只能作为数据盘。

(2)UEFI提供了一个高分辨率的图形化界面,用户进去后可以像在操作系统下那样使用鼠标进行设置和调整,操作上更为简单快捷。

(3)UEFI多使用C语言,而不是汇编语言,采用了模块化的设计,在逻辑上可以分为硬件控制和软件管理两部分。前者采用标准化的通用设置,而后者是可编程的开放接口,因此i主板厂商可以借助开放接口在自家的产品上实现各种丰富的功能,包括截图、数据备份、硬件故障诊断、脱离操作系统进行UEFI在线升级等。

二、UEFI的构成与启动阶段

UEFI主要由初始化模块、驱动执行环境、驱动程序、兼容性支持模块、UEFI应用和GUID磁盘分区组成。初始化模块和驱动执行环境是UEFI运行的基础,通常被整合在主板的闪存芯片中。UEFI的启动可以分为七个阶段,前三个阶段是CEFI初始化阶段,后四个阶段是操作系统加载阶段。

BIOS开发之路(三)——UEFI的概念及启动阶段_第1张图片

1、SEC(Security Phase)安全验证阶段

SEC是整个系统的起点,计算机加电后首先进入这个阶段,它主要做四件事请:

(1)接收并处理系统启动、重启、异常的信号。

(2)在SEC阶段时,仅有CPU和CPU内部资源被初始化。而各种外部设备和内存没有被初始化。因此系统需要一部分临时的内存用于代码和数据的存储,称为临时RAM(易失性),此时位于CPU内部。最常用的临时RAM是Cache。(Cache一般由SRAM构成,运算器、控制器、存储器、Cache都被封装在CPU内部。)(CAR技术,Cache as RAM)

(3)SEC作为可信系统的根,只有被SECX阶段被系统信任,下面的各阶段才有被信任的基础。

(4)将控制权交给下一阶段PEI phase,传递系统参数,包括:栈(位于内存)的地址和大小、系统当前的状态、可启动固件的地址和大小、临时RAM区域的地址和大小。

SEC的执行流程如图所示:

BIOS开发之路(三)——UEFI的概念及启动阶段_第2张图片

以临时RAM初始化为界,SEC的执行又分为两大部分:临时RAM生效之前称为Reset Vector阶段,临时RAM生效后调用SEC入口函数从而进入SEC功能区。计算机启动时如何执行BIOS程序

2、PEI(Pre-EFI Initialization)前期初始化阶段

PEI阶段对内存进行初始化,主要功能是为DXE阶段准备执行环境,将需要传递给DXE的信息组成HOB列表,将控制权转交给DXE。

(1)初始化内存,内存可以被使用。

(2)为DXE阶段准备执行环境:基本的chipset(芯片组)初始化、Memory Sizing、BIOS Recovery、S3 Resume、切换Stack到Memory、启动DXEIPL。

【HOB(Hand-Off Block)是在PEI阶段使用的数据结构,主要作用如下:

1、数据传递:HOB用于在PEI阶段的各个模块之间数据传递,由于在PEI阶段内存管理还没有完全建立,HOB提供了一个机制,允许不同的PEIM(PEI模块)共享数据和信息。

2、资源描述:HOB可以描述系统的资源,如内存、设备、ACPI表等

3、构建内存映射:PEI阶段的一个重要任务是建立内存映射,HOB用于记录内存的类型、大小和属性,帮助构建系统的内存映射表。

4、系统配置:HOB可以包含系统的配置信息,如固件设置、BIOS设置等,这些信息在后续阶段会被用于配置系统。

5、引导参数:HOB可以包含引导参数,这些参数会影响系统的启动行为,例如启动设备选择、启动选项等。

6、为DXE阶段准备:在PEI阶段结束后,HOB会被传递到DXE阶段。DXE阶段的初始化代码会使用这些HOB来进一步初始化系统,加载必要的驱动信息。

3、DXE(Driver Execution Environment)驱动执行环境阶段

DXE阶段执行大部分系统初始化工作,进入此阶段时,已经有足够的内存可以使用,因此完成大量驱动加载和初始化工作。产生System Table,来提供服务给各阶段使用。将控制权给BDS。

4、BDS(Boot Device Select)启动设备选择阶段

初始化控制台设备(指允许用户与计算机系统直接交互的物理硬件设备。它包括键盘和显示器等组件),加载必要的驱动,根据用户选择执行启动项。

5、TSL(Transient System Load)操作系统加载前期阶段

TSL是操作系统加载器(OS Loader)执行的第一个阶段,为操作系统加载器准备执行环境,被称为临时系统,具有操作系统的雏形,UEFI Shell是临时系统的交互界面。在人工干预或系统加载器出现严重问题的时候会进入UEFI Shell。

在TSL阶段,系统资源管理通过BS管理,BS提供的服务有:时间服务、内存管理:内存的管理与释放,管理系统的内存映射、Protocol管理、Protocol的实用类服务、驱动管理:用于将驱动安装到控制器的connect服务,及将驱动从控制器上卸载的disconnect服务、image管理、ExitBoolServices。

6、RT(Run Time)运行阶段

操作系统加载器取得系统的控制权,对UEFI占用的资源进行回收和清理。提供的服务有:时间服务、读写UEFI系统变量、虚拟内存服务和其它服务。若在这个阶段出现错误和异常,将进入AL进行修复。

7、AL(After Life)灾难恢复阶段

 在RT阶段如果系统(硬件或是软件)遇到灾难性错误,系统固件需要提供错误处理以及灾难恢复机制,这种机制运行在AL阶段。根据厂家自定义修复方案,UEFI和UEFI PI均未对AL阶段的行为和规范进行定义。

参考文章链接:https://blog.csdn.net/weixin_73231980/article/details/132336491

你可能感兴趣的:(BIOS开发,服务器,c++,嵌入式硬件)