BIOS flash rom数据结构(一 )

本文详细介绍了BIOS ROM的组成,包括NVRAM、FV_MAIN和FV_BB等部分,每个部分由固件卷头部EFI_FIRMWARE_VOLUME_HEADER和固件文件系统FFS_FILE构成。固件卷头部包含ZeroVector、FileSystemGUID等字段,FFS_FILE则由EFI_FFS_FILE_HEADER和File Sections组成,用于存放不同类型的模块和数据。NVRAM主要存放可修改变量,FV_MAIN和FV_BB分别存储DXE模块、UEFI驱动等内容。

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

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部分为例:

  1. ZeroVector :全为0;

  1. FileSystemGUID: EFI_FIRMWARE_FILE_SYSTEM2_GUID ,FV_BB 也是FS2 GUID.

  1. 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:如以下定义

  1. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值