是否有将EDK2移植到全新ARM64平台的详细操作指南?
ARM64 平台最小化EDK2移植(BL33+UEFI Shell)指导
最小DSC配置核心项
- 包依赖仅保留4个核心包:
MdePkg、MdeModulePkg、ArmPkg、ArmPlatformPkg,所有网络、USB、图形、SMM、安全启动相关的非必需依赖全部删除 [Defines]段必填参数:指定ARCH = AARCH64、匹配你使用的编译链的TOOL_CHAIN_TAG(如GCC5)、TARGET = RELEASE(DEBUG版冗余信息极多)、BL33_ENTRY_POINT = UefiMain[LibraryClasses]段仅保留最小库映射集:
BaseLib|ArmPkg/Library/BaseLib/BaseLib.inf BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf UefiLib|MdePkg/Library/UefiLib/UefiLib.inf ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf CacheMaintenanceLib|ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.inf MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
[Components]段仅保留Shell核心:ShellPkg/Application/Shell/Shell.inf,所有UiApp、工具类组件、第三方组件全部注释移除
最小FDF配置核心项
[FD.BL33_UEFI]段仅划分核心区域,总大小可先设为0x80000(512KB,和U-Boot常用尺寸接近),不需要可变存储、变量分区等非必需段- 仅保留三个核心模块:PEI_CORE、DXE_CORE、UEFI Shell,所有USB、网络、存储、显示类驱动全部移除,仅保留调试必需的串口驱动即可
裁剪优化注意事项
- 编译时添加
-D MINIMAL_BUILD宏,会自动禁用EDK2默认开启的冗余调试特性、额外功能开关 - 禁用所有非必需Pcd开关:
PcdSupportSmm、PcdSupportSecureBoot、PcdEnableNetwork等功能直接设为FALSE - RELEASE编译默认会strip调试符号,最终固件体积可以压缩到400KB~600KB区间,和U-Boot尺寸相当
移植步骤参考
- 复制你已经验证可用的
ArmVExpress-FVP-AArch64.dsc和对应fdf文件,重命名为你的平台专属配置文件 - 按照上述最小配置要求逐行删除无关依赖、组件、驱动
- 修改平台匹配的硬件参数Pcd:
PcdSystemMemoryBase、PcdSystemMemorySize、PcdSerialRegisterBase等和你硬件对应的参数 - 首次编译仅保留UEFI Shell,确认可以正常启动到Shell界面之后,再按需逐步添加需要的功能模块
内容的提问来源于stack exchange,提问作者bruin
相关产品推荐
相关产品推荐

