UEFI.源码分析.DXE阶段的执行

本文深入分析UEFI源码EDK2中的DXE阶段,讲解了DXE启动过程,包括入口函数接收PEI阶段的HOB数据、初始化内存服务、镜像服务、全局配置数据库、事件服务和闪存文件服务。此外,还介绍了调度器的执行及进入BDS阶段的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 源码EDK2 : Tianocore
  • UEFI源码分析系列第一篇,DXE阶段的初始化与执行流程

源码结构

  • MdeModulePkg/
    • Core/
      • Dxe/
        • Dispatcher/ DXE调度器
        • DxeMain/ DXE阶段入口函数
        • Event/ 异步事件机制
        • FwVol/ 闪存文件系统FFS
        • FwVolBlock/ 闪存的块操作
        • Gcd/ 全局配置数据库
        • Hand/ 句柄Handle
        • Image/ 镜像文件服务,加载、解析和执行
        • Library/ 库函数,三个与lock相关的操作
        • Mem/ 内存服务,申请和释放
        • Misc/ 其他内容,看门狗、
        • SectionExtrantion/
        • DxeCore.uni 字符串数据
        • DxeCoreExtra.uni 字符串数据
        • DxeMain.h 头文件
        • DxeMain.inf 模块信息文件

DXE启动阶段


/* Dxe/DxeMain/DxeMain.c */
237 VOID                   
238 EFIAPI                 
239 DxeMain (              
240   IN  VOID *HobStart   
241   )                    
242 {

563 }  

DXE入口函数接收PEI阶段构建的HOB数据,HOB数据格式的定义位于/MdePkg/Include/Pi/PiHob.h

PEI阶段通过构建HOB数据,把系统相关的信息传递给DXE阶段,包括但不限于:PEI阶段的内存申请记录、闪存卷(FV)信息、可用内存资源信息、DXE模块数据。

DXE阶段主要使用的几类HOB数据:

  1. 可用内存资源信息,类型为EFI_HOB_TYPE_RESOURCE_DESCRIPTOR,用于初始化内存申请与回收服务,提供申请和回收内存的方法
  2. DXE模块数据,类型为EFI_HOB_MEMORY_ALLOCATION,子类型Name=gEfiHobMemoryAllocModuleGuid,用于初始化镜像服务,提供加载、解析和执行文件的方法
  3. 闪存卷信息,FlashVolume,类型为EFI_HOB_TYPE_FV,对每个闪存卷建立一个PROTOCOL用于读取数据。所有的驱动数据从这里面读取,然后调度执行。

269   //                                                                          
270   // Initialize Memory Services                                               
271   //                                                                          
272   CoreInitializeMemoryServices (&HobStart, &MemoryBaseAddress, &MemoryLength);

初始化内存服务


276   //                                                                                                      
277   // Allocate the EFI System Table and EFI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值