There are still ARM/AArch64 Linux kernels that do not support EFI Stub. By using the EFI Linux loader as the default option we can boot any Linux kernel from UEFI as Linux kernel with EFI stub can also be booted with the legacy way. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <Olivier.Martin@arm.com> Reviewed-by: Ronald Cron <Ronald.Cron@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17975 6f19259b-4bc3-4df7-8a09-765794883524
296 lines
12 KiB
Plaintext
296 lines
12 KiB
Plaintext
#
|
|
# Copyright (c) 2011-2015, ARM Limited. All rights reserved.
|
|
#
|
|
# This program and the accompanying materials
|
|
# are licensed and made available under the terms and conditions of the BSD License
|
|
# which accompanies this distribution. The full text of the license may be found at
|
|
# http://opensource.org/licenses/bsd-license.php
|
|
#
|
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
#
|
|
#
|
|
|
|
################################################################################
|
|
#
|
|
# Defines Section - statements that will be processed to create a Makefile.
|
|
#
|
|
################################################################################
|
|
[Defines]
|
|
PLATFORM_NAME = ArmVExpressPkg-RTSM-A15
|
|
PLATFORM_GUID = 1665b5b1-529d-4ba1-bd51-c3c9b29a2274
|
|
PLATFORM_VERSION = 0.1
|
|
DSC_SPECIFICATION = 0x00010005
|
|
OUTPUT_DIRECTORY = Build/ArmVExpress-RTSM-A15
|
|
SUPPORTED_ARCHITECTURES = ARM
|
|
BUILD_TARGETS = DEBUG|RELEASE
|
|
SKUID_IDENTIFIER = DEFAULT
|
|
FLASH_DEFINITION = ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15.fdf
|
|
|
|
!include ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
|
|
|
|
[LibraryClasses.common]
|
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.inf
|
|
ArmCpuLib|ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.inf
|
|
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
|
|
|
|
ArmPlatformSysConfigLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf
|
|
NorFlashPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf
|
|
LcdPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf
|
|
|
|
#DebugAgentTimerLib|ArmPlatformPkg/ArmVExpressPkg/Library/DebugAgentTimerLib/DebugAgentTimerLib.inf
|
|
|
|
TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
|
|
|
|
# Virtio Support
|
|
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
|
|
VirtioMmioDeviceLib|OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf
|
|
|
|
[LibraryClasses.common.SEC]
|
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
|
|
ArmPlatformSecLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibRTSM/ArmVExpressSecLib.inf
|
|
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf
|
|
|
|
[LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, LibraryClasses.common.DXE_RUNTIME_DRIVER, LibraryClasses.common.DXE_DRIVER]
|
|
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
|
|
|
[BuildOptions]
|
|
RVCT:*_*_ARM_PLATFORM_FLAGS == --cpu Cortex-A15 -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
|
|
|
|
GCC:*_*_ARM_PLATFORM_FLAGS == -mcpu=cortex-a15 -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
|
|
|
|
XCODE:*_*_ARM_PLATFORM_FLAGS = -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM
|
|
|
|
################################################################################
|
|
#
|
|
# Pcd Section - list of all EDK II PCD Entries defined by this Platform
|
|
#
|
|
################################################################################
|
|
|
|
[PcdsFeatureFlag.common]
|
|
!ifdef EDK2_SKIP_PEICORE
|
|
gArmPlatformTokenSpaceGuid.PcdSystemMemoryInitializeInSec|TRUE
|
|
gArmPlatformTokenSpaceGuid.PcdSendSgiToBringUpSecondaryCores|TRUE
|
|
!endif
|
|
|
|
## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe.
|
|
# It could be set FALSE to save size.
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
|
|
|
|
[PcdsFixedAtBuild.common]
|
|
gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"ARM Versatile Express"
|
|
gEmbeddedTokenSpaceGuid.PcdEmbeddedPrompt|"ArmVExpress-RTSM"
|
|
|
|
#
|
|
# NV Storage PCDs. Use base of 0x0C000000 for NOR1
|
|
#
|
|
!if $(EDK2_ARMVE_SUPPORT_QEMU) == 1
|
|
# QEMU only models a single flash block size, so use larger blocks
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0FF00000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00040000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0FF40000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00040000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0FF80000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00040000
|
|
!else
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0FFC0000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00010000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x0FFD0000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00010000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x0FFE0000
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00010000
|
|
!endif
|
|
|
|
gArmTokenSpaceGuid.PcdVFPEnabled|1
|
|
|
|
# Stacks for MPCores in Secure World
|
|
gArmPlatformTokenSpaceGuid.PcdCPUCoresSecStackBase|0x2E009000
|
|
gArmPlatformTokenSpaceGuid.PcdCPUCoreSecPrimaryStackSize|0x1000
|
|
|
|
# Stacks for MPCores in Monitor Mode
|
|
gArmPlatformTokenSpaceGuid.PcdCPUCoresSecMonStackBase|0x2E008000
|
|
gArmPlatformTokenSpaceGuid.PcdCPUCoreSecMonStackSize|0x100
|
|
|
|
# Stacks for MPCores in Normal World
|
|
gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0x2E000000
|
|
gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x4000
|
|
|
|
# System Memory (1GB)
|
|
gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
|
|
gArmTokenSpaceGuid.PcdSystemMemorySize|0x40000000
|
|
|
|
# Size of the region used by UEFI in permanent memory (Reserved 64MB)
|
|
gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
|
|
|
|
#
|
|
# ARM Pcds
|
|
#
|
|
gArmTokenSpaceGuid.PcdArmUncachedMemoryMask|0x0000000040000000
|
|
|
|
#
|
|
# ARM PrimeCell
|
|
#
|
|
|
|
## SP805 Watchdog - Motherboard Watchdog
|
|
gArmPlatformTokenSpaceGuid.PcdSP805WatchdogBase|0x1C0F0000
|
|
|
|
## PL011 - Serial Terminal
|
|
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x1c090000
|
|
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|38400
|
|
|
|
## PL031 RealTimeClock
|
|
gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
|
|
|
|
## PL111 Versatile Express Motherboard controller
|
|
gArmPlatformTokenSpaceGuid.PcdPL111LcdBase|0x1C1F0000
|
|
|
|
## PL180 MMC/SD card controller
|
|
gArmPlatformTokenSpaceGuid.PcdPL180SysMciRegAddress|0x1C010048
|
|
gArmPlatformTokenSpaceGuid.PcdPL180MciBaseAddress|0x1C050000
|
|
|
|
#
|
|
# ARM General Interrupt Controller
|
|
#
|
|
gArmTokenSpaceGuid.PcdGicDistributorBase|0x2C001000
|
|
gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x2C002000
|
|
|
|
#
|
|
# ARM OS Loader
|
|
#
|
|
gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|L"SemiHosting"
|
|
gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|L"Fv(9CA4F58C-341E-4F42-B37D-6042FCDDB5BF)/LinuxLoader.efi"
|
|
gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|L"VenHw(C5B9C74A-6D72-4719-99AB-C59F199091EB)/Image -c \"console=ttyAMA0,38400 earlyprintk debug verbose\""
|
|
|
|
# Use the serial console (ConIn & ConOut) and the Graphic driver (ConOut)
|
|
gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenPcAnsi();VenHw(407B4008-BF5B-11DF-9547-CF16E0D72085)"
|
|
gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenPcAnsi()"
|
|
|
|
#
|
|
# ARM Architectural Timer Frequency
|
|
#
|
|
gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|100000000
|
|
|
|
[PcdsDynamicDefault.common]
|
|
#
|
|
# The size of a dynamic PCD of the (VOID*) type can not be increased at run
|
|
# time from its size at build time. Set the "PcdFdtDevicePaths" PCD to a 128
|
|
# character "empty" string, to allow to be able to set FDT text device paths
|
|
# up to 128 characters long.
|
|
#
|
|
gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L" "
|
|
|
|
################################################################################
|
|
#
|
|
# Components Section - list of all EDK II Modules needed by this Platform
|
|
#
|
|
################################################################################
|
|
[Components.common]
|
|
|
|
#
|
|
# SEC
|
|
#
|
|
ArmPlatformPkg/Sec/Sec.inf {
|
|
<LibraryClasses>
|
|
# Use the implementation which set the Secure bits
|
|
ArmGicLib|ArmPkg/Drivers/ArmGic/ArmGicSecLib.inf
|
|
}
|
|
|
|
#
|
|
# PEI Phase modules
|
|
#
|
|
!ifdef EDK2_SKIP_PEICORE
|
|
ArmPlatformPkg/PrePi/PeiUniCore.inf {
|
|
<LibraryClasses>
|
|
ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.inf
|
|
ArmPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf
|
|
ArmPlatformGlobalVariableLib|ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/PrePi/PrePiArmPlatformGlobalVariableLib.inf
|
|
}
|
|
!else
|
|
ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf {
|
|
<LibraryClasses>
|
|
ArmPlatformGlobalVariableLib|ArmPlatformPkg/Library/ArmPlatformGlobalVariableLib/Pei/PeiArmPlatformGlobalVariableLib.inf
|
|
}
|
|
MdeModulePkg/Core/Pei/PeiMain.inf
|
|
MdeModulePkg/Universal/PCD/Pei/Pcd.inf {
|
|
<LibraryClasses>
|
|
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
|
}
|
|
ArmPlatformPkg/PlatformPei/PlatformPeim.inf
|
|
ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf
|
|
ArmPkg/Drivers/CpuPei/CpuPei.inf
|
|
IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
|
|
Nt32Pkg/BootModePei/BootModePei.inf
|
|
MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
|
|
MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf {
|
|
<LibraryClasses>
|
|
NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
|
|
}
|
|
!endif
|
|
|
|
#
|
|
# DXE
|
|
#
|
|
MdeModulePkg/Core/Dxe/DxeMain.inf {
|
|
<LibraryClasses>
|
|
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
|
NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
|
|
}
|
|
|
|
#
|
|
# Architectural Protocols
|
|
#
|
|
ArmPkg/Drivers/CpuDxe/CpuDxe.inf
|
|
MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
|
MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
|
MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
|
|
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
|
|
MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
|
MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
|
|
EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
|
|
EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
|
|
EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
|
|
|
|
MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
|
|
MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
|
|
MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
|
|
MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
|
|
EmbeddedPkg/SerialDxe/SerialDxe.inf
|
|
|
|
MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
|
|
|
|
ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
|
|
ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.inf
|
|
ArmPkg/Drivers/TimerDxe/TimerDxe.inf
|
|
ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111LcdGraphicsOutputDxe.inf
|
|
ArmPlatformPkg/Drivers/SP805WatchdogDxe/SP805WatchdogDxe.inf
|
|
|
|
#
|
|
# Semi-hosting filesystem
|
|
#
|
|
ArmPkg/Filesystem/SemihostFs/SemihostFs.inf
|
|
|
|
#
|
|
# Multimedia Card Interface
|
|
#
|
|
EmbeddedPkg/Universal/MmcDxe/MmcDxe.inf
|
|
ArmPlatformPkg/Drivers/PL180MciDxe/PL180MciDxe.inf
|
|
|
|
#
|
|
# Platform Driver
|
|
#
|
|
ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf
|
|
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
|
|
|
#
|
|
# FAT filesystem + GPT/MBR partitioning
|
|
#
|
|
MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
|
|
MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
|
|
MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
|
|
|
|
#
|
|
# Bds
|
|
#
|
|
MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
|
|
ArmPlatformPkg/Bds/Bds.inf
|