UEFI学习笔记(三):FDF文件及FD、FV、FFS

UEFI学习笔记(三):FDF文件及FD、FV、FFS

一、基本概念

1.FDF文件:

Flash Description File (固件描述文件)定义了固件的布局、包含的模块和其他与映像生成相关的内容。

作用:

.fdf 文件用于指定固件映像的布局,包括:固件区域的定义、模块和驱动程序的链接位置、固件的启动设置。GenFds 工具用于将 FDF 文件转换为 FD 文件。

2.FD:

FD (Firmware Descriptor)文件通常包含多个固件区域,如启动区、驱动程序区、应用程序区等。一个FD由一组FV组成,它将这些固件卷组合成一个完整的固件映像,准备被烧录或加载到设备上。

作用:

FD 文件用于将多个固件组件打包成一个单一的固件映像。它定义了固件映像中各个部分的位置和大小。

生成:

在 UEFI 固件构建过程中,FD 文件是通过工具(如 GenFds)从 FDF 文件生成的。它表示固件的最终映像格式,包含所有需要的固件模块和区域。

3.FV

FV (Firmware Volume)是固件卷,它是固件映像中的一个逻辑区域,用于组织和存储固件组件。每个 FV 文件包含一个或多个 FFS 文件 ,构成固件映像中的不同区域(如启动区域、驱动区域)。在 .fdf 文件中,FV 是一个逻辑区块,实际存储多个固件文件。

作用:

FV 提供了一个结构化的方式来组织固件组件,使得不同的固件模块可以按需加载和管理。FV 通常用于 UEFI 固件映像的打包和管理。FV通过GUID(全局唯一标识符)来标识和访问其中的模块

生成:

在固件构建过程中,FV 文件通过将多个 FFS 文件组合在一起生成,形成固件卷。

4.FFS

FFS (Firmware File System)是固件文件系统中的一个单独的文件,它可以是一个模块、驱动程序、库、或应用程序(如 .efi 文件)。FFS 文件是固件卷(FV)中的基本组成部分。

作用:

FFS 文件用于存储和组织固件中的不同模块和驱动程序。每个 FFS 文件都有一个头部,描述其类型、大小和其他属性。

生成:

FFS 文件在固件构建过程中由编译器和链接器生成,然后被打包到 FV 文件中。

4.Capsule

它是用于定义固件更新包的配置部分。Capsule 是一种特定格式的固件更新映像,通常由多个组件打包而成,供系统在运行时或重启时进行更新。Capsule 的定义涉及到如何将固件更新数据组织到一个整体的映像中,以便通过 UEFI 更新机制进行处理。

Capsule 在 .fdf 文件中的作用:

Capsule 在 .fdf 文件中用于描述固件更新映像的布局、内容以及如何将这些内容打包成 Capsule 文件。

二、关联

FD、FV 、FFS和section:

FD、FV 、FFS、section之间存在密切的层级关系 ,从大到小依次构成整个固件。

FD是FV的上层容器,FV是FD中存储固件组件的一种结构。在 UEFI 固件的构建过程中,这些文件格式协同工作,以确保固件映像的正确组织和打包。GenFds 工具用于将 FDF 文件转换为 FD 文件,FD 文件再包含多个 FV 和 FFS 文件,FFS由section组成,以生成最终的固件映像。

FDF和INF:

在 .fdf 文件中,FV 会引用通过 INF 文件定义的模块 ,将它们打包到固件卷中。通常,.fdf 文件会指向多个由 INF 文件生成的模块,并将它们组织到一个或多个 FV 中。
(!!!新增app或driver的时候,需要把.inf添加到fdf中)

参考文章:

UEFI中的edk2编译流程_edk2代码走读

【UEFI基础】FDF文件

相关推荐
咔叽布吉38 分钟前
【论文阅读笔记】CamoFormer: Masked Separable Attention for Camouflaged Object Detection
论文阅读·笔记·目标检测
johnny23339 分钟前
《大模型应用开发极简入门》笔记
笔记·chatgpt
亦枫Leonlew41 分钟前
微积分复习笔记 Calculus Volume 1 - 4.7 Applied Optimization Problems
笔记·数学·微积分·1024程序员节
小肥象不是小飞象44 分钟前
(六千字心得笔记)零基础C语言入门第八课——函数(上)
c语言·开发语言·笔记·1024程序员节
星LZX1 小时前
WireShark入门学习笔记
笔记·学习·wireshark
努力变厉害的小超超3 小时前
ArkTS中的组件基础、状态管理、样式处理、class语法以及界面渲染
笔记·鸿蒙
aloha_7897 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
dsywws8 小时前
Linux学习笔记之vim入门
linux·笔记·学习
A-超10 小时前
vue3展示pag格式动态图
笔记
u01015265811 小时前
STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
笔记·stm32·学习