1# 2# Copyright (c) 2011 - 2015, ARM Limited. All rights reserved. 3# 4# This program and the accompanying materials 5# are licensed and made available under the terms and conditions of the BSD License 6# which accompanies this distribution. The full text of the license may be found at 7# http://opensource.org/licenses/bsd-license.php 8# 9# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11# 12 13################################################################################ 14# 15# FD Section 16# The [FD] Section is made up of the definition statements and a 17# description of what goes into the Flash Device Image. Each FD section 18# defines one flash "device" image. A flash device image may be one of 19# the following: Removable media bootable image (like a boot floppy 20# image,) an Option ROM image (that would be "flashed" into an add-in 21# card,) a System "Flash" image (that would be burned into a system's 22# flash) or an Update ("Capsule") image that will be used to update and 23# existing system flash. 24# 25################################################################################ 26 27[FD.FVP_AARCH64_EFI] 28!ifdef ARM_FVP_RUN_NORFLASH 29BaseAddress = 0x08000000|gArmTokenSpaceGuid.PcdFdBaseAddress # The base address of the Firmware in Flash0. 30!else 31BaseAddress = 0x88000000|gArmTokenSpaceGuid.PcdFdBaseAddress # UEFI in DRAM + 128MB. 32!endif 33Size = 0x04000000|gArmTokenSpaceGuid.PcdFdSize # The size in bytes of the device (64MiB). 34ErasePolarity = 1 35 36# This one is tricky, it must be: BlockSize * NumBlocks = Size 37BlockSize = 0x00001000 38NumBlocks = 0x4000 39 400x00000000|0x00280000 41gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize 42FV = FVMAIN_COMPACT 43 44################################################################################ 45# 46# FV Section 47# 48# [FV] section is used to define what components or modules are placed within a flash 49# device file. This section also defines order the components and modules are positioned 50# within the image. The [FV] section consists of define statements, set statements and 51# module statements. 52# 53################################################################################ 54 55[FV.FvMain] 56BlockSize = 0x40 57NumBlocks = 0 # This FV gets compressed so make it just big enough 58FvAlignment = 16 # FV alignment and FV attributes setting. 59ERASE_POLARITY = 1 60MEMORY_MAPPED = TRUE 61STICKY_WRITE = TRUE 62LOCK_CAP = TRUE 63LOCK_STATUS = TRUE 64WRITE_DISABLED_CAP = TRUE 65WRITE_ENABLED_CAP = TRUE 66WRITE_STATUS = TRUE 67WRITE_LOCK_CAP = TRUE 68WRITE_LOCK_STATUS = TRUE 69READ_DISABLED_CAP = TRUE 70READ_ENABLED_CAP = TRUE 71READ_STATUS = TRUE 72READ_LOCK_CAP = TRUE 73READ_LOCK_STATUS = TRUE 74FvNameGuid = 87940482-fc81-41c3-87e6-399cf85ac8a0 75 76 INF MdeModulePkg/Core/Dxe/DxeMain.inf 77 INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf 78 79 # 80 # PI DXE Drivers producing Architectural Protocols (EFI Services) 81 # 82 INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf 83 INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf 84 INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf 85 INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf 86!if $(SECURE_BOOT_ENABLE) == TRUE 87 INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf 88!endif 89 INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf 90 INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf 91 INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf 92 INF EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf 93 INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf 94 INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf 95 96 INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf 97 98 # ACPI Support 99 # 100 INF MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf 101 INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf 102 INF RuleOverride=ACPITABLE OpenPlatformPkg/Platforms/ARM/VExpress/AcpiTables/AcpiTables.inf 103 104 # 105 # Multiple Console IO support 106 # 107 INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf 108 INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf 109 INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf 110 INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf 111 INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf 112 113 INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf 114 INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf 115 INF ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf 116!ifdef EDK2_ENABLE_PL111 117 INF ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf 118!endif 119 INF ArmPlatformPkg/Drivers/SP805WatchdogDxe/SP805WatchdogDxe.inf 120 121 # 122 # Semi-hosting filesystem 123 # 124 INF ArmPkg/Filesystem/SemihostFs/SemihostFs.inf 125 126 # 127 # FAT filesystem + GPT/MBR partitioning 128 # 129 INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf 130 INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf 131 INF FatBinPkg/EnhancedFatDxe/Fat.inf 132 INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf 133 134 # 135 # Multimedia Card Interface 136 # 137 INF EmbeddedPkg/Universal/MmcDxe/MmcDxe.inf 138 INF ArmPlatformPkg/Drivers/PL180MciDxe/PL180MciDxe.inf 139 140 # 141 # SMBIOS Support 142 # 143 INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf 144 145 # 146 # Platform Driver 147 # 148 INF ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf 149 INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf 150 151!ifdef EDK2_ENABLE_SMSC_91X 152!include OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress-networking.fdf.inc 153 INF OpenPlatformPkg/Drivers/Net/Lan91xDxe/Lan91xDxe.inf 154!endif 155 156 # 157 # UEFI application (Shell Embedded Boot Loader) 158 # 159 INF ShellPkg/Application/Shell/Shell.inf 160 161 # 162 # Bds 163 # 164 INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf 165 INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf 166 INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf 167 INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf 168 INF MdeModulePkg/Application/UiApp/UiApp.inf 169 170 # 171 # TianoCore logo (splash screen) 172 # 173 FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) { 174 SECTION RAW = MdeModulePkg/Logo/Logo.bmp 175 } 176 177 # FV Filesystem 178 INF MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf 179 180 # 181 # FDT installation 182 # 183 # The UEFI driver is at the end of the list of the driver to be dispatched 184 # after the device drivers (eg: Ethernet) to ensure we have support for them. 185 INF EmbeddedPkg/Drivers/FdtPlatformDxe/FdtPlatformDxe.inf 186 187!ifdef $(DTB_DIR) 188 # 189 # Embed flattened device tree (FDT) images for all known 190 # variants of this platform 191 # 192 FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV2) { 193 $(DTB_DIR)/fvp-base-gicv2-psci.dtb 194 } 195 FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV2Legacy) { 196 $(DTB_DIR)/fvp-base-gicv2legacy-psci.dtb 197 } 198 FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV3) { 199 $(DTB_DIR)/fvp-base-gicv3-psci.dtb 200 } 201 FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV2) { 202 $(DTB_DIR)/fvp-foundation-gicv2-psci.dtb 203 } 204 FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV2Legacy) { 205 $(DTB_DIR)/fvp-foundation-gicv2legacy-psci.dtb 206 } 207 FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV3) { 208 $(DTB_DIR)/fvp-foundation-gicv3-psci.dtb 209 } 210!endif 211 212[FV.FVMAIN_COMPACT] 213FvAlignment = 16 214ERASE_POLARITY = 1 215MEMORY_MAPPED = TRUE 216STICKY_WRITE = TRUE 217LOCK_CAP = TRUE 218LOCK_STATUS = TRUE 219WRITE_DISABLED_CAP = TRUE 220WRITE_ENABLED_CAP = TRUE 221WRITE_STATUS = TRUE 222WRITE_LOCK_CAP = TRUE 223WRITE_LOCK_STATUS = TRUE 224READ_DISABLED_CAP = TRUE 225READ_ENABLED_CAP = TRUE 226READ_STATUS = TRUE 227READ_LOCK_CAP = TRUE 228READ_LOCK_STATUS = TRUE 229 230!if $(EDK2_SKIP_PEICORE) == 1 231 INF ArmPlatformPkg/PrePi/PeiUniCore.inf 232!else 233 INF ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf 234 INF MdeModulePkg/Core/Pei/PeiMain.inf 235 INF ArmPlatformPkg/PlatformPei/PlatformPeim.inf 236 INF ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf 237 INF ArmPkg/Drivers/CpuPei/CpuPei.inf 238 INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf 239 INF IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf 240 INF MdeModulePkg/Universal/Variable/Pei/VariablePei.inf 241 INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf 242!endif 243 244 FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { 245 SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE { 246 SECTION FV_IMAGE = FVMAIN 247 } 248 } 249 250 251################################################################################ 252# 253# Rules are use with the [FV] section's module INF type to define 254# how an FFS file is created for a given INF file. The following Rule are the default 255# rules for the different module type. User can add the customized rules to define the 256# content of the FFS file. 257# 258################################################################################ 259 260 261############################################################################ 262# Example of a DXE_DRIVER FFS file with a Checksum encapsulation section # 263############################################################################ 264# 265#[Rule.Common.DXE_DRIVER] 266# FILE DRIVER = $(NAMED_GUID) { 267# DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex 268# COMPRESS PI_STD { 269# GUIDED { 270# PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi 271# UI STRING="$(MODULE_NAME)" Optional 272# VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) 273# } 274# } 275# } 276# 277############################################################################ 278 279[Rule.Common.SEC] 280 FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED FIXED { 281 TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi 282 } 283 284[Rule.Common.PEI_CORE] 285 FILE PEI_CORE = $(NAMED_GUID) FIXED { 286 TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi 287 UI STRING ="$(MODULE_NAME)" Optional 288 } 289 290[Rule.Common.PEIM] 291 FILE PEIM = $(NAMED_GUID) FIXED { 292 PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex 293 TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi 294 UI STRING="$(MODULE_NAME)" Optional 295 } 296 297[Rule.Common.PEIM.TIANOCOMPRESSED] 298 FILE PEIM = $(NAMED_GUID) DEBUG_MYTOOLS_IA32 { 299 PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex 300 GUIDED A31280AD-481E-41B6-95E8-127F4C984779 PROCESSING_REQUIRED = TRUE { 301 PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi 302 UI STRING="$(MODULE_NAME)" Optional 303 } 304 } 305 306[Rule.Common.DXE_CORE] 307 FILE DXE_CORE = $(NAMED_GUID) { 308 PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi 309 UI STRING="$(MODULE_NAME)" Optional 310 } 311 312[Rule.Common.UEFI_DRIVER] 313 FILE DRIVER = $(NAMED_GUID) { 314 DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex 315 PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi 316 UI STRING="$(MODULE_NAME)" Optional 317 } 318 319[Rule.Common.DXE_DRIVER] 320 FILE DRIVER = $(NAMED_GUID) { 321 DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex 322 PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi 323 UI STRING="$(MODULE_NAME)" Optional 324 } 325 326[Rule.Common.DXE_RUNTIME_DRIVER] 327 FILE DRIVER = $(NAMED_GUID) { 328 DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex 329 PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi 330 UI STRING="$(MODULE_NAME)" Optional 331 } 332 333[Rule.Common.UEFI_APPLICATION] 334 FILE APPLICATION = $(NAMED_GUID) { 335 UI STRING ="$(MODULE_NAME)" Optional 336 PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi 337 } 338 339[Rule.Common.UEFI_DRIVER.BINARY] 340 FILE DRIVER = $(NAMED_GUID) { 341 DXE_DEPEX DXE_DEPEX Optional |.depex 342 PE32 PE32 |.efi 343 UI STRING="$(MODULE_NAME)" Optional 344 VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) 345 } 346 347[Rule.Common.UEFI_APPLICATION.BINARY] 348 FILE APPLICATION = $(NAMED_GUID) { 349 PE32 PE32 |.efi 350 UI STRING="$(MODULE_NAME)" Optional 351 VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) 352 } 353 354[Rule.Common.USER_DEFINED.ACPITABLE] 355 FILE FREEFORM = $(NAMED_GUID) { 356 RAW ACPI |.acpi 357 RAW ASL |.aml 358 } 359