![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BIOS
文章平均质量分 83
小李不讲道理_
以人为本,方得始终。
展开
-
EDK2环境搭建(二)
上一篇文章对EDK2进行了编译运行,我发现,是对EmulatorPkg进行操作,因在target.txt文件中,有指定默认编译文件。此编译文件是一种UEFI的模拟器。会生成QEMU能识别的UEFI模拟器。所以昨天在使用Build命令后,会出现此结果。在EDK2文件夹中,还有一个很重要的固件:OVMF。同样可以使用QEMU打开。OVMF即开放虚拟机固件,它一般用于测试,是虚拟机上的UEFI固件。原创 2023-08-18 10:49:48 · 314 阅读 · 1 评论 -
EDK2环境搭建(一)
在前段时间,自己也在Windows下搭建过几次,但是都卡在一些奇怪的问题上,导致无法完成搭建,这两天自己又尝试搭了几次,终于在今天编译成功了,并且进去了qemu的Shell界面。如下图示。原创 2023-08-18 10:34:12 · 597 阅读 · 1 评论 -
DXE-------Driver Execution Environment (执行驱动环境)详解
DXE是在PEI阶段之后的下一个阶段。它实现了驱动环境的搭建(UEFI第三阶段)。DXE阶段执行了大量的系统初始化工作,在PEI的基础上,进入此阶段时,内存已经可以被完全使用,因此此阶段可以进行大量复杂的工作。DXE驱动之间通过Protocol通信。当所有的Driver都执行完毕后,系统完成初始化,接着会执行一个特殊的DXE Driver 的Protocol进而进入BDS阶段。从本质上讲,BDS是一种特殊的DXE阶段的应用程序。整体流程DxeMain是DXE阶段执行的主函数,入口函数。原创 2023-08-18 10:16:30 · 1032 阅读 · 1 评论 -
AMI中的SDL文件详解
System Description Language-----系统描述语言(用于描述硬件和配置的编程语言)是AMI引入的一种描述语言,SDL简单的说就是把BIOS代码中经常要改动的地方整理出来,单独放在SDL文件里面。这样要修改BIOS的时候,只需要改动SDL文件就可以了,不用去改动什么ASM,所以用SDL的目的是为了易于BIOS工程师更好的维护整个工程。TOKEN在AMI BIOS开发中,Token是一种预处理器宏,用于在编译时控制编译选项,生成代码和配置系统行为。原创 2023-08-17 16:18:19 · 1691 阅读 · 2 评论 -
ACPI Source Language(ASL)详解
ASL代码通常嵌入在BIOS固件中,并由ACPI解释器在系统启动和运行时执行,以处理各种电源管理和系统配置任务。ASL代码以人类可读且与平台无关的方式编写,然后编译成ACPI机器语言(AML),这是ACPI BIOS在系统初始化期间解释的二进制格式。ASL语言由ACPI规范定义,由UEFI(统一可扩展固件接口)论坛维护和更新。规范包含有关ASL的语法、语义和功能的详细信息。原创 2023-08-17 10:34:37 · 2179 阅读 · 2 评论 -
PEI-------Pre-EFI Initialization (预先EFI初始化)详解
PEI是在SEC阶段之后的下一个阶段。它实现了初始化内存(UEFI第二阶段)。虽然SEC阶段对CPU和CPU内的资源进行了初始化,但是PEI阶段可用的资源依旧十分有限,该阶段对内存进行初始化,主要功能是为DXE阶段准备执行环境,将所需要传递给DXE的信息组成HOB(Hand Off Block)列表,最终将控制权转交到DXE。原创 2023-08-17 09:59:09 · 767 阅读 · 1 评论 -
Advanced Configuration and Power Interface (ACPI)的详解
当操作系统查询AML解释器时,解释器在namespace中搜索请求的变量,计算与该变量关联的对象,并返回计算结果。固件开发人员将硬件规范的相关部分转换为包含用ACPI源语言(ASL)编写的代码的文件。一般地,ACPI定义了两种类型的数据结构,它们在系统固件和操作系统之间共享:数据表和定义块。②XSDT是操作系统ACPI子系统使用的第一个表,它包含系统上大多数其他ACPI表的地址。④FADT将ACPI子系统引导到DSDT, DSDT是namespace的开始,因为它是包含定义块的第一个表。原创 2023-08-16 10:54:04 · 229 阅读 · 1 评论 -
SEC-------security(安全验证阶段)详解
保存有关PEI核操作环境的信息,例如临时RAM位置的大小、堆栈位置和BFV位置。这个是UEFI当中在SEC阶段最重要的一个数据结构,将环境从以汇编语言执行转向C语言执行。(一)以临时RAM初始化为界,SEC的执行又分为两大部分:临时RAM生效(CAR)之前称为Reset Vector阶段,临时RAM生效(CAR)后调用SEC入口函数从而进人SEC功能区。所有真正的平台库实例都需要在程序集中实现真正的入口点。SEC是在上电/复位时控制平台的第一个模块。它是可信系统的根,安全阶段(第一阶段)。原创 2023-08-16 10:36:22 · 383 阅读 · 2 评论 -
UEFI启动的七个阶段简介汇总
Pre-EFI 也就是早期的EFI初始化,它也是处于启动流程中很早期的阶段,只能利用处理器的片上资源,比如上面提到的缓存作为临时内存,在C语言函数调用中当作栈使用,PEI阶段也有4档子事要处理,首当其冲的就是初始化一些永久内存,然后调用SEC阶段提供的接口,处理作为临时内存的缓存保障安全,然后把初始化好的永久内存通过Hand-Off Blocks形式进行描述,从名字可以看出,HOB是一种用于交接的块,负责阶段间的数据传递。计算机关机,休眠,睡眠,重启过程的系统信息都会在这一阶段保存。原创 2023-08-15 17:10:20 · 416 阅读 · 0 评论