
uefi
文章平均质量分 85
choumin
这个作者很懒,什么都没留下…
展开
-
DxeMain中driver的加载流程
1、创建 gEfiFirmwareVolumeBlockProtocolGuid 类型的 Protocol 实例 在 ./MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c 文件的第 487 行调用了 FwVolBlockDriverInit() 函数, 其定义在 MdeModulePkg/Core/Dxe/FwVolBlock/FwVolBlock.c 中: EFI_STATUS EFIAPI FwVolBlockDriverInit ( IN EFI_HANDLE原创 2021-01-12 08:48:31 · 1069 阅读 · 0 评论 -
UEFI 执行流程学习
UEFI系统的启动遵循UEFI平台初始化标准,从加电到关机可以分为7个阶段:SEC(安全验证)--> PEI(EFI前期初始化)→ DXE(驱动执行环境)→ BDS(启动设备选择)→ TSL(操作系统加载前期)→ RT(Run Time) → AL (系统灾难恢复期)。 SEC的执行可以分为两个阶段:Reset Vector阶段 和 SEC入口函数阶段。Reset Vector阶段主要是一些汇编代码,用于设置相关寄存器,该阶段系统还没有RAM,因而不能使用基于栈的程序设计,所有的函数调用都使用jmp指原创 2020-12-15 11:12:51 · 1120 阅读 · 1 评论 -
UEFI调试之memory barrier
最近在调试UEFI固件时遇到了memory barrier相关的问题,现在回过头来梳理一下问题发生的现场,给其他同学一些调试思路。 在./OvmfPkg/Library/VirtioLib/VirtioLib.c的第328行有个while循环,其中每次在判断 *Ring->Used.Idx 是否等于 NextAvailIdx时都调用了MemoryFence()函数。 ... // // virtio-0.9.5, 2.4.2 Receiving Used Buffers From th原创 2020-12-14 13:06:41 · 576 阅读 · 0 评论