UEFI
文章平均质量分 85
一只小菜鸟-BIOS
BIOS 工程师
展开
-
Uefi Application小游戏开发之推箱子
推箱子(Pushbox)是一个经典的益智游戏,其C语言实现需要设计一个游戏循环,处理用户输入,并更新游戏状态。如果无法走就不执行,其他的方向操作原理相同,然后更新打印。处理上下左右按键,处理按键上下左右,更新地图信息,上。UEFI模拟器可直接运行。原创 2024-10-23 14:34:05 · 310 阅读 · 0 评论 -
Uefi Application小游戏开发之猜箱子
小游戏之选择箱子个数 ,交换次数 ,交换速度等,将球丢入到一个箱子中,然后开始随机交换箱子,猜出球的位置1.选择难度 交换次数2.选择难度 箱子个数3.开始交换4,交换完成后猜球的位置基本函数介绍。原创 2024-10-29 16:58:04 · 329 阅读 · 0 评论 -
Uefi Application小游戏开发之贪吃蛇
那么程序会检查用户输入的键值。如果键值是 'w'、'a'、's' 或 'd',那么程序会将这些值赋给。这行代码是在等待两个事件中的任何一个发生。这两个事件分别是定时器事件和键盘输入事件。总的来说,这段代码的作用是等待用户输入方向键,并根据用户的输入来改变蛇的移动方向。这段代码是一个 UEFI 应用程序,它实现了一个简单的贪吃蛇游戏。,那么发生的事件是键盘输入事件。在这种情况下,程序会调用。如果等待的事件不是键盘输入事件,那么程序会设置。来读取用户输入的键值。原创 2024-11-07 18:10:49 · 355 阅读 · 0 评论 -
UEFI BIOS 之 Event 详细介绍
中断:CPU执行程序时,由于发生了某种随机的事件,引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断传统的中断模式硬件中断- 敲键盘→键盘信号传输给EC→EC产生硬件中断 (IRQ)到CPU→中断信号输入到CPU的中断控制器→OS执行对应的软件代码来获取键盘按键。原创 2024-11-14 10:21:08 · 961 阅读 · 0 评论 -
Secure Boot 详细介绍
Platform Key (PK) - PK 是用于在硬件平台层和硬件平台拥有者建立起的信任关系 ,规定一个硬件平台只能被一个拥有者所拥有,即 PK 只能存在一个 ,与拥有者相关的公钥被存储在 FLASH 里面的 PK 变量里面,同时,拥有者的私钥可以来对 PK, KEK, db, dbx 进行签名和管理。保存后进Shell, 运行加签名的文件, 能运行。1. **启动固件验证**:在计算机启动时,启动固件(如UEFI固件)会验证操作系统引导加载程序的数字签名,确保其来自受信任的发布者。原创 2024-09-09 10:37:42 · 3397 阅读 · 0 评论 -
系统表 ConfigurationTable 之ACPI Table SmbiosTable
在UEFI中,系统表(Configuration Table)是一个包含系统配置信息的数据结构,其中包含了各种系统信息和表格(Tables)。其中,ACPI(高级配置与电源接口)表和SMBIOS(系统管理BIOS)表是两个重要的系统表,用于描述系统的硬件配置和特性。XSDT表全称Extended Root System Description Table,它的作用于RSDT一样,区别在于两者包含的指针地址一个是32位的,一个是64位的。原创 2024-09-06 14:51:02 · 373 阅读 · 0 评论 -
UEFI BIOS之SMBIOS
需要注意的是STRING 类型的信息 ,这个offset位置代表的是第几个String,而不是描述信息,所有String类型的描述信息都在smbiostype* 的后面开始通过0 隔开。每个Type 和每个Type 的中间是通过两个Ascall 0 0 隔开的,每个Type中若有String 字段,String字段通过一个0 隔开。不同的Type存储不同的信息,这些信息是BIOS提供OS的一个表,OS的部分配置会参考Smbios。第一个string , 0为两个String的分隔符。原创 2024-09-04 21:19:06 · 1090 阅读 · 0 评论 -
Windbg 调试EDK
此方法不仅可以调试还可以用于学习代码运行流程,在逻辑关系复杂的代码段加入CpubreakPoint(),单步调试可以详细理解代码执行的流程,和函数调用关系逻辑。6.运行efi文件,当运行无断点的程序会正常运行到shell下,当运行有断点的程序会运行到断点处进行单步调试,同时当出现Hang机也会终止运行。本示例在EFI shell 下去运行efi efi会导致Hang机 则会停在hang机点 可查看到对应的代码段。ed address value 在address 这个地址写入四字节字节value。原创 2024-09-02 17:03:38 · 1094 阅读 · 0 评论 -
EDKII之安全启动详细介绍
安全启动(Secure Boot)是一种计算机系统的安全功能,旨在确保系统启动过程中只能加载经过数字签名的受信任的操作系统和启动加载程序。通过使用安全启动,系统可以防止恶意软件在启动过程中植入并运行,提高系统的安全性。启动固件验证:在计算机启动时,启动固件(如UEFI固件)会验证操作系统引导加载程序的数字签名,确保其来自受信任的发布者。操作系统验证:启动加载程序会验证操作系统内核和驱动程序的数字签名,以确保它们没有被篡改。启动链验证。原创 2024-08-22 16:00:26 · 1522 阅读 · 0 评论 -
EDKII Boot Order Boot Option 介绍
Boot 启动项中有个Boot Order的 Variable 打印一看 发现只存在几组 数据 0000 0001。Boot Menu是一个动态更新的,在Vfr中预留了Label Question id 0x1212。Boot界面显示有多个启动项,这些启动项都是存在Nvram中 我们在Vaiabled中查找启动项。启动信息存在Boot####中 通过Boot Order 确定启动的顺序。LOG 中Dump 了 Boot#### 以及Boot Order。改变Boot option的Order。原创 2024-07-26 17:15:26 · 949 阅读 · 0 评论 -
UEFI DebugLib 介绍
有多个Lib 对DebugPrintEnabled 做了定义,因此可以使用不同的Lib 让Debug()产生不同的效果,这点也适用于其他函数。UefiDebugLibConOut.inf 这个Lib就是开始我们提到的将debug信息打印到Shell 使用的Lib。当我们调试程序时,可以在可能有问题的地方插入一条 INT 3 指令,使 CPU 执行到这一点时停下来。当条件为假时,断言会触发错误处理机制,通常会导致程序中。对于不同的架构实现方式可能不同,但是可以用同样的模块代码,通过替换Lib去替换实现函数。原创 2024-07-25 17:09:16 · 913 阅读 · 5 评论 -
Linux服务器搭建http服务,添加DNS域名解析
文档根目录: /var/www/html ,这个是apache 首页的文档目录 ,即输入http://127.0.0.1 显示页面所在的目录。命令执行文件:/usr/sbin/apachectl ,/usr/sbin/httpd,/usr/bin/htpasswd。主配置文件:/etc/httpd/conf/httd.conf ,这个是httpd最主要的配置文档。扩展配置文件:/etc/httpd/conf.d/*.conf ,这个是httpd的额外配置文档。域名解析服务通过将域名解析为。原创 2024-05-30 10:46:15 · 1508 阅读 · 0 评论 -
PCIe Capability and Extended Capability
1. **PCIe Capability:** PCIe Capability 是指 PCIe 设备的基本能力,包括设备的类型、速度、链接状态、电源管理、错误处理等。在 PCIe 设备的配置空间中,PCIe Capability 和 Extended Capability 结构是以特定的格式和偏移地址存储的,操作系统和驱动程序可以通过读取这些结构来获取设备的基本能力和扩展功能,从而进行适当的配置和管理。PCI配置Header(64B,00h~3Ch)具有固定的格式,主要有两种:Type0和Type1。原创 2024-06-03 15:07:51 · 948 阅读 · 0 评论 -
BIOS 初始化之SEC
一般会在,reset vector(地址 0xFFFFFFF0)放置一条跳转指令(ResetVec.nasmb),跳转 到 SecCore 入口,其地址为 PlatformSecLib 的 SecEntry.nasm 汇编_ModuleEntryPoint 宏定义处, SecCore 完成基本的初始化之后会调用 PeiCoreEntry.nasm 内的 CallPeiCoreEntryPoint()函数,跳转到 PeiCore。第二个NOP是占位符,为了让随后的JMP可以16位地址对齐,这样性能高一些。原创 2024-06-12 10:32:02 · 973 阅读 · 0 评论 -
RAS--APEI 报错解析流程(1)
1.注册SMI ApuRasDispatch gFchSmmApuRasDispatchProtocolGuid,当PCIE产生错误,CPU的寄存器会存在错误状态,IOHCRAS会有错误的信息,同时会产生SMI的中断,BIOS会读取错误信息同时去扫描PCIE 的配置空间AER Capbility的错误状态填写到APEI HEST GHES type9中对应的PCIE错误结构体,同时汇报ipmi 错误到BMC和清除错NBIO Global Status误状态,AER 错误可以OS 清除。原创 2024-07-24 16:34:02 · 1411 阅读 · 0 评论 -
RAS--APEI 报错解析流程(2)
这就对应到Dmesg 中的HardWare error 错误,就可以识别到错误的source id ,既可以大致定位错误信息来源 Source id = 512 对应到PCIE 错误。使用BERT 的header 通过section type 区分错误类型 对应到不同的错误结构 都是通过block error status addrss 链接。对于OS去打印HardWare error 只需要参考GHES 中的Error Block status 就会去打印 错误的GHES Table中的错误信息。原创 2024-07-24 19:07:25 · 1123 阅读 · 0 评论 -
CPU模式与寄存器介绍
保护模式:保护模式提供了内存保护机制,通过分段和分页机制,可以将内存划分为不同的段和页面,并为每个段和页面设置访问权限。当CPU支持20根以上地址线时,可以访问到0x100000到0x10FFEF的地址,但是需要打开A20地址线支持,否则访问到的是0x0000-0xFFEF的内存地址。保护模式:在保护模式下,内存访问是基于虚拟地址的,程序使用段选择子和偏移地址的组合来访问内存。保护模式:保护模式支持32位和64位的寻址空间,可以访问更大的内存容量,充分利用现代计算机的性能和资源。原创 2024-02-06 17:01:22 · 778 阅读 · 0 评论 -
BIOS RTC唤醒原理之COMS寄存器
如果RTC唤醒事件的状态和使能位是在Fixed Hardware中实现的,则OSPM可以在不加载整个操作系统的情况下判断该RTC是否是唤醒事件的源。S4唤醒是可选的,通过FADT中的RTC_S4标志(如果设置,则平台在S4状态下支持RTC唤醒)*来支持。FADT中的CENTURY字段 将包含一个非零值,该值表示RTC的CMOS RAM区域的偏移量,该区域包含该日期的Centenary值。FADT中的DAY_ALRM字段将包含一个非零值,该值表示RTC的CMOS RAM区域的偏移量,该区域包含日告警值。原创 2024-02-06 10:13:21 · 3633 阅读 · 0 评论