- 参考和说明
- 什么是HOB
- HOB的作用
- HOB(Hand-off Block) Services
- HOB Design Discussion
- HOB Code Definitions
- HOB Introduction
- HOB Introduction
参考和说明
- UEFI Platform Initialization (PI) Specification
- hob简单练习
- UEFI HOB
什么是HOB
HOB:Hand-off Block在PEI的执行过程中,PEI Phase提供了一种简单的机制来为数据存储分配内存,这个数据存储区被称为HOBs。这个数据存储区的基本内容为Hand-off Block,即HOB。在内存中,连续存在的HOBs对PEI Phase的可执行内容来说都是可见的。有一些Services用来帮助HOB管理。这些在内存中的HOBs的连续的表被称为HOB List。
HOB的作用
参考
- UEFI Platform Initialization (PI) Specification Volume 1 第9.3节
- UEFI Platform Initialization (PI) Specification Volume 3 第4.1节
在PEI->DXE入口处,提供的参数只有一个:HOB表
- 在PEI Phase 中,使用的数据存储区就叫做HOBs,PEI可以使用HOB向DXE传递信息。
- 在PEI Phase 中,HOBs是可读可写的,在DXE Phase中,只能读。

HOB(Hand-off Block) Services
参考 UEFI Platform Initialization (PI) Specification Volume 1 第4.4节提供 Hob相关操作接口接口 参考 : edk2\EmbeddedPkg\Library\PrePiHobLib\Hob.c
EFI_STATUSEFIAPIPeiGetHobList ( // This function returns the pointer to the list of Hand-Off Blocks (HOBs) in memory.IN CONST EFI_PEI_SERVICES **PeiServices,IN OUT VOID **HobList);VOID *CreateHob ( // the creation of a Hand-Off Block's (HOB’s) headers.IN UINT16 HobType,IN UINT16 HobLength)
HOB Design Discussion
参考 UEFI Platform Initialization (PI) Specification Volume 3 第4节
HOBs机制被用来 PEI根DXE交互系统信息的。PEI阶段是 HOBs链表生产者。可读写。DXE阶段是HOBs链表消费者。只读。

HOB producer phase memory map
- HOBs 链表中 , 第一个HOB必须是the Phase Handoff Information Table (PHIT) HOB
- HOBs 链表中, 最后一个HOB必须是 the End of HOB List HOB.
HOB Code Definitions
参考 UEFI Platform Initialization (PI) Specification Volume 3 第5节
HOB Introduction
所有的Hob有个公共header, 后边跟一个0长数组(根据类型不同,内容不同)
////// Describes the format and size of the data inside the HOB./// All HOBs must contain this generic HOB header.///typedef struct {////// Identifies the HOB data structure type.///UINT16 HobType;////// The length in bytes of the HOB.///UINT16 HobLength;////// This field must always be set to zero.///UINT32 Reserved;} EFI_HOB_GENERIC_HEADER;
目前HOB支持以下几种类型
- EFI_HOB_GENERIC_HEADER
- EFI_HOB_HANDOFF_INFO_TABLE
- EFI_HOB_MEMORY_ALLOCATION
- EFI_HOB_MEMORY_ALLOCATION_STACK
- EFI_HOB_MEMORY_ALLOCATION_BSP_STORE
- EFI_HOB_MEMORY_ALLOCATION_MODULE
- EFI_HOB_RESOURCE_DESCRIPTOR
- EFI_HOB_GUID_TYPE
- EFI_HOB_FIRMWARE_VOLUME
- EFI_HOB_FIRMWARE_VOLUME2
- EFI_HOB_FIRMWARE_VOLUME3
- EFI_HOB_CPU
- EFI_HOB_MEMORY_POOL
- EFI_HOB_UEFI_CAPSULE
- EFI_HOB_TYPE_UNUSED
- EFI_HOB_TYPE_END_OF_HOB_LIST
**还包含其他数据类型和结构的定义,这些数据和结构从属于它们在其中被调用的结构。 可以在“Related Definitions”中找到以下类型或结构 父数据结构定义的“定义”:
- EFI_HOB_MEMORY_ALLOCATION_HEADER
- EFI_RESOURCE_TYPE
- EFI_RESOURCE_ATTRIBUTE_TYPE
**
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论