当前位置: 首页 > news >正文

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.gsyq.cn/news/36164.html

相关文章:

  • 《程序员修炼之道:从小工到专家》读后感3
  • 2025凝汽器/换热器/空预器/板式换热器/管式换热器/空冷岛/电磁脉冲/胶球/热网加热器/低低温省煤器/清洗设备/服务推荐榜:郑州赛为机电五星领跑!在线清洗 + 定制化,3 企凭特色突围​
  • 2025年旋转接头标杆厂家最新推荐:多通路旋转接头/水用旋转接头/回转旋转接头/H型旋转接头/液压旋转接头/旭康机械,定义工程机械与工业传热领域可靠性新标准
  • 打开浏览器
  • 印度实时股票数据源接口对接文档-IPO新股、k线数据
  • 2025年家用电梯厂家推荐榜:美利达电梯实力登顶
  • 流程定时任务设置参数
  • 神舟二十一号|2030年前实现中国人登陆月球的目标不动摇
  • 精益装配,智造未来:哲讯科技SAP解决方案赋能装配制造企业数字化转型
  • 2025 年氧化铝陶瓷源头厂家最新推荐排行榜:聚焦六大优质企业,助力下游企业精准选合作方氧化铝陶瓷管/氧化铝陶瓷棒/氧化铝陶瓷片公司推荐
  • Oracle ADG 日常巡检指南
  • Ansys Electro-Thermal Analysis
  • Oracle 数据库 dblink 使用全解析
  • Oracle数据库七种闪回技术详解与实践示例
  • 精密封装,“芯”系未来:哲讯科技SAP解决方案引领芯片封装产业智造升级
  • 2025年市场上卷饼机厂家排行榜:权威推荐与选择指南
  • Python文件路径 _ 文件在哪里,代码咋知道
  • 递延所得税、所得税费用执行《小企业会计准则》、《企业会计准则》
  • 关于反外挂
  • The Motor Car 2
  • 智驭增长,睿见未来:哲讯科技,以SAP Business One铸就成长型企业的数字脊梁
  • 2025 年隔音门厂家最新推荐榜,技术实力与市场口碑深度解析,精选适配多场景的优质品牌
  • ansible的硬件巡检脚本
  • 2025年vr虚拟体验馆制造企业权威推荐榜单:vr虚拟体验馆/vr体验馆设备/vr设备体验馆源头厂家精选
  • 新能源汽车焊接智能节气阀
  • 2025年单向平衡阀批发厂家权威推荐榜单:双向电磁阀/旋挖机多路阀/电磁阀线圈源头厂家精选
  • 数学求和公式c++ - miao
  • 李宏毅机器学习笔记16 - 教程
  • 无法定位程序输入点于kernel32.dll?详解原因与5种有效修复方案
  • java 比较数组数据大小