]>
Commit | Line | Data |
---|---|---|
1d5d0ae9 | 1 | Porting UEFI to a ARM platform\r |
2 | ------------------------------\r | |
3 | 1. Create the new platform directory under ArmPlatformPkg\r | |
4 | \r | |
5 | 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. \r | |
6 | \r | |
7 | 3. Set up the PCDs required by ArmPlatformPkg in your FDF or DSC files \r | |
8 | \r | |
9 | PCD Description\r | |
10 | gArmTokenSpaceGuid.PcdSecureFdBaseAddress : Base address of your Secure Firmware \r | |
11 | gArmTokenSpaceGuid.PcdSecureFdSize : Size in byte of your Secure Firmware gEmbeddedTokenSpaceGuid.\r | |
262a9b04 | 12 | gArmTokenSpaceGuid.PcdNormalFdBaseAddress : Base Address of your Non-Secure Firmware gEmbeddedTokenSpaceGuid.\r |
13 | gArmTokenSpaceGuid.PcdNormalFdSize : Size in bytes of your Non-Secure Firmware \r | |
1d5d0ae9 | 14 | gArmTokenSpaceGuid.PcdL2x0ControllerBase : Base Address of your L2x0 controller \r |
15 | gArmTokenSpaceGuid.PcdGicDistributorBase : Base address of the Distributor of your General Interrupt Controller gArmTokenSpaceGuid.\r | |
16 | PcdGicInterruptInterfaceBase : Base address of the Interface of your General Interrupt Controller gArmVExpressTokenSpaceGuid.\r | |
17 | PcdCPUCoresSecStackBase : Top of Secure Stack for Secure World gArmVExpressTokenSpaceGuid.\r | |
18 | PcdCPUCoreSecStackSize : Size of the stack for each of the 4 CPU cores gArmVExpressTokenSpaceGuid.\r | |
19 | PcdCPUCoresSecMonStackBase : Top of Stack for Monitor World gArmVExpressTokenSpaceGuid.\r | |
20 | PcdCPUCoreSecMonStackSize : Size of the stack for each of the 4 CPU cores gArmVExpressTokenSpaceGuid.\r | |
21 | PcdCPUCoresNonSecStackBase : Top of SEC Stack for Normal World gArmVExpressTokenSpaceGuid.\r | |
22 | PcdCPUCoresNonSecStackSize : Size of the stack for each of the 4 CPU Cores gArmVExpressTokenSpaceGuid.\r | |
23 | PcdPeiServicePtrAddr : Cached value of PeiServicesTable \r | |
24 | \r | |
25 | 4. Implement 'ArmPlatformLib' for your platform following the interface defined by ArmPlatformPkg\Include\Library\ArmPlatformLib.h.\r | |
26 | \r | |
27 | Functions to implement:\r | |
28 | \r | |
29 | VOID ArmPlatformIsMemoryInitialized(VOID);\r | |
30 | VOID ArmPlatformInitializeBootMemory(VOID);\r | |
31 | VOID ArmPlatformInitializeSystemMemory(VOID);\r | |
32 | VOID ArmPlatformBootRemapping(VOID);\r | |
33 | UINTN ArmPlatformTrustzoneSupported(VOID);\r | |
34 | VOID ArmPlatformTrustzoneInit(VOID);\r | |
35 | VOID ArmPlatformGetPeiMemory (\r | |
36 | OUT UINTN* PeiMemoryBase,\r | |
37 | OUT UINTN* PeiMemorySize);\r | |
38 | VOID ArmPlatformGetVirtualMemoryMap (\r | |
39 | OUT ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap);\r | |
40 | VOID ArmPlatformGetEfiMemoryMap (\r | |
41 | OUT ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR** EfiMemoryMap)\r |