admin管理员组文章数量:1516870
EDKII官方Spec 合集网站
前言
之前在向代码中添加自己创建的代码时,一直都是在自己创建的
LilyPackage
中创建好相应的
.h
.c
.inf
文件,然后在
EmulatorPkg.dsc
文件中将
.inf
文件进行包含,一直没有出现问题。但是在创建新的 protocol 的时候,出现了一点问题,就是关于 include 的
TestProtocol.h
。
在UEFI中,创建新的 protocol 是需要在
.dec
文件中声明对应的GUID 的,我当时的做法是将GUID 在
EmulatorPkg.dsc
[Protocols] 下进行声明,并且将自己定义的
.h
文件放在了 EmulatorPkg\Include\Protocol 路径下。但是有人提出,在他的代码中
需要将定义的 .h文件放在 MdePkg\Include\Protocol 路径下才可以得到编译结果
。之前我从来没有关心过文件的路径问题,对于不同类型的文件作用也没有进行深入的研究,借着这个疑问,也终于有机会对这些问题深入的研究一下。
Module & Package 概念
刚刚学习UEFI的人,不能避免的会遇到这两个概念,EDKII的代码组织形式就是以这两个概念为基础的,但是这两个概念在代码结构中的表现却很少有人提起。
我们打开EDKII代码的根目录,就可以看到许多个
.pkg
结尾的文件夹,每一个都是一个package
继续向下 我们就可以看到更多的子文件夹 有的子文件夹就是一个模块 ,但这也并不是绝对的。我们这样可以说是语焉不详,这种模棱两可的表述肯定搞不清楚这两个UEFI中最常见的概念的定义。为了明晰这两个概念,首先先看一下Build Spec (下载链接已经放在开头了 所有的EDKII需要的SPEC基本都能从这个连接中找到 )中对这两个定义的解释:
Module :A module is either an executable image or a library instance. For a list of module types supported by this package, see module type
Module: 是一个可执行image或者一个 lib instance 。某一个package中支持的module类型可以查看module type类型
Package:A package is a container. It can hold a collection of files for any given set of modules.
Packages may be described as one of the following types of modules:
- source modules, containing all source files and descriptions of a module
- binary modules, containing EFI Sections or a Framework File System and a description file specific to linking and binary editing of features and attributes specified in a Platform Configuration Database (PCD).
- mixed modules, with both binary and source modules
Multiple modules can be combined into a package, and multiple packages can be combined into a single package.Package:Package是一个容器,他容纳了一系列给定Module的文件的集合。
Package可以被描述成为以下几种类型的Modules的之一:
- source modules:包含了一个模块的所有源代码文件和描述文件
- 二进制 modules:包含了 EFI section 或者 一个ffs,以及 一个des 文件,专门用来链接和二进制编辑PCD中指定的功能和属性
- 混合modules :包含以上两种
多个modules可以被包含在一个package中,多个package也可以结合成一个package
我觉得Spec里面的解释可以说是非常抽象了 幸亏 我手边有两本参考书 可以看一下书中所言:
- 包(package)是一组模块及平台描述文件(dsc)、包声明(dec)文件组成的集合。
模块(可执行文件,即.efi文件)像插件一样可以动态地加载到UEFI内核中。- 模块是UEFI上最小的可单独编译的代码单元,或是预编译的二进制文件,比如.efi执行文件。
包由模块、平台描述文件和包声明文件组成。它可以不包含模块,也可以包含多个模块。
版权声明:本文标题:探索UEFI中的模块与包:构建系统的基础 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1771289453a3263823.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
Flash高手秘籍:了解并修改文件权限的实用技巧
文件属性 文件属性 :我们通过 ls查到就是文件属性,只不过ls只显示了部分文件属性学习操作文件属性的 OS API,可以深入的理解文件
Linux下文件权限属性浅谈:从'r--p'到'rw-p'
我们在 Linux 中,存在文件的目录中执行 ls -al 命令,就会获得该目录下文件及其文件属性的信息。 例如: $ ls -al-rw-r--r-- 1 root root 120 Jan 6 2019 .bashrc
深入Linux文件权限:掌握读取、修改大法
1.linux中各种文件类型 普通文件:(1) 文本文件:由文本构成,常见的.c文件, .h文件 .txt文件等都是文本文件,文本文件的好处就是可以被人轻松读懂和编写。 (2)
Linux秘籍:一探数据段属性之谜,为何r--p而非rw-p?
我们在 Linux 中,存在文件的目录中执行 ls -al 命令,就会获得该目录下文件及其文件属性的信息。 例如: $ ls -al-rw-r--r-- 1 root root 120 Jan 6 2019 .bashrc
深入解读IDMASF文件:ASF数据与IDM的连接
第一次写文章,界面不太好看,还请见谅。#######################################################################虽然ASF网站提供了pytho
“掌握Payload_packet的奥秘:ASF文件的Flash核心技术剖析”
ASF文件中实际的媒体数据遵循Payload Parsing Information。一个packet可以包含一个或者多个payload数据,这依赖于Payload Parsing Information中的Multiple Payl
丢失的HS属性文件在哪?揭秘如何在Adobe中找回被隐藏的SWF文件
一般这种病毒会从u盘传播,被该木马病毒感染的优盘,会自动生成和文件夹同名的exe文件,再把文件夹添加系统属性进行隐藏,同时还自动隐藏文件名后缀显示,而且图标也是文件夹的样子,很有欺骗性,一旦在未感染木马的电脑上双击了和文件夹同名的ex
Win11里的小秘密:让你的文件不再被藏匿
Win11操作系统也推出一段时间了,不少小伙都有下载体验,但是使用过程中还是会有一些问题。Windows11会为用户自主地隐藏一些私密的文件数据,目的是为了防止用户进行误删除操作,那么我们该如何恢复隐藏的文件?下面和小编一起来了解一下
让你的电脑'失而复得':回收站隐藏的Flash文件找回秘籍
在Windows里,每个磁盘分区都有一个隐藏的回收站Recycle, 回收站里保存着用户删除的文件、图片、视频等数据,比如,C盘的回收站为C:RECYCLE.BIN,D盘的的回收站为D:RECYCLE.BIN,E盘的的回收站为
从初学到精通:空间-Vim键绑定手册,让你的编码速度翻倍
space-vim键绑定完全手册:助记快捷键提升10倍编码效率 space-vim是一个专为Vim和NeoVim设计的现代化vim发行版,通过智能的助记键绑定系统,让开发者能够快速掌握并大幅提升编码效率。本文将详细介绍spac
从安装到反向分析:APP_e2esoft vcam的SWF探秘
主要分析CyberLink的Youcam 和e2esoft的VCam。 ========================== CyberLink YouCam =============================
轻松转换QQ音乐格式:QMCDecode让你畅听无阻
QQ音乐格式转换工具QMCDecode全解析:从加密限制到跨平台自由播放 QMCDecode是一款专为macOS用户设计的开源音频格式转换工具,专注于解决QQ音乐加密文件的播放限制问题。通过深度解析QMC加密算法,该工具能够将
一招解决:找回QQ聊天记录的秘密
简介:本文围绕如何在重装QQ后查看历史留言记录,并探讨查看他人电脑上QQ聊天记录的方法展开,主要涉及QQ本地数据存储机制、第三方查看工具使用以及聊天记录恢复技巧。文中介绍了QQ聊天记录默认存储路径、“Tencent Files”目录作
剑灵游戏出错?试试这3步,轻松搞定126‘未找到dll’!
在《剑灵》中遇到游戏崩溃弹窗显示“错误126:未找到dll”时,可尝试这样解决。先检查游戏文件完整性,确保相关动态链接库文件未缺失,然后更新驱动程序,清理电脑垃圾,若还不行,可考虑重新安装游戏来解决这一问题。本篇将为大家带来《剑灵》游
告别d3dx9_43.dll丢失,Adobe Flash Player重获新生,轻松几步搞定!
当d3dx9_43.dll文件缺失时,系统会显示错误信息来提示用户。这些错误信息可能会包含类似于"d3dx9_43.dll未找到"或"找不到d3dx9_43.dll"等字样。通常出现这样的字样那就是导
钢铁雄心4玩不动?快速找到d3dx9_43.dll的技巧攻略
在计算机游戏领域,遇到“找不到d3dx9_43.dll”错误信息是一个相当普遍的现象。这一问题不仅影响玩家的游戏体验,还可能导致游戏无法启动或运行不稳定。本文旨在深入解析这一问题的原因,并提供有效的解决方法,帮助广大游戏玩家轻松解决
D3DX9_43.dll丢失?代码无法继续,快速修复指南!
在计算机打开游戏和运行过程中,常常会遇到一些错误提示,其中最常见的就是缺少某个动态链接库(DLL)文件。而d3dx9_43.dll文件就是其中之一。本文将对d3dx9_43.dll文件进行总体介绍,帮助读者了解该文件的作用、安装方法以
d3dx9_43.dll出问题了?快速修复指南
d3dx9_43.dll如何修复?d3dx9_43.dll是电脑内十分重要的文件,它的丢失易导致游戏、应用软件等程序运行出现错误,致使程序无法正常运行,它的解决办法也是非常简单的,只要下载好d3dx9_43.dll文件,
从菜鸟到高手:Java实现文件压缩与加密的全过程
创建于 2021年6月15日 作者:想想java 加密压缩文件 1、引入依赖 <dependency><groupId>net.lingala.zip4j<groupId&g
《DNF》加载失败?只需几步修复ClientBase.dll问题,游戏畅通无阻
遇到《地下城与勇士》(DNF)提示“由于找不到ClientBase.dll无法继续执行代码”的问题时,意味着游戏在启动或运行时未能找到或加载一个必要的动态链接库(Dynamic Link Library)文件。ClientBase.d


发表评论