audk/ArmPlatformPkg/Documentation/ArmPlatformPkg.txt

42 lines
2.6 KiB
Plaintext

Porting UEFI to a ARM platform
------------------------------
1. Create the new platform directory under ArmPlatformPkg
2. Create its DSC and FDF files into this new directory. These files can be copied from ArmVExpress-CTA9x4.dsc and ArmVExpress-CTA9x4.fdf; and adapted following the requirement of your platform.
3. Set up the PCDs required by ArmPlatformPkg in your FDF or DSC files
PCD Description
gArmTokenSpaceGuid.PcdSecureFdBaseAddress : Base address of your Secure Firmware
gArmTokenSpaceGuid.PcdSecureFdSize : Size in byte of your Secure Firmware gEmbeddedTokenSpaceGuid.
gArmTokenSpaceGuid.PcdNormalFdBaseAddress : Base Address of your Non-Secure Firmware gEmbeddedTokenSpaceGuid.
gArmTokenSpaceGuid.PcdNormalFdSize : Size in bytes of your Non-Secure Firmware
gArmTokenSpaceGuid.PcdL2x0ControllerBase : Base Address of your L2x0 controller
gArmTokenSpaceGuid.PcdGicDistributorBase : Base address of the Distributor of your General Interrupt Controller gArmTokenSpaceGuid.
PcdGicInterruptInterfaceBase : Base address of the Interface of your General Interrupt Controller gArmVExpressTokenSpaceGuid.
PcdCPUCoresSecStackBase : Top of Secure Stack for Secure World gArmVExpressTokenSpaceGuid.
PcdCPUCoreSecStackSize : Size of the stack for each of the 4 CPU cores gArmVExpressTokenSpaceGuid.
PcdCPUCoresSecMonStackBase : Top of Stack for Monitor World gArmVExpressTokenSpaceGuid.
PcdCPUCoreSecMonStackSize : Size of the stack for each of the 4 CPU cores gArmVExpressTokenSpaceGuid.
PcdCPUCoresNonSecStackBase : Top of SEC Stack for Normal World gArmVExpressTokenSpaceGuid.
PcdCPUCoresNonSecStackSize : Size of the stack for each of the 4 CPU Cores gArmVExpressTokenSpaceGuid.
PcdPeiServicePtrAddr : Cached value of PeiServicesTable
4. Implement 'ArmPlatformLib' for your platform following the interface defined by ArmPlatformPkg\Include\Library\ArmPlatformLib.h.
Functions to implement:
VOID ArmPlatformIsMemoryInitialized(VOID);
VOID ArmPlatformInitializeBootMemory(VOID);
VOID ArmPlatformInitializeSystemMemory(VOID);
VOID ArmPlatformBootRemapping(VOID);
UINTN ArmPlatformTrustzoneSupported(VOID);
VOID ArmPlatformTrustzoneInit(VOID);
VOID ArmPlatformGetPeiMemory (
OUT UINTN* PeiMemoryBase,
OUT UINTN* PeiMemorySize);
VOID ArmPlatformGetVirtualMemoryMap (
OUT ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap);
VOID ArmPlatformGetEfiMemoryMap (
OUT ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR** EfiMemoryMap)