BIOS rom包括NVRAM(NVRAM MAIN)+ NVRAM_BACKUP +FV_MAIN+FV_BB 实际情况可能
还有 FIT/OA/WHEA 等 area,具体看平台设计。而NVRAM,FV_MAIN,FV_BB 这些Type 定义 为 FV(Firmware Volume 固件卷),其数据结构由固件卷头部+固件文件系统组成。

固件卷头部: EFI_FIRMWARE_VOLUME_HEADER
固件文件系统:Firmware File System (FFS_FILE)
总结:BIOS ROM 由 多 个 FV 数据组成 每个 FV 可以有一个或者多个 FFS_FILE
NVRAM 只有一个 FFS FILE ,主要是存放各种用户可以修改的 variable ,如 setup;
FV_MAIN 有多个 FFS FILE 主要 为 DXE modules UEFI driver UEFI app,SMM modules 等内容 ;

FV_BB 有多个 FFS FILE 主要 为 PEI CORE PEIM SEC 等 modules ,最后一个 FFS 为 VTF Volume Top File ),存放 SEC Core 的内容 (开机第一条指令会跳转到SEC地方)。

固件卷头部EFI_FIRMWARE_VOLUME_HEADER
其数据结构如下

以NVRAM部分为例:
-
ZeroVector :全为0;
-
FileSystemGUID: EFI_FIRMWARE_FILE_SYSTEM2_GUID ,FV_BB 也是FS2 GUID.
-
ExtHeaderOffset不 为零的情况下, FFS_FILE start offset = ExtHeaderOffset +ExtHeaderSize (另外涉及到 8 字节对齐,所以 start offset 为0x78 开始);如果ExtHeaderOffset 为0,FFS_FILE start offset = NVRAM OFFSET + HeaderLength

FFS_FILE: EFI_FFS_FILE_HEADER + File Sections (固件段)

Name:FFS唯一GUID值,PEIM或者 DXE 等 Module, 在 token 里面定义 FFS_FILE, 对应的INF 里面定义FILE_GUID,GenFfs 会读取 INF 信息来生成 FFS File

Type:如以下定义

-
bin 或者 EFI file 一般定义为 FILE RAW 或者 FILE DRIVER,NVRAM type 是EFI_FV_FILETYPE_RAW (not contain sections and is treated as a raw data file)

2. PEIM,DXE module INF 里面定义 module_type 即 为 file type ,这些往往包含section file
