1 .inf文件

以下面 .inf文件为例

[Defines]     # 块用于定义模块的属性和其他变量,块内定义的变量可被其他块引用
INF_VERSION = 0x00010006 #INF 标准的版本号, 前半部分主版本号,后半次版本号
BASE_NAME = Main #模块名字字符串,不能包含空格。它通常也是输出文件的名字 Main.efi
FILE_GUID = 4ea97c46-7491-4dfd-b442-747010f3ce5f#每个工程文件必须有一个8-4-4-4-12格式的GUID,用于生成固件
MODULE_TYPE = UEFI_APPLICATION # 定义模块的模块类型
VERSION_STRING = 0.1 # 模块的版本号字符串
ENTRY_POINT = ShellCEntryLib # 定义模块的入口函数 [Sources] # 用于列出模块的所有源文件和资源文件。 可选项体系结构相关块
Main.c # 块内每一行表示一个文件,根路径是工程文件所在的目录 [Packages] # 列出本模块引用到的所有包的包声明文件(.dec 文件)。
StdLib/StdLib.dec
MdePkg/MdePkg.dec
ShellPkg/ShellPkg.dec # 文件使用相对路径,相对路径的根路径为EDK2的根目录 [LibraryClasses] #块列出本模块要链接的库模块
LibC
LibStdio # 块内每一行声明一个要链接的库(库定义在包的.dsc 文件中,定义方法将在下文讲述

inf文件是模块的工程文件,其作用相当于Makefile 文件或Visual Studio 的.proj 文件,用于指导EDK2 编译工具自动编译模块;

工程文件分为多个块,每个块以“[ 块名]”开头,“[ 块名]”必须单独占一行。块又分为 工程文件必需块 和 工程文件非必需块

必需块 块描述
[Defines] 定义本模块的属性变量及其他变量,这些变量可在工程文件其他块中引用
[Sources] 列出本模块的所有源文件及资源文件
[Packages] 列出本模块引用到的所有包的包声明文件。可能引用到的资源包括头文件、GUID、Protocol 等,这些资源都声明在包的包声明文件.dec 中
[LibraryClasses] 列出本模块要链接的库模块
非必需块 块描述
[Protocols] 列出本模块用到的Protocol
[Guids] 列出本模块用到的GUID
[BuildOptions] 指定编译和链接选项
[Pcd] Pcd 全称为平台配置数据库(Platform Conf iguration Database)。
[Pcd] 用于列出本模块用到的Pcd 变量,这些Pcd 变量可被整个UEFI 系统访问
[PcdEx] 用于列出本模块用到的Pcd 变量,这些Pcd 变量可被整个UEFI 系统访问
[FixedPcd] 用于列出本模块用到的Pcd 编译期常量
[FeaturePcd] 用于列出本模块用到的Pcd 常量
[PatchPcd] 列出的Pcd 变量仅本模块可用

2 .dsc文件

.inf 用于编译一个模块, 而.dsc 文件用于编译一个Package, 它包含了[Defines]、

[LibraryClasses]、[Components] 几个必需部分以及[PCD]、[BuildOptions] 等几个可选部分。

3 .dec 文件

.dec 文件定义了公开的数据和接口,供其他模块使用。它包含了必需区块[Defines] 以及可选区块[Includes]、[LibraryClasses]、[Guids]、[Protocols]、[Ppis] 和[PCD] 几个部分。

.dec文件需要被调用模块.inf文件所包含。

UEFI原理与编程(四)(dec dsc inf文件)的更多相关文章

  1. 【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建

    一.概述: 0.为什么会有这篇文章 说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天. 既然想了就去写,即使最后做不完,也不后悔. 抱着这样的念头,我开 ...

  2. (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  3. WebSocket原理与实践(四)--生成数据帧

    WebSocket原理与实践(四)--生成数据帧 从服务器发往客户端的数据也是同样的数据帧,但是从服务器发送到客户端的数据帧不需要掩码的.我们自己需要去生成数据帧,解析数据帧的时候我们需要分片. 消息 ...

  4. Contiki源码+原理+功能+编程+移植+驱动+网络(转)

    源:Contiki源码+原理+功能+编程+移植+驱动+网络 请链接:http://www.rimelink.com/nd.jsp? id=31&_np=105_315 假设您对于用Contik ...

  5. trident原理及编程指南

    目录 trident原理及编程指南 一.理论介绍 1.trident是什么? 2.trident处理单位 3.事务类型 二.编程指南 1.定义输入流 2.统计单词数量 3.输出统计结果 4.split ...

  6. Vue双向绑定的实现原理系列(四):补充指令解析器compile

    补充指令解析器compile github源码 补充下HTML节点类型的知识: 元素节点 Node.ELEMENT_NODE(1) 属性节点 Node.ATTRIBUTE_NODE(2) 文本节点 N ...

  7. 数据库系统原理之SQL(四)

    数据库系统原理之SQL(四) 1. 数据更新 插入数据 INSERT-VALUES语句 #插入多条数据 insert [into] table_name (column_name,...) value ...

  8. shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)

    一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...

  9. 超级干货:动态防御WAF技术原理及编程实战!

    本文带给大家的内容是动态防御WAF的技术原理及编程实战. 将通过介绍ShareWAF的核心技术点,向大家展示动态防御的优势.实现思路,并以编程实战的方式向大家展示如何在WAF产品开发过程中应用动态防御 ...

  10. RocketMQ架构原理解析(四):消息生产端(Producer)

    RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & I ...

随机推荐

  1. docker 构建镜像拉取镜像生成实例

    实战tomcat镜像 准备镜像文件 编写dockerfile 首先将tomcat和jdk软件包上传 创建tomcat文件夹,将文件传送到tomcat文件夹 创建Dockerfile(不用加-f指定)文 ...

  2. SourceGenerator 生成db to class代码优化结果记录

    优化 上一次实验 代码写的较为随意,本次穷尽所学,优化了一把, 不过果然还是没 比过 Dapper aot, 虽然没使用 Interceptor, 但理论上其优化不该有这么大差距 知识差距不少呀,都看 ...

  3. 【Java】图片压缩处理

    需求如下: 一些图片太大了,手机拍摄上传的图片有5M大小,然后阅读的内容其实不需要特别高的分辨率 1M以下的图片并不需要被压缩,压缩只是针对部分过大的图片处理 图片处理库: 我看了几篇,还是选代码量最 ...

  4. windows11系统NVIDIA显卡驱动自动升级导致2070 Super显卡失效 —— 552.22版本自动升级到560.70版本后2070 Super型号显卡停止工作

    操作系统 Windows11,旧版本显卡驱动是552.22,由于安装的是NVIDIA Geforce Experience后显卡驱动自动升级到560.77版本,然后显卡不再工作. 重新安装显卡驱动56 ...

  5. python高性能计算:cython使用openmp并行(示例)

    y.pyx import cython from cython import parallel from cython.parallel import prange cdef int i cdef i ...

  6. 机器人操作系统ROS (学习视频)—— 学习ROS,安装Ubuntu,虚拟机和双系统如何选择

    分享一个ROS入门视频: https://www.bilibili.com/video/BV1BP4y1o7pw/

  7. 台式机电脑散热之狂想曲——主机机箱散热的另类方法(纯空想中ing)

    本博文是一篇狂想曲,之所以叫狂想曲是因为本文只是博主在无聊时突发奇想,而且仅停留于想的阶段,所以本文内容不用太过认真. 事情是这样的,博主有一台式机,有事没事的就喜欢宅在宿舍里面,有时候还能偶然用这台 ...

  8. ubuntu18.04环境下如何为 vs code 实现ftp功能

    如前文所述  https://www.cnblogs.com/devilmaycry812839668/p/14797739.html , 在vs code 自身环境下的ftp功能插件难以使用,而在W ...

  9. CH05_数组

    CH05_数组 概述 定义:一组相同类型的数据的集合. 描述: 1.数组中的每个元素都是相同的数据类型 2.数组是由连续的内存位置组成的. 3.数组索引是从0开始 一维数组 语法: 1.数据类型 数组 ...

  10. IoTSharp:基于 .NET 8.0 的开源物联网平台

    前言 想要快速了解物联网的世界吗?如果你对物联网(IoT)感兴趣,或者正打算开发自己的物联网项目.可以试试 IoTSharp,一个基于 .NET 的开源平台. 无论你是初学者还是有经验的大佬,IoTS ...