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在线升级等。

3、UEFI Flash ROM的组成

UEFI的Flash ROM固件由一个或多个Firmware volume(FV)构成,每个FV里面存放了FFS Image(EFI Firmware File system),FFS Images则有多个EFI Section构成,EFI Section包含了PE32/PE32+/Coff Image文件。UEFI固件的内存映射情况如下:

二、UEFI的构成与启动阶段

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

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的执行流程如图所示:

以临时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

HDMI BIOS开发是指开发与HDMI接口相关的基本输入输出系统(BIOS)。HDMI(High-Definition Multimedia Interface)是一种数字化音视频接口,通过它可以传输高清视频和多声道音频信号。而BIOS是计算机系统中的基本输入输出系统,负责在计算机启动时初始化硬件设备,并提供一些基础功能。 在HDMI BIOS开发中,开发人员需要根据HDMI接口的相关标准和规范,设计和实现支持HDMI接口的各项功能和特性。这可能包括从计算机主板到显示器的HDMI信号传输的初始化和控制,音频数据的处理和解码等。 开发HDMI BIOS需要具备一定的硬件和软件知识。开发人员需要了解HDMI接口的工作原理和编码标准,熟悉各种HDMI相关芯片的技术规格和功能特性。同时,他们还需要掌握BIOS开发的相关技术,如编程语言(如C语言)和硬件接口(如PCIe接口)等。 在HDMI BIOS开发过程中,开发人员通常会使用开发工具和调试设备来测试和验证他们的代码。他们可能会模拟HDMI信号传输和音视频数据的处理,以确保BIOS能够正确地初始化和控制HDMI接口,并且能够提供稳定和良好的音视频传输效果。 总之,HDMI BIOS开发是一项复杂而专业的工作,需要开发人员具备深厚的硬件和软件知识。通过开发HDMI BIOS,我们能够实现计算机与显示设备之间的高清音视频传输,为用户提供更好的视听体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值