EDKII工程结构介绍

EDK2工程结构介绍

  • EDk2开发环境的安装

目录

  • 一、EDK2工程目录的一级结构
  • 二、常用的目录文件
    • 2.1 BaseTools--构建工具链
    • 2.2 Conf--配置目录
    • 2.3 MdePkg--基础核心包
    • 2.4 MdeModulePkg -- 常用模块包
    • 2.5 OvmfPkg--OVMF固件工程目录
  • 总结

一、EDK2工程目录的一级结构

ayuan@ayuan-virtual-machine:~/src/edk2$ tree -L 1
.
├── ArmPkg			# ARM架构相关代码
├── ArmPlatformPkg
├── ArmVirtPkg
├── BaseTools		# 编译EDK2所需基础工具集,包含编译器,链接器等
├── Build			# 构建输出目录,编译后生成的文件,包括各种平台的固件镜像
├── Conf			# target.txt文件用于定义要构建的平台,构建目标和工具链配置
├── CONTRIBUTING.md
├── CryptoPkg		# OpenSSL加密支持
├── DynamicTablesPkg
├── edksetup.bat
├── edksetup.sh		# 环境配置脚本,设置编译环境变量,初始化工作环境
├── EmbeddedPkg
├── EmulatorPkg
├── FatPkg
├── FmpDevicePkg
├── IntelFsp2Pkg
├── IntelFsp2WrapperPkg
├── License-History.txt
├── License.txt
├── Maintainers.txt
├── MdeModulePkg		# 模块化核心包
├── MdePkg				# 最基础的核心包,UEFI标准定义,基本数据类型和库函数
├── NetworkPkg			# 网络协议栈
├── OvmfPkg				# 虚拟机固件
├── PcAtChipsetPkg
├── pip-requirements.txt
├── PrmPkg
├── ReadMe.rst
├── RedfishPkg
├── SecurityPkg			# 安全功能
├── ShellPkg			# shell命令行界面
├── SignedCapsulePkg
├── SourceLevelDebugPkg
├── StandaloneMmPkg
├── UefiCpuPkg			#  x86 CPU相关功能
├── UefiPayloadPkg
└── UnitTestFrameworkPkg29 directories, 8 files

二、常用的目录文件

2.1 BaseTools--构建工具链

  1. 主要的子目录

    BaseTools/
    ├── Source/
    │   ├── C/        # 用 C 写的底层工具(如 GenFw、GenFds)
    │   ├── Python/   # Python脚本,如 build.py、TargetTool.py
    │   └── Vfr/      # 处理 VFR (Visual Form Representation) 文件
    └── Scripts/
    
  2. BaseTools相当于编译器+脚本+构建系统。EDk2中所有工程编译都依赖这个目录里的工具,在编译EDk2工程之前,首先就要执行make -C BaseTools。编译出的关键命令如:GenFwGenFdsbuildVfrCompile等。随后执行edksetup.sh,上面编译出的命令就会被添加到环境变量PATH中。

2.2 Conf--配置目录

  1. 主要的目录文件

    Conf/
    ├── target.txt     # 构建目标(最重要!)
    ├── tools_def.txt  # 定义编译器工具链
    └── build_rule.txt # 定义构建规则# 以上文件在执行 source edksetup.sh 之后自动从 BaseTools/Conf 复制到当前的 Conf/ 目录中
    
  2. Conf中最主要的文件是target.txt。它告诉编译系统使用哪个平台(.dsc),目标架构是什么,使用的编译工具链是什么,输出的目录位置等。要修改的主要参数如下:

    # 适用于本地x86_64的最小配置
    ACTIVE_PLATFORM       = OvmfPkg/OvmfPkgX64.dsc
    TARGET                = DEBUG
    TARGET_ARCH           = X64
    TOOL_CHAIN_TAG        = GCC5
    BUILD_RULE_CONF       = Conf/build_rule.txt
    
  3. 也可以build的时候设置临时参数build -a X64 -t GCC5 -p OvmfPkg/OvmfPkgX64.dsc -b DEBUG

2.3 MdePkg--基础核心包

  1. 内容

    Include/	# 各种 UEFI 接口头文件(例如 Uefi.h)
    Library/	# 各种库(如 DebugLib、BaseLib)
    Protocol/	# UEFI 协议定义
    
  2. MdePkg相当于C标准库和操作系统内核API,提供了整个EDK2架构所需的基础定义和接口。

2.4 MdeModulePkg -- 常用模块包

  1. 目录结构

    MdeModulePkg/
    ├── Application/     # 应用(比如 HelloWorld)
    ├── Library/
    ├── Universal/       # 通用驱动模块
    └── Bus/             # 各种总线类驱动
    
  2. MdeModulePkgMdePkg的基础上实现了很多实际可用的模块,比如,UEFI驱动(Driver),UEFI 应用(Application),常见的服务(如Variable服务、Boot Manager)。

2.5 OvmfPkg--OVMF固件工程目录

Open Virtual Machine Firmware Package

  1. 目录结构

    OvmfPkg/
    ├── OvmfPkgX64.dsc   # 平台描述文件
    ├── OvmfPkgX64.fdf   # 镜像布局文件
    ├── PlatformDxe/     # 平台初始化驱动
    ├── Include/
    └── Library/
    
  2. 这是用于在QEMU虚拟机上运行的完整的UEFI固件工程,支持X64、IA32平台。该虚拟平台固件实现包在编译后输出文件OVMF.fd(完整的固件镜像)和OVMF_CODE.fd / OVMF_VARS.fd分区镜像(代码和变量区分离版本)。要编译该镜像,前面我们配置了target.txtACTIVE_PLATFORM=OvmfPkg/OvmfPkgX64.dsc

总结

本文只是对EDK2工程主要文件的一个大概理解,有助于建立系统性的思考,后续深入学习中会继续补充。


寄语:每天进步一点点,践踏实地!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/952109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《程序员修炼之道:从小工到专家》读后感3

后半部分围绕“成长与协作”展开,描绘了从“合格程序员”到“专家型开发者”的进阶路径。这部分内容跳出了单纯的技术和工具层面,聚焦于职业格局、团队协作和持续成长,让我对“专家”的定义有了全新的认知:真正的专…

Vue3组件代码编写遵循1.0

优秀的Vue组件代码编写应该遵循以下标准:组件设计原则单一职责原则 (Single Responsibility Principle)每个组件只负责一个功能 保持组件的纯粹性和可复用性 避免组件过于臃肿开放封闭原则 (Open-Closed Principle)对…

《程序员修炼之道:从小工到专家》读后感2

中间部分将焦点转向“工具与方法”,为程序员提供了一套可落地的实践指南。如果说前半部分是思想层面的觉醒,这部分就是行动层面的赋能,让我学会运用科学的工具和流程,将“把事做好”的愿望转化为实实在在的能力,深…

《程序员修炼之道:从小工到专家》读后感1

前半部分聚焦“原则与态度”,为初入行业或陷入迷茫的程序员点亮了职业道路的第一盏灯。书中没有堆砌复杂的技术细节,而是从思维模式和工作习惯入手,剖析了成为优秀开发者的核心前提,让我对“程序员”的职业认知实现…

2025西南地区优质温室大棚厂家精选推荐:深度解析重庆青程技术实力!蔬菜大棚厂家推荐

在设施农业快速发展的当下,温室大棚的适配性、耐用性直接关系到种植户的生产效率与收益。为给中小种植户、家庭农场及初创农业项目提供实用参考,结合地域气候适配性、产品实用性、用户口碑等多维度,具优势的温室大棚…

通义灵码助力美图构建AI驱动研发体系,助力提升研发能效和流程智能化

美图公司是一家以 “让艺术与科技美好交汇”为使命的科技创新公司,致力于为用户提供多元化、高质量的美图产品和服务。公司拥有包括美图秀秀、美颜相机、美图设计室、美图云修等在内的多款知名应用。截至2025年6月30日…

2025修护/二硫化硒去屑/香氛/控油蓬松/ 洗发水推荐榜:MASIL 玛丝兰(悦己容)五星领跑!长效去屑 + 温和修护,3 牌凭特色突围​

随着 2025 年消费者对头皮护理的需求从 “短期去屑” 转向 “长效控油、温和修护、屏障保护”,二硫化硒去屑洗发水作为头屑问题的核心解决方案,愈发注重 “浓度科学适配、成分协同增效、场景化护理”。综合去屑长效性…

数列分块学习笔记(锣鼓梳理额粉筷入门模板)

数列分块入门1 我们预处理出每个点所在的区块,预处理每个区块的左端点和右端点。 对于添加操作,我们先判断是否在同一区间,如果是的话就在区间里面暴力重构。 如果不是,那么就对于一整块要处理的区间的左边神域和右…

2025凝汽器/换热器/空预器/板式换热器/管式换热器/空冷岛/电磁脉冲/胶球/热网加热器/低低温省煤器/清洗设备/服务推荐榜:郑州赛为机电五星领跑!在线清洗 + 定制化,3 企凭特色突围​

随着 2025 年核电、火电、化工等高能耗领域对 “清洗设备不停机运行、节能降耗、场景定制化” 需求深化,清洗设备已从 “传统离线清洗” 转向 “在线智能清洗、全工况适配”。综合技术创新性、工况适配度、服务覆盖及…

claude-ide搭建

claude-ide搭建 说明 官方:https://www.claudeide.net/zh 按照之前的搭建好Windows的node.js环境。 步骤 安装 # 安装 Node.js 18+, 然后运行: npm install -g @anthropic-ai/claude-code配置 # cmd控制台设置 set AN…

MySQL性能分析(四)之processlist详解

一、概述 进程列表表(information_schema.processlist表或SHOW PROCESSLIST命令)是MySQL的核心表之一,用于查看MySQL当前所有的连接进程,帮助管理员监控数据库活动并排查性能问题。 进程列表表是进程信息的来源之一I…

2025年5310/6479/高压合金管厂家推荐榜:天津大无缝联合钢铁五星领跑!多材质适配 + 工业攻坚,3 企凭高端 / 特种 / 大口径显优势​

随着 2025 年化工反应釜、电站锅炉、高端机械等领域对 “合金管耐高温、抗高压、耐腐蚀” 需求升级,产品逐渐从 “通用型” 转向 “场景化材质定制、极端工况适配”。综合材质多样性、性能稳定性、工业适配度及用户口…

类命名空间中“同名成员的覆盖规则”和“属性查找时的递归陷阱”

class Student:score = 100 # 类属性(与方法同名)def score(self): # 方法(与类属性同名)return self.score # 这里的score 指的是score方法吗?是不是因为score方法把类属性score覆盖了?# 访问类属性: prin…

2025年旋转接头标杆厂家最新推荐:多通路旋转接头/水用旋转接头/回转旋转接头/H型旋转接头/液压旋转接头/旭康机械,定义工程机械与工业传热领域可靠性新标准

随着工业自动化程度不断深化及设备精密性要求持续提高,作为关键基础零部件的旋转接头,其性能稳定性、密封可靠性及使用寿命已成为影响整个设备系统运行效率的核心因素。2025年,旋转接头市场在工程机械、橡塑、化工、…

mysql主从配置(保姆级) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

打开浏览器

1、打开浏览器,然后在cmd中输入adb shell dumpsys activity | findstr "mResumedActivity" 命令 根据输出内容得到浏览器包名为 com.huawei.browser 2、代码上连接上手机并打开浏览器 from airtest.core.ap…

印度实时股票数据源接口对接文档-IPO新股、k线数据

概述 StockTV 提供全面的印度股票市场数据接口,覆盖印度国家证券交易所(NSE)和孟买证券交易所(BSE)所有上市公司。支持实时行情、技术分析、公司信息、IPO数据等多种功能。 基础信息基础URL: https://api.stocktv…

尝试从源头理解 SVD 原理和计算

SVD 是怎么被“想出来”的?——从一个朴素问题出发 你有没有见过这样的公式? \[M = U \Sigma V^T \]看起来挺简洁,对吧?但当你翻开教材,发现这背后藏着一堆正交矩阵、奇异值、特征向量……瞬间头大。 我每次看到 …

2025年家用电梯厂家推荐榜:美利达电梯实力登顶

随着人口老龄化加剧、别墅及老旧小区加装电梯需求增长,家用电梯市场正迎来快速发展期。2025年家用电梯市场规模预计持续扩大,但市场增长也带来厂商技术实力、产品安全性、服务质量参差不齐的问题,家庭用户在选购时往…

流程定时任务设置参数

总结几点内容:windows命令行或者放在task schedule里执行的bat(批处理文件),应该以ANSI编码的方式进行保存。 如果bat文件里不含任务中文,则可以以UTF-8的编码格式保存,但不能带BOM。windows的命令行执行批处理文件…