UEFI开发与调试---edk2中的Module
Edk2在设计是按照模块来进行的,其中模块包含有很多种类型,比如最常见的三种:应用程序模块,驱动模块,库模块。每个模块都包含了一个工程元数据文件(.inf)和源文件。.inf文件是用来辅助编译的,功能类似于Makefile;而源文件就是功能代码的实现了。本文主要用来介绍.inf的编写规则。
类似于前文介绍的.dsc和.dec文件,工程元数据文件(.inf)也是由一系列块组成,它们有一些是必需块: [Defines],[Sources], [Packages], [LibraryClasses],和一些可选块:[Protocols],[Guids],[BuildOptions], [Pcd], [FixedPcd], [PcdEx], [Protocols]。
下面将挑选一些常用的块进行详细讲解:
[Defines]
此块用来定义模块的属性和其他变量,块内定义的变量可被本文件中的其他块引用。[Defines] INF_VERSION = 0x00010006 BASE_NAME = Hello FILE_GUID = a912f198-7f0e-4803-b908-b757b806ec83 MODULE_TYPE = UEFI_APPLICATION VERSION_STRING = 0.1 ENTRY_POINT = ShellCEntryLib
INF_VERSION,INF标准的版本号,build会根据此版本号来解析本文件,通常将此版本好设置为 0x00010006即可;BASE_NAME是模块名字; FILE_GUID每个工程必须要有一个8-4-4-4-12类型的Guid,用于生成固件;MODULE_TYPE为模块类型,UEFI_APPLICATION表示是APP类型。VERSION_STRING表示该模块的版本号; ENTRY_POINT定义的是模块入口函数,比如这里的ShellCEntryLib。
[Sources]
此块用于列出本模块所有的源文件和资源文件,可以通过后跟平台名称的方式来区分不同平台。
示例:[Sources]Hello.c [Sources.IA32]CpuIA32.c [Sources.X64]CpuX64.c
[Packages]
列出本模块所引用的所有包的声明文件(.dec)。[Packages]MdePkg/MdePkg.decShellPkg/ShellPkg.dec
[LibraryClasses]
累出本模块所引用的库,只需要库名称。[LibraryClasses]UefiLibShellCEntryLib
[Protocols]
列出本模块所使用的Protocol,其实是Protocol对应的GUID。[Protocols]gEfiDhcp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMEDgEfiDhcp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED
[Guids]
列出本模块所使用的Guids。方法和上面[Protocols]一样。[BuildOptions]
定义该模块的编译选项,格式如下:[BuildOptions.$(Arch).$(CodeBase)] [编译器]:[$(Target)]_[Tool]_[$(Arch)]_[CC|DLINK]_FLAGS=
UEFI开发与调试---edk2中的Module相关推荐
- UEFI开发与调试---edk2中的应用模块/库模块/驱动模块
应用模块 应用模块包含标准应用程序模块,shell应用程序模块,以及main应用程序模块 标准应用程序模块 它是所有其他应用程序模块的基础,作为一个模块来说,同样由源文件和工程文件(.inf)组成. ...
- UEFI开发与调试---edk2中的Package
在开始编写UEFI APP之前,我们需要先对UEFI包和模块的概念有个了解. 在edk2的根目录下,我们可以发现有很多*Pkg命令的目录,这些实际上都是各个不同的包,每个包中都是一组模块的集合,每个包 ...
- UEFI开发与调试--edk2中的基础组件
还记得前面介绍的MdePkg和MdeModulePkg吗?这两个包中会实现UEFI内核中的基础组件,其中就包括了系统表,启动服务表,运行时服务表. 系统表(System Table) 系统表是edk2 ...
- UEFI开发探索97 – EDK2模拟器搭建网络环境
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365) EDK2模拟器搭建网络环境 1 搭建EDK2开发环境 1)工具安装 2)下载代码库 3)更新子模 ...
- [UEFI开发] Linux Ubuntu EDK2环境搭建
UEFI开发EDK2环境搭建(Ubuntu - Linux X86_64) UEFI是什么? 开发系统环境的选择--Linux 正文 安装工具 1.获取EDK 2代码 2.修改配置文件 3.编译Bas ...
- 使用Xilinx K7 KC705开发板调试PCIe中的问题【持续更新】
开发板:Xilinx K7 KC705 软件:ISE14.7 1.由于应用需求,我们要将开发板作为主机端,通过PCIe接口转接板外接一个NVMe PCIe SSD.并由FPGA控制SSD的数据读写. ...
- UEFI开发与调试---QEMU虚拟盘的创建与修改
支持的文件格式 qemu支持多种类型的文件系统,而最原生的以及最灵活的是qcow2类型了,这种文件系统支持写时复制,加密,压缩以及VM快照. 除了这种文件系统之外,如下类型也是被支持的:raw ,cl ...
- 移动app开发,调试过程中,手机端浏览器无法正常访问接口
问题描述:前后端分离开发过程中,在本地启动一个tomcat服务后,pc端的浏览器可以访问接口,但是移动端的却访问不到 解决方案: 1 将pc和移动端放在同一个局域网内(连接wifi) 2 将pc端的C ...
- 飞腾FT2000/4 u-boot/UEFI开发环境搭建
参考 UEFI开发与调试-edk2中子目录介绍 ACP基础--Resource Descriptors for ACPI ubuntu16.04操作系统下的edk2安装 [UEFI实战]如何在OS下获 ...
最新文章
- Logstash配置总结和实例
- 在word 2007中插入复选框
- java递归深度克隆_递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝。...
- Repeating Decimals (计算循环小数)
- Chrome DevTools 调研笔记
- java mybatis 教程_(整理)MyBatis入门教程(一)
- GitHub上如何删除fork别人的repository
- 如何统计当前Spark程序有多少分区?
- 3.2 Hadoop生态
- 微信小程序开发流程、开发者工具下载安装
- xvidcore-1.3.2\xvidcore\dshow 工程编译
- linux 命令详解 大于号_Linux 命令出现号(大于号)如何退出[组图]
- 直播平台搭建源码,css预加载旋转动画 与 流光字体
- 方舟神器/贡品代码大全
- TFN TT70网络综合分析仪性能如何
- Django的多表查询操做
- 面试字节跳动测试岗位一般问什么测试点_字节跳动校招流程详解(附带笔试真题+面经)...
- c语言函数内判断嵌套常见错误,c语言不等于(c语言多个if函数怎么嵌套)
- 【谷粒学院】001-项目概述、Mybatis Plus入门
- 消息队列KafKa的集群部署
热门文章
- 百度搜索稳定性问题分析的故事
- python通过调用百度天气API接口获取天气信息
- Theano安装教程
- 传奇世界私服务器端制作,关于内网架设传奇世界私服问题的一些解答
- Cocos Shader入门基础七:一文彻底读懂深度图。
- Opencv或python中图像与三维数组原理
- 智能卡CPU卡开卡指令
- JavaScript—箭头函数
- C++ 语法 const限定符
- java去除字母_java 字符串中去除 数字 字母 符号amp;amp;N*1*senten.Length=gt;M*M