UEFI学习笔记(四):inf、dec和dsc

一、基本概念

1、.inf 文件

.inf 文件用于描述特定的模块或驱动程序的详细信息和构建参数。它定义了模块的构建方式,包括模块的源文件、包含文件、库依赖关系和构建选项等。.inf 文件是构建过程中的主要输入文件,告诉构建系统如何编译和链接一个特定的模块。

.inf 文件通常包含以下信息:

1)模块定义:模块的名称、版本、作者等。

2)源文件:模块的源代码文件(例如 .c 文件)和头文件(例如 .h 文件)。

3)库依赖:模块需要的库和其他模块。

4)构建选项:编译器和链接器选项。

5)输出文件:构建输出的文件类型(例如 .efi 文件)。

必须块:

Defines\] 定义本模块的属性变量以及其他变量 \[Sources\] 列出本模块的所有源文件以及资源文件 \[Packages\] 列出本模块引用到的所有包的包声明文件 \[LibraryClasses\] 列出本模块要链接的库模块 **非必须块:** \[Protocol\] 列出本模块用到的Protocol \[Guids\] 列出本模块用到的GUID \[BuildOptions\] 指定编译和链接选项 \[Pcd\] 用于列出本模块用到的Pcd变量 **实例:** ```c [Defines] INF_VERSION = 0x00010005 MODULE_TYPE = DXE_DRIVER ENTRY_POINT = InitializeMyModule [Sources] MyModule.c MyModule.h [Packages] MdePkg/MdePkg.dec [LibraryClasses] DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf [Protocols] gMyProtocolGuid|MyProtocol.inf ``` ### 2、.dec 文件 dec 文件(Declaration File)主要用于定义库、PPI、PROTOCOL、GUID 等模块的公共接口和依赖项。通常用于模块或库的声明部分,向其他模块公开接口信息,**类似于头文件的作用**。 **作用:** 1)定义模块可以使用的 GUID、PPI、PROTOCOL。 2)声明模块对外公开的函数、全局变量等接口。 3)描述库类模块的依赖关系和接口定义。 **必须区块:** \[Defines

非必须块: [Includes] [LibraryClasses] [Guids] [Protocols] [Ppis] [PCD]

实例:

c 复制代码
[Defines]
PACKAGE_NAME = MyModulePkg

[Guids]
gMyProtocolGuid = {0xabcdef01, 0x2345, 0x6789, {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef}}

[Protocols]
gMyProtocolGuid|MyProtocol.inf

[LibraryClasses]
DebugLib

3、. dsc文件

.dsc 文件全称为 Description File,它是整个固件包或模块的构建描述文件,包含了构建的配置、依赖关系和构建选项,通常用于构建 UEFI 固件映像时的配置管理。库的构建依赖dsc文件

作用:

1)定义要构建的模块、库和驱动程序。

2)指定不同的构建目标、工具链和平台设置。

3)配置固件各个模块的编译选项、依赖关系。

必须块:

Defines\] \[LibraryClasses\] \[Components

非必须块:

PCD\] \[BuildOptions

实例:

c 复制代码
[Defines]
PLATFORM_NAME = MyPlatformPkg
DSC_SPECIFICATION = 0x00010005
OUTPUT_DIRECTORY = Build/MyPlatform

[Components]
MyPlatformPkg/Drivers/MyDriver/MyDriver.inf

[LibraryClasses]
MyLibraryClass|MyPlatformPkg/Library/MyLibraryClassLib.inf

二、.dec与.dsc的联系

1、定义与声明关系:

.dec 文件提供了模块的"接口 "和"声明",而** .dsc **文件则是告诉构建系统,如何去使用和组合这些模块,构建成一个完整的固件。

2、构建的依赖关系

.dec 文件中的定义通常在 .dsc 文件中被引用。具体来说,.dsc 文件会使用 .dec 文件中声明的Library Class、模块路径、 GUID 等资源。

3、使用关系:

.dec 文件: 是模块和库的设计者编写的,用于定义模块内的公共接口,描述模块与其他模块之间的依赖关系。
.dsc 文件: 则是平台开发者编写的,用于描述整个固件构建的流程,指定使用哪些模块和库。

参考文章:

笔记------inf、dsc、dec文件

相关推荐
无言以对,沉默不语,随你随你。13 分钟前
【解决办法】GitBash不能在任意文件夹打开
经验分享·笔记·git
ᖰ・◡・ᖳ16 分钟前
JavaScript:神奇的ES6之旅
前端·javascript·学习·es6
小马学嵌入式~41 分钟前
堆排序原理与实现详解
开发语言·数据结构·学习·算法
递归不收敛1 小时前
吴恩达机器学习课程(PyTorch适配)学习笔记:1.4 模型评估与问题解决
pytorch·学习·机器学习
又是忙碌的一天1 小时前
前端学习 JavaScript
前端·javascript·学习
牛马大师兄1 小时前
STM32独立看门狗IWDG与窗口看门狗WWDG知识梳理笔记
笔记·stm32·单片机·嵌入式硬件·嵌入式·看门狗
ooo-p1 小时前
FPGA学习篇——Verilog学习之计数器的实现
学习·fpga开发
wan5555cn1 小时前
Windows 11系统鼠标键盘被禁用问题的全面解决方案
windows·笔记·深度学习·计算机外设
A9better2 小时前
嵌入式开发学习日志37——stm32之USART
stm32·嵌入式硬件·学习
zhangrelay2 小时前
ROS云课三分钟-使用动态参数重配置调试Teb导航案例-251008
笔记·学习