• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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