1*91f16700SchasingluluArm Fixed Virtual Platforms (FVP) 2*91f16700Schasinglulu================================= 3*91f16700Schasinglulu 4*91f16700SchasingluluFixed Virtual Platform (FVP) Support 5*91f16700Schasinglulu------------------------------------ 6*91f16700Schasinglulu 7*91f16700SchasingluluThis section lists the supported Arm |FVP| platforms. Please refer to the FVP 8*91f16700Schasingluludocumentation for a detailed description of the model parameter options. 9*91f16700Schasinglulu 10*91f16700SchasingluluThe latest version of the AArch64 build of TF-A has been tested on the following 11*91f16700SchasingluluArm FVPs without shifted affinities, and that do not support threaded CPU cores 12*91f16700Schasinglulu(64-bit host machine only). 13*91f16700Schasinglulu 14*91f16700Schasinglulu.. note:: 15*91f16700Schasinglulu The FVP models used are Version 11.22 Build 14, unless otherwise stated. 16*91f16700Schasinglulu 17*91f16700Schasinglulu- ``Foundation_Platform`` 18*91f16700Schasinglulu- ``FVP_Base_AEMv8A-AEMv8A-AEMv8A-AEMv8A-CCN502`` (Version 11.17/21) 19*91f16700Schasinglulu- ``FVP_Base_AEMv8A-GIC600AE`` (Version 11.17/21) 20*91f16700Schasinglulu- ``FVP_Base_AEMvA`` 21*91f16700Schasinglulu- ``FVP_Base_AEMvA-AEMvA`` 22*91f16700Schasinglulu- ``FVP_Base_Cortex-A32x4`` (Version 11.12/38) 23*91f16700Schasinglulu- ``FVP_Base_Cortex-A35x4`` 24*91f16700Schasinglulu- ``FVP_Base_Cortex-A53x4`` 25*91f16700Schasinglulu- ``FVP_Base_Cortex-A55`` 26*91f16700Schasinglulu- ``FVP_Base_Cortex-A55x4+Cortex-A75x4`` 27*91f16700Schasinglulu- ``FVP_Base_Cortex-A55x4+Cortex-A76x2`` 28*91f16700Schasinglulu- ``FVP_Base_Cortex-A57x1-A53x1`` 29*91f16700Schasinglulu- ``FVP_Base_Cortex-A57x2-A53x4`` 30*91f16700Schasinglulu- ``FVP_Base_Cortex-A57x4`` 31*91f16700Schasinglulu- ``FVP_Base_Cortex-A57x4-A53x4`` 32*91f16700Schasinglulu- ``FVP_Base_Cortex-A65`` 33*91f16700Schasinglulu- ``FVP_Base_Cortex-A65AE`` 34*91f16700Schasinglulu- ``FVP_Base_Cortex-A710x4`` (Version 11.17/21) 35*91f16700Schasinglulu- ``FVP_Base_Cortex-A72x4`` 36*91f16700Schasinglulu- ``FVP_Base_Cortex-A72x4-A53x4`` 37*91f16700Schasinglulu- ``FVP_Base_Cortex-A73x4`` 38*91f16700Schasinglulu- ``FVP_Base_Cortex-A73x4-A53x4`` 39*91f16700Schasinglulu- ``FVP_Base_Cortex-A75`` 40*91f16700Schasinglulu- ``FVP_Base_Cortex-A76`` 41*91f16700Schasinglulu- ``FVP_Base_Cortex-A76AE`` 42*91f16700Schasinglulu- ``FVP_Base_Cortex-A77`` 43*91f16700Schasinglulu- ``FVP_Base_Cortex-A78`` 44*91f16700Schasinglulu- ``FVP_Base_Cortex-A78AE`` 45*91f16700Schasinglulu- ``FVP_Base_Cortex-A78C`` 46*91f16700Schasinglulu- ``FVP_Base_Cortex-X2x4`` (Version 11.17/21) 47*91f16700Schasinglulu- ``FVP_Base_Neoverse-E1`` 48*91f16700Schasinglulu- ``FVP_Base_Neoverse-N1`` 49*91f16700Schasinglulu- ``FVP_Base_Neoverse-V1`` 50*91f16700Schasinglulu- ``FVP_Base_RevC-2xAEMvA`` 51*91f16700Schasinglulu- ``FVP_BaseR_AEMv8R`` 52*91f16700Schasinglulu- ``FVP_Morello`` (Version 0.11/33) 53*91f16700Schasinglulu- ``FVP_RD_V1`` 54*91f16700Schasinglulu- ``FVP_TC1`` 55*91f16700Schasinglulu- ``FVP_TC2`` (Version 11.20/24) 56*91f16700Schasinglulu 57*91f16700SchasingluluThe latest version of the AArch32 build of TF-A has been tested on the 58*91f16700Schasinglulufollowing Arm FVPs without shifted affinities, and that do not support threaded 59*91f16700SchasingluluCPU cores (64-bit host machine only). 60*91f16700Schasinglulu 61*91f16700Schasinglulu- ``FVP_Base_AEMvA`` 62*91f16700Schasinglulu- ``FVP_Base_AEMvA-AEMvA`` 63*91f16700Schasinglulu- ``FVP_Base_Cortex-A32x4`` 64*91f16700Schasinglulu 65*91f16700Schasinglulu.. note:: 66*91f16700Schasinglulu The ``FVP_Base_RevC-2xAEMvA`` FVP only supports shifted affinities, which 67*91f16700Schasinglulu is not compatible with legacy GIC configurations. Therefore this FVP does not 68*91f16700Schasinglulu support these legacy GIC configurations. 69*91f16700Schasinglulu 70*91f16700SchasingluluThe *Foundation* and *Base* FVPs can be downloaded free of charge. See the `Arm 71*91f16700SchasingluluFVP website`_. The Cortex-A models listed above are also available to download 72*91f16700Schasinglulufrom `Arm's website`_. 73*91f16700Schasinglulu 74*91f16700Schasinglulu.. note:: 75*91f16700Schasinglulu The build numbers quoted above are those reported by launching the FVP 76*91f16700Schasinglulu with the ``--version`` parameter. 77*91f16700Schasinglulu 78*91f16700Schasinglulu.. note:: 79*91f16700Schasinglulu Linaro provides a ramdisk image in prebuilt FVP configurations and full 80*91f16700Schasinglulu file systems that can be downloaded separately. To run an FVP with a virtio 81*91f16700Schasinglulu file system image an additional FVP configuration option 82*91f16700Schasinglulu ``-C bp.virtioblockdevice.image_path="<path-to>/<file-system-image>`` can be 83*91f16700Schasinglulu used. 84*91f16700Schasinglulu 85*91f16700Schasinglulu.. note:: 86*91f16700Schasinglulu The software will not work on Version 1.0 of the Foundation FVP. 87*91f16700Schasinglulu The commands below would report an ``unhandled argument`` error in this case. 88*91f16700Schasinglulu 89*91f16700Schasinglulu.. note:: 90*91f16700Schasinglulu FVPs can be launched with ``--cadi-server`` option such that a 91*91f16700Schasinglulu CADI-compliant debugger (for example, Arm DS-5) can connect to and control 92*91f16700Schasinglulu its execution. 93*91f16700Schasinglulu 94*91f16700Schasinglulu.. warning:: 95*91f16700Schasinglulu Since FVP model Version 11.0 Build 11.0.34 and Version 8.5 Build 0.8.5202 96*91f16700Schasinglulu the internal synchronisation timings changed compared to older versions of 97*91f16700Schasinglulu the models. The models can be launched with ``-Q 100`` option if they are 98*91f16700Schasinglulu required to match the run time characteristics of the older versions. 99*91f16700Schasinglulu 100*91f16700SchasingluluAll the above platforms have been tested with `Linaro Release 20.01`_. 101*91f16700Schasinglulu 102*91f16700Schasinglulu.. _build_options_arm_fvp_platform: 103*91f16700Schasinglulu 104*91f16700SchasingluluArm FVP Platform Specific Build Options 105*91f16700Schasinglulu--------------------------------------- 106*91f16700Schasinglulu 107*91f16700Schasinglulu- ``FVP_CLUSTER_COUNT`` : Configures the cluster count to be used to 108*91f16700Schasinglulu build the topology tree within TF-A. By default TF-A is configured for dual 109*91f16700Schasinglulu cluster topology and this option can be used to override the default value. 110*91f16700Schasinglulu 111*91f16700Schasinglulu- ``FVP_INTERCONNECT_DRIVER``: Selects the interconnect driver to be built. The 112*91f16700Schasinglulu default interconnect driver depends on the value of ``FVP_CLUSTER_COUNT`` as 113*91f16700Schasinglulu explained in the options below: 114*91f16700Schasinglulu 115*91f16700Schasinglulu - ``FVP_CCI`` : The CCI driver is selected. This is the default 116*91f16700Schasinglulu if 0 < ``FVP_CLUSTER_COUNT`` <= 2. 117*91f16700Schasinglulu - ``FVP_CCN`` : The CCN driver is selected. This is the default 118*91f16700Schasinglulu if ``FVP_CLUSTER_COUNT`` > 2. 119*91f16700Schasinglulu 120*91f16700Schasinglulu- ``FVP_MAX_CPUS_PER_CLUSTER``: Sets the maximum number of CPUs implemented in 121*91f16700Schasinglulu a single cluster. This option defaults to 4. 122*91f16700Schasinglulu 123*91f16700Schasinglulu- ``FVP_MAX_PE_PER_CPU``: Sets the maximum number of PEs implemented on any CPU 124*91f16700Schasinglulu in the system. This option defaults to 1. Note that the build option 125*91f16700Schasinglulu ``ARM_PLAT_MT`` doesn't have any effect on FVP platforms. 126*91f16700Schasinglulu 127*91f16700Schasinglulu- ``FVP_USE_GIC_DRIVER`` : Selects the GIC driver to be built. Options: 128*91f16700Schasinglulu 129*91f16700Schasinglulu - ``FVP_GICV2`` : The GICv2 only driver is selected 130*91f16700Schasinglulu - ``FVP_GICV3`` : The GICv3 only driver is selected (default option) 131*91f16700Schasinglulu 132*91f16700Schasinglulu- ``FVP_HW_CONFIG_DTS`` : Specify the path to the DTS file to be compiled 133*91f16700Schasinglulu to DTB and packaged in FIP as the HW_CONFIG. See :ref:`Firmware Design` for 134*91f16700Schasinglulu details on HW_CONFIG. By default, this is initialized to a sensible DTS 135*91f16700Schasinglulu file in ``fdts/`` folder depending on other build options. But some cases, 136*91f16700Schasinglulu like shifted affinity format for MPIDR, cannot be detected at build time 137*91f16700Schasinglulu and this option is needed to specify the appropriate DTS file. 138*91f16700Schasinglulu 139*91f16700Schasinglulu- ``FVP_HW_CONFIG`` : Specify the path to the HW_CONFIG blob to be packaged in 140*91f16700Schasinglulu FIP. See :ref:`Firmware Design` for details on HW_CONFIG. This option is 141*91f16700Schasinglulu similar to the ``FVP_HW_CONFIG_DTS`` option, but it directly specifies the 142*91f16700Schasinglulu HW_CONFIG blob instead of the DTS file. This option is useful to override 143*91f16700Schasinglulu the default HW_CONFIG selected by the build system. 144*91f16700Schasinglulu 145*91f16700Schasinglulu- ``FVP_GICR_REGION_PROTECTION``: Mark the redistributor pages of 146*91f16700Schasinglulu inactive/fused CPU cores as read-only. The default value of this option 147*91f16700Schasinglulu is ``0``, which means the redistributor pages of all CPU cores are marked 148*91f16700Schasinglulu as read and write. 149*91f16700Schasinglulu 150*91f16700SchasingluluBooting Firmware Update images 151*91f16700Schasinglulu------------------------------ 152*91f16700Schasinglulu 153*91f16700SchasingluluWhen Firmware Update (FWU) is enabled there are at least 2 new images 154*91f16700Schasingluluthat have to be loaded, the Non-Secure FWU ROM (NS-BL1U), and the 155*91f16700SchasingluluFWU FIP. 156*91f16700Schasinglulu 157*91f16700SchasingluluThe additional fip images must be loaded with: 158*91f16700Schasinglulu 159*91f16700Schasinglulu:: 160*91f16700Schasinglulu 161*91f16700Schasinglulu --data cluster0.cpu0="<path_to>/ns_bl1u.bin"@0x0beb8000 [ns_bl1u_base_address] 162*91f16700Schasinglulu --data cluster0.cpu0="<path_to>/fwu_fip.bin"@0x08400000 [ns_bl2u_base_address] 163*91f16700Schasinglulu 164*91f16700SchasingluluThe address ns_bl1u_base_address is the value of NS_BL1U_BASE. 165*91f16700SchasingluluIn the same way, the address ns_bl2u_base_address is the value of 166*91f16700SchasingluluNS_BL2U_BASE. 167*91f16700Schasinglulu 168*91f16700SchasingluluBooting an EL3 payload 169*91f16700Schasinglulu---------------------- 170*91f16700Schasinglulu 171*91f16700SchasingluluThe EL3 payloads boot flow requires the CPU's mailbox to be cleared at reset for 172*91f16700Schasingluluthe secondary CPUs holding pen to work properly. Unfortunately, its reset value 173*91f16700Schasingluluis undefined on the FVP platform and the FVP platform code doesn't clear it. 174*91f16700SchasingluluTherefore, one must modify the way the model is normally invoked in order to 175*91f16700Schasingluluclear the mailbox at start-up. 176*91f16700Schasinglulu 177*91f16700SchasingluluOne way to do that is to create an 8-byte file containing all zero bytes using 178*91f16700Schasingluluthe following command: 179*91f16700Schasinglulu 180*91f16700Schasinglulu.. code:: shell 181*91f16700Schasinglulu 182*91f16700Schasinglulu dd if=/dev/zero of=mailbox.dat bs=1 count=8 183*91f16700Schasinglulu 184*91f16700Schasingluluand pre-load it into the FVP memory at the mailbox address (i.e. ``0x04000000``) 185*91f16700Schasingluluusing the following model parameters: 186*91f16700Schasinglulu 187*91f16700Schasinglulu:: 188*91f16700Schasinglulu 189*91f16700Schasinglulu --data cluster0.cpu0=mailbox.dat@0x04000000 [Base FVPs] 190*91f16700Schasinglulu --data=mailbox.dat@0x04000000 [Foundation FVP] 191*91f16700Schasinglulu 192*91f16700SchasingluluTo provide the model with the EL3 payload image, the following methods may be 193*91f16700Schasingluluused: 194*91f16700Schasinglulu 195*91f16700Schasinglulu#. If the EL3 payload is able to execute in place, it may be programmed into 196*91f16700Schasinglulu flash memory. On Base Cortex and AEM FVPs, the following model parameter 197*91f16700Schasinglulu loads it at the base address of the NOR FLASH1 (the NOR FLASH0 is already 198*91f16700Schasinglulu used for the FIP): 199*91f16700Schasinglulu 200*91f16700Schasinglulu :: 201*91f16700Schasinglulu 202*91f16700Schasinglulu -C bp.flashloader1.fname="<path-to>/<el3-payload>" 203*91f16700Schasinglulu 204*91f16700Schasinglulu On Foundation FVP, there is no flash loader component and the EL3 payload 205*91f16700Schasinglulu may be programmed anywhere in flash using method 3 below. 206*91f16700Schasinglulu 207*91f16700Schasinglulu#. When using the ``SPIN_ON_BL1_EXIT=1`` loading method, the following DS-5 208*91f16700Schasinglulu command may be used to load the EL3 payload ELF image over JTAG: 209*91f16700Schasinglulu 210*91f16700Schasinglulu :: 211*91f16700Schasinglulu 212*91f16700Schasinglulu load <path-to>/el3-payload.elf 213*91f16700Schasinglulu 214*91f16700Schasinglulu#. The EL3 payload may be pre-loaded in volatile memory using the following 215*91f16700Schasinglulu model parameters: 216*91f16700Schasinglulu 217*91f16700Schasinglulu :: 218*91f16700Schasinglulu 219*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/el3-payload>"@address [Base FVPs] 220*91f16700Schasinglulu --data="<path-to>/<el3-payload>"@address [Foundation FVP] 221*91f16700Schasinglulu 222*91f16700Schasinglulu The address provided to the FVP must match the ``EL3_PAYLOAD_BASE`` address 223*91f16700Schasinglulu used when building TF-A. 224*91f16700Schasinglulu 225*91f16700SchasingluluBooting a preloaded kernel image (Base FVP) 226*91f16700Schasinglulu------------------------------------------- 227*91f16700Schasinglulu 228*91f16700SchasingluluThe following example uses a simplified boot flow by directly jumping from the 229*91f16700SchasingluluTF-A to the Linux kernel, which will use a ramdisk as filesystem. This can be 230*91f16700Schasingluluuseful if both the kernel and the device tree blob (DTB) are already present in 231*91f16700Schasinglulumemory (like in FVP). 232*91f16700Schasinglulu 233*91f16700SchasingluluFor example, if the kernel is loaded at ``0x80080000`` and the DTB is loaded at 234*91f16700Schasingluluaddress ``0x82000000``, the firmware can be built like this: 235*91f16700Schasinglulu 236*91f16700Schasinglulu.. code:: shell 237*91f16700Schasinglulu 238*91f16700Schasinglulu CROSS_COMPILE=aarch64-none-elf- \ 239*91f16700Schasinglulu make PLAT=fvp DEBUG=1 \ 240*91f16700Schasinglulu RESET_TO_BL31=1 \ 241*91f16700Schasinglulu ARM_LINUX_KERNEL_AS_BL33=1 \ 242*91f16700Schasinglulu PRELOADED_BL33_BASE=0x80080000 \ 243*91f16700Schasinglulu ARM_PRELOADED_DTB_BASE=0x82000000 \ 244*91f16700Schasinglulu all fip 245*91f16700Schasinglulu 246*91f16700SchasingluluNow, it is needed to modify the DTB so that the kernel knows the address of the 247*91f16700Schasingluluramdisk. The following script generates a patched DTB from the provided one, 248*91f16700Schasingluluassuming that the ramdisk is loaded at address ``0x84000000``. Note that this 249*91f16700Schasingluluscript assumes that the user is using a ramdisk image prepared for U-Boot, like 250*91f16700Schasingluluthe ones provided by Linaro. If using a ramdisk without this header,the ``0x40`` 251*91f16700Schasingluluoffset in ``INITRD_START`` has to be removed. 252*91f16700Schasinglulu 253*91f16700Schasinglulu.. code:: bash 254*91f16700Schasinglulu 255*91f16700Schasinglulu #!/bin/bash 256*91f16700Schasinglulu 257*91f16700Schasinglulu # Path to the input DTB 258*91f16700Schasinglulu KERNEL_DTB=<path-to>/<fdt> 259*91f16700Schasinglulu # Path to the output DTB 260*91f16700Schasinglulu PATCHED_KERNEL_DTB=<path-to>/<patched-fdt> 261*91f16700Schasinglulu # Base address of the ramdisk 262*91f16700Schasinglulu INITRD_BASE=0x84000000 263*91f16700Schasinglulu # Path to the ramdisk 264*91f16700Schasinglulu INITRD=<path-to>/<ramdisk.img> 265*91f16700Schasinglulu 266*91f16700Schasinglulu # Skip uboot header (64 bytes) 267*91f16700Schasinglulu INITRD_START=$(printf "0x%x" $((${INITRD_BASE} + 0x40)) ) 268*91f16700Schasinglulu INITRD_SIZE=$(stat -Lc %s ${INITRD}) 269*91f16700Schasinglulu INITRD_END=$(printf "0x%x" $((${INITRD_BASE} + ${INITRD_SIZE})) ) 270*91f16700Schasinglulu 271*91f16700Schasinglulu CHOSEN_NODE=$(echo \ 272*91f16700Schasinglulu "/ { \ 273*91f16700Schasinglulu chosen { \ 274*91f16700Schasinglulu linux,initrd-start = <${INITRD_START}>; \ 275*91f16700Schasinglulu linux,initrd-end = <${INITRD_END}>; \ 276*91f16700Schasinglulu }; \ 277*91f16700Schasinglulu };") 278*91f16700Schasinglulu 279*91f16700Schasinglulu echo $(dtc -O dts -I dtb ${KERNEL_DTB}) ${CHOSEN_NODE} | \ 280*91f16700Schasinglulu dtc -O dtb -o ${PATCHED_KERNEL_DTB} - 281*91f16700Schasinglulu 282*91f16700SchasingluluAnd the FVP binary can be run with the following command: 283*91f16700Schasinglulu 284*91f16700Schasinglulu.. code:: shell 285*91f16700Schasinglulu 286*91f16700Schasinglulu <path-to>/FVP_Base_AEMv8A-AEMv8A \ 287*91f16700Schasinglulu -C pctl.startup=0.0.0.0 \ 288*91f16700Schasinglulu -C bp.secure_memory=1 \ 289*91f16700Schasinglulu -C cluster0.NUM_CORES=4 \ 290*91f16700Schasinglulu -C cluster1.NUM_CORES=4 \ 291*91f16700Schasinglulu -C cache_state_modelled=1 \ 292*91f16700Schasinglulu -C cluster0.cpu0.RVBAR=0x04001000 \ 293*91f16700Schasinglulu -C cluster0.cpu1.RVBAR=0x04001000 \ 294*91f16700Schasinglulu -C cluster0.cpu2.RVBAR=0x04001000 \ 295*91f16700Schasinglulu -C cluster0.cpu3.RVBAR=0x04001000 \ 296*91f16700Schasinglulu -C cluster1.cpu0.RVBAR=0x04001000 \ 297*91f16700Schasinglulu -C cluster1.cpu1.RVBAR=0x04001000 \ 298*91f16700Schasinglulu -C cluster1.cpu2.RVBAR=0x04001000 \ 299*91f16700Schasinglulu -C cluster1.cpu3.RVBAR=0x04001000 \ 300*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/bl31.bin"@0x04001000 \ 301*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<patched-fdt>"@0x82000000 \ 302*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 303*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<ramdisk.img>"@0x84000000 304*91f16700Schasinglulu 305*91f16700SchasingluluObtaining the Flattened Device Trees 306*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 307*91f16700Schasinglulu 308*91f16700SchasingluluDepending on the FVP configuration and Linux configuration used, different 309*91f16700SchasingluluFDT files are required. FDT source files for the Foundation and Base FVPs can 310*91f16700Schasinglulube found in the TF-A source directory under ``fdts/``. The Foundation FVP has 311*91f16700Schasinglulua subset of the Base FVP components. For example, the Foundation FVP lacks 312*91f16700SchasingluluCLCD and MMC support, and has only one CPU cluster. 313*91f16700Schasinglulu 314*91f16700Schasinglulu.. note:: 315*91f16700Schasinglulu It is not recommended to use the FDTs built along the kernel because not 316*91f16700Schasinglulu all FDTs are available from there. 317*91f16700Schasinglulu 318*91f16700SchasingluluThe dynamic configuration capability is enabled in the firmware for FVPs. 319*91f16700SchasingluluThis means that the firmware can authenticate and load the FDT if present in 320*91f16700SchasingluluFIP. A default FDT is packaged into FIP during the build based on 321*91f16700Schasingluluthe build configuration. This can be overridden by using the ``FVP_HW_CONFIG`` 322*91f16700Schasingluluor ``FVP_HW_CONFIG_DTS`` build options (refer to 323*91f16700Schasinglulu:ref:`build_options_arm_fvp_platform` for details on the options). 324*91f16700Schasinglulu 325*91f16700Schasinglulu- ``fvp-base-gicv2-psci.dts`` 326*91f16700Schasinglulu 327*91f16700Schasinglulu For use with models such as the Cortex-A57-A53 or Cortex-A32 Base FVPs 328*91f16700Schasinglulu without shifted affinities and with Base memory map configuration. 329*91f16700Schasinglulu 330*91f16700Schasinglulu- ``fvp-base-gicv3-psci.dts`` 331*91f16700Schasinglulu 332*91f16700Schasinglulu For use with models such as the Cortex-A57-A53 or Cortex-A32 Base FVPs 333*91f16700Schasinglulu without shifted affinities and with Base memory map configuration and 334*91f16700Schasinglulu Linux GICv3 support. 335*91f16700Schasinglulu 336*91f16700Schasinglulu- ``fvp-base-gicv3-psci-1t.dts`` 337*91f16700Schasinglulu 338*91f16700Schasinglulu For use with models such as the AEMv8-RevC Base FVP with shifted affinities, 339*91f16700Schasinglulu single threaded CPUs, Base memory map configuration and Linux GICv3 support. 340*91f16700Schasinglulu 341*91f16700Schasinglulu- ``fvp-base-gicv3-psci-dynamiq.dts`` 342*91f16700Schasinglulu 343*91f16700Schasinglulu For use with models as the Cortex-A55-A75 Base FVPs with shifted affinities, 344*91f16700Schasinglulu single cluster, single threaded CPUs, Base memory map configuration and Linux 345*91f16700Schasinglulu GICv3 support. 346*91f16700Schasinglulu 347*91f16700Schasinglulu- ``fvp-foundation-gicv2-psci.dts`` 348*91f16700Schasinglulu 349*91f16700Schasinglulu For use with Foundation FVP with Base memory map configuration. 350*91f16700Schasinglulu 351*91f16700Schasinglulu- ``fvp-foundation-gicv3-psci.dts`` 352*91f16700Schasinglulu 353*91f16700Schasinglulu (Default) For use with Foundation FVP with Base memory map configuration 354*91f16700Schasinglulu and Linux GICv3 support. 355*91f16700Schasinglulu 356*91f16700Schasinglulu 357*91f16700SchasingluluRunning on the Foundation FVP with reset to BL1 entrypoint 358*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 359*91f16700Schasinglulu 360*91f16700SchasingluluThe following ``Foundation_Platform`` parameters should be used to boot Linux with 361*91f16700Schasinglulu4 CPUs using the AArch64 build of TF-A. 362*91f16700Schasinglulu 363*91f16700Schasinglulu.. code:: shell 364*91f16700Schasinglulu 365*91f16700Schasinglulu <path-to>/Foundation_Platform \ 366*91f16700Schasinglulu --cores=4 \ 367*91f16700Schasinglulu --arm-v8.0 \ 368*91f16700Schasinglulu --secure-memory \ 369*91f16700Schasinglulu --visualization \ 370*91f16700Schasinglulu --gicv3 \ 371*91f16700Schasinglulu --data="<path-to>/<bl1-binary>"@0x0 \ 372*91f16700Schasinglulu --data="<path-to>/<FIP-binary>"@0x08000000 \ 373*91f16700Schasinglulu --data="<path-to>/<kernel-binary>"@0x80080000 \ 374*91f16700Schasinglulu --data="<path-to>/<ramdisk-binary>"@0x84000000 375*91f16700Schasinglulu 376*91f16700SchasingluluNotes: 377*91f16700Schasinglulu 378*91f16700Schasinglulu- BL1 is loaded at the start of the Trusted ROM. 379*91f16700Schasinglulu- The Firmware Image Package is loaded at the start of NOR FLASH0. 380*91f16700Schasinglulu- The firmware loads the FDT packaged in FIP to the DRAM. The FDT load address 381*91f16700Schasinglulu is specified via the ``load-address`` property in the ``hw-config`` node of 382*91f16700Schasinglulu `FW_CONFIG for FVP`_. 383*91f16700Schasinglulu- The default use-case for the Foundation FVP is to use the ``--gicv3`` option 384*91f16700Schasinglulu and enable the GICv3 device in the model. Note that without this option, 385*91f16700Schasinglulu the Foundation FVP defaults to legacy (Versatile Express) memory map which 386*91f16700Schasinglulu is not supported by TF-A. 387*91f16700Schasinglulu- In order for TF-A to run correctly on the Foundation FVP, the architecture 388*91f16700Schasinglulu versions must match. The Foundation FVP defaults to the highest v8.x 389*91f16700Schasinglulu version it supports but the default build for TF-A is for v8.0. To avoid 390*91f16700Schasinglulu issues either start the Foundation FVP to use v8.0 architecture using the 391*91f16700Schasinglulu ``--arm-v8.0`` option, or build TF-A with an appropriate value for 392*91f16700Schasinglulu ``ARM_ARCH_MINOR``. 393*91f16700Schasinglulu 394*91f16700SchasingluluRunning on the AEMv8 Base FVP with reset to BL1 entrypoint 395*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 396*91f16700Schasinglulu 397*91f16700SchasingluluThe following ``FVP_Base_RevC-2xAEMv8A`` parameters should be used to boot Linux 398*91f16700Schasingluluwith 8 CPUs using the AArch64 build of TF-A. 399*91f16700Schasinglulu 400*91f16700Schasinglulu.. code:: shell 401*91f16700Schasinglulu 402*91f16700Schasinglulu <path-to>/FVP_Base_RevC-2xAEMv8A \ 403*91f16700Schasinglulu -C pctl.startup=0.0.0.0 \ 404*91f16700Schasinglulu -C bp.secure_memory=1 \ 405*91f16700Schasinglulu -C bp.tzc_400.diagnostics=1 \ 406*91f16700Schasinglulu -C cluster0.NUM_CORES=4 \ 407*91f16700Schasinglulu -C cluster1.NUM_CORES=4 \ 408*91f16700Schasinglulu -C cache_state_modelled=1 \ 409*91f16700Schasinglulu -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 410*91f16700Schasinglulu -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 411*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 412*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 413*91f16700Schasinglulu 414*91f16700Schasinglulu.. note:: 415*91f16700Schasinglulu The ``FVP_Base_RevC-2xAEMv8A`` has shifted affinities and requires 416*91f16700Schasinglulu a specific DTS for all the CPUs to be loaded. 417*91f16700Schasinglulu 418*91f16700SchasingluluRunning on the AEMv8 Base FVP (AArch32) with reset to BL1 entrypoint 419*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 420*91f16700Schasinglulu 421*91f16700SchasingluluThe following ``FVP_Base_AEMv8A-AEMv8A`` parameters should be used to boot Linux 422*91f16700Schasingluluwith 8 CPUs using the AArch32 build of TF-A. 423*91f16700Schasinglulu 424*91f16700Schasinglulu.. code:: shell 425*91f16700Schasinglulu 426*91f16700Schasinglulu <path-to>/FVP_Base_AEMv8A-AEMv8A \ 427*91f16700Schasinglulu -C pctl.startup=0.0.0.0 \ 428*91f16700Schasinglulu -C bp.secure_memory=1 \ 429*91f16700Schasinglulu -C bp.tzc_400.diagnostics=1 \ 430*91f16700Schasinglulu -C cluster0.NUM_CORES=4 \ 431*91f16700Schasinglulu -C cluster1.NUM_CORES=4 \ 432*91f16700Schasinglulu -C cache_state_modelled=1 \ 433*91f16700Schasinglulu -C cluster0.cpu0.CONFIG64=0 \ 434*91f16700Schasinglulu -C cluster0.cpu1.CONFIG64=0 \ 435*91f16700Schasinglulu -C cluster0.cpu2.CONFIG64=0 \ 436*91f16700Schasinglulu -C cluster0.cpu3.CONFIG64=0 \ 437*91f16700Schasinglulu -C cluster1.cpu0.CONFIG64=0 \ 438*91f16700Schasinglulu -C cluster1.cpu1.CONFIG64=0 \ 439*91f16700Schasinglulu -C cluster1.cpu2.CONFIG64=0 \ 440*91f16700Schasinglulu -C cluster1.cpu3.CONFIG64=0 \ 441*91f16700Schasinglulu -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 442*91f16700Schasinglulu -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 443*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 444*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 445*91f16700Schasinglulu 446*91f16700SchasingluluRunning on the Cortex-A57-A53 Base FVP with reset to BL1 entrypoint 447*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 448*91f16700Schasinglulu 449*91f16700SchasingluluThe following ``FVP_Base_Cortex-A57x4-A53x4`` model parameters should be used to 450*91f16700Schasingluluboot Linux with 8 CPUs using the AArch64 build of TF-A. 451*91f16700Schasinglulu 452*91f16700Schasinglulu.. code:: shell 453*91f16700Schasinglulu 454*91f16700Schasinglulu <path-to>/FVP_Base_Cortex-A57x4-A53x4 \ 455*91f16700Schasinglulu -C pctl.startup=0.0.0.0 \ 456*91f16700Schasinglulu -C bp.secure_memory=1 \ 457*91f16700Schasinglulu -C bp.tzc_400.diagnostics=1 \ 458*91f16700Schasinglulu -C cache_state_modelled=1 \ 459*91f16700Schasinglulu -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 460*91f16700Schasinglulu -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 461*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 462*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 463*91f16700Schasinglulu 464*91f16700SchasingluluRunning on the Cortex-A32 Base FVP (AArch32) with reset to BL1 entrypoint 465*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 466*91f16700Schasinglulu 467*91f16700SchasingluluThe following ``FVP_Base_Cortex-A32x4`` model parameters should be used to 468*91f16700Schasingluluboot Linux with 4 CPUs using the AArch32 build of TF-A. 469*91f16700Schasinglulu 470*91f16700Schasinglulu.. code:: shell 471*91f16700Schasinglulu 472*91f16700Schasinglulu <path-to>/FVP_Base_Cortex-A32x4 \ 473*91f16700Schasinglulu -C pctl.startup=0.0.0.0 \ 474*91f16700Schasinglulu -C bp.secure_memory=1 \ 475*91f16700Schasinglulu -C bp.tzc_400.diagnostics=1 \ 476*91f16700Schasinglulu -C cache_state_modelled=1 \ 477*91f16700Schasinglulu -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 478*91f16700Schasinglulu -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 479*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 480*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 481*91f16700Schasinglulu 482*91f16700Schasinglulu 483*91f16700SchasingluluRunning on the AEMv8 Base FVP with reset to BL31 entrypoint 484*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 485*91f16700Schasinglulu 486*91f16700SchasingluluThe following ``FVP_Base_RevC-2xAEMv8A`` parameters should be used to boot Linux 487*91f16700Schasingluluwith 8 CPUs using the AArch64 build of TF-A. 488*91f16700Schasinglulu 489*91f16700Schasinglulu.. code:: shell 490*91f16700Schasinglulu 491*91f16700Schasinglulu <path-to>/FVP_Base_RevC-2xAEMv8A \ 492*91f16700Schasinglulu -C pctl.startup=0.0.0.0 \ 493*91f16700Schasinglulu -C bp.secure_memory=1 \ 494*91f16700Schasinglulu -C bp.tzc_400.diagnostics=1 \ 495*91f16700Schasinglulu -C cluster0.NUM_CORES=4 \ 496*91f16700Schasinglulu -C cluster1.NUM_CORES=4 \ 497*91f16700Schasinglulu -C cache_state_modelled=1 \ 498*91f16700Schasinglulu -C cluster0.cpu0.RVBAR=0x04010000 \ 499*91f16700Schasinglulu -C cluster0.cpu1.RVBAR=0x04010000 \ 500*91f16700Schasinglulu -C cluster0.cpu2.RVBAR=0x04010000 \ 501*91f16700Schasinglulu -C cluster0.cpu3.RVBAR=0x04010000 \ 502*91f16700Schasinglulu -C cluster1.cpu0.RVBAR=0x04010000 \ 503*91f16700Schasinglulu -C cluster1.cpu1.RVBAR=0x04010000 \ 504*91f16700Schasinglulu -C cluster1.cpu2.RVBAR=0x04010000 \ 505*91f16700Schasinglulu -C cluster1.cpu3.RVBAR=0x04010000 \ 506*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl31-binary>"@0x04010000 \ 507*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl32-binary>"@0xff000000 \ 508*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 509*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 510*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 511*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 512*91f16700Schasinglulu 513*91f16700SchasingluluNotes: 514*91f16700Schasinglulu 515*91f16700Schasinglulu- Position Independent Executable (PIE) support is enabled in this 516*91f16700Schasinglulu config allowing BL31 to be loaded at any valid address for execution. 517*91f16700Schasinglulu 518*91f16700Schasinglulu- Since a FIP is not loaded when using BL31 as reset entrypoint, the 519*91f16700Schasinglulu ``--data="<path-to><bl31|bl32|bl33-binary>"@<base-address-of-binary>`` 520*91f16700Schasinglulu parameter is needed to load the individual bootloader images in memory. 521*91f16700Schasinglulu BL32 image is only needed if BL31 has been built to expect a Secure-EL1 522*91f16700Schasinglulu Payload. For the same reason, the FDT needs to be compiled from the DT source 523*91f16700Schasinglulu and loaded via the ``--data cluster0.cpu0="<path-to>/<fdt>"@0x82000000`` 524*91f16700Schasinglulu parameter. 525*91f16700Schasinglulu 526*91f16700Schasinglulu- The ``FVP_Base_RevC-2xAEMv8A`` has shifted affinities and requires a 527*91f16700Schasinglulu specific DTS for all the CPUs to be loaded. 528*91f16700Schasinglulu 529*91f16700Schasinglulu- The ``-C cluster<X>.cpu<Y>.RVBAR=@<base-address-of-bl31>`` parameter, where 530*91f16700Schasinglulu X and Y are the cluster and CPU numbers respectively, is used to set the 531*91f16700Schasinglulu reset vector for each core. 532*91f16700Schasinglulu 533*91f16700Schasinglulu- Changing the default value of ``ARM_TSP_RAM_LOCATION`` will also require 534*91f16700Schasinglulu changing the value of 535*91f16700Schasinglulu ``--data="<path-to><bl32-binary>"@<base-address-of-bl32>`` to the new value of 536*91f16700Schasinglulu ``BL32_BASE``. 537*91f16700Schasinglulu 538*91f16700Schasinglulu 539*91f16700SchasingluluRunning on the AEMv8 Base FVP (AArch32) with reset to SP_MIN entrypoint 540*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 541*91f16700Schasinglulu 542*91f16700SchasingluluThe following ``FVP_Base_AEMv8A-AEMv8A`` parameters should be used to boot Linux 543*91f16700Schasingluluwith 8 CPUs using the AArch32 build of TF-A. 544*91f16700Schasinglulu 545*91f16700Schasinglulu.. code:: shell 546*91f16700Schasinglulu 547*91f16700Schasinglulu <path-to>/FVP_Base_AEMv8A-AEMv8A \ 548*91f16700Schasinglulu -C pctl.startup=0.0.0.0 \ 549*91f16700Schasinglulu -C bp.secure_memory=1 \ 550*91f16700Schasinglulu -C bp.tzc_400.diagnostics=1 \ 551*91f16700Schasinglulu -C cluster0.NUM_CORES=4 \ 552*91f16700Schasinglulu -C cluster1.NUM_CORES=4 \ 553*91f16700Schasinglulu -C cache_state_modelled=1 \ 554*91f16700Schasinglulu -C cluster0.cpu0.CONFIG64=0 \ 555*91f16700Schasinglulu -C cluster0.cpu1.CONFIG64=0 \ 556*91f16700Schasinglulu -C cluster0.cpu2.CONFIG64=0 \ 557*91f16700Schasinglulu -C cluster0.cpu3.CONFIG64=0 \ 558*91f16700Schasinglulu -C cluster1.cpu0.CONFIG64=0 \ 559*91f16700Schasinglulu -C cluster1.cpu1.CONFIG64=0 \ 560*91f16700Schasinglulu -C cluster1.cpu2.CONFIG64=0 \ 561*91f16700Schasinglulu -C cluster1.cpu3.CONFIG64=0 \ 562*91f16700Schasinglulu -C cluster0.cpu0.RVBAR=0x04002000 \ 563*91f16700Schasinglulu -C cluster0.cpu1.RVBAR=0x04002000 \ 564*91f16700Schasinglulu -C cluster0.cpu2.RVBAR=0x04002000 \ 565*91f16700Schasinglulu -C cluster0.cpu3.RVBAR=0x04002000 \ 566*91f16700Schasinglulu -C cluster1.cpu0.RVBAR=0x04002000 \ 567*91f16700Schasinglulu -C cluster1.cpu1.RVBAR=0x04002000 \ 568*91f16700Schasinglulu -C cluster1.cpu2.RVBAR=0x04002000 \ 569*91f16700Schasinglulu -C cluster1.cpu3.RVBAR=0x04002000 \ 570*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl32-binary>"@0x04002000 \ 571*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 572*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 573*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 574*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 575*91f16700Schasinglulu 576*91f16700Schasinglulu.. note:: 577*91f16700Schasinglulu Position Independent Executable (PIE) support is enabled in this 578*91f16700Schasinglulu config allowing SP_MIN to be loaded at any valid address for execution. 579*91f16700Schasinglulu 580*91f16700SchasingluluRunning on the Cortex-A57-A53 Base FVP with reset to BL31 entrypoint 581*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 582*91f16700Schasinglulu 583*91f16700SchasingluluThe following ``FVP_Base_Cortex-A57x4-A53x4`` model parameters should be used to 584*91f16700Schasingluluboot Linux with 8 CPUs using the AArch64 build of TF-A. 585*91f16700Schasinglulu 586*91f16700Schasinglulu.. code:: shell 587*91f16700Schasinglulu 588*91f16700Schasinglulu <path-to>/FVP_Base_Cortex-A57x4-A53x4 \ 589*91f16700Schasinglulu -C pctl.startup=0.0.0.0 \ 590*91f16700Schasinglulu -C bp.secure_memory=1 \ 591*91f16700Schasinglulu -C bp.tzc_400.diagnostics=1 \ 592*91f16700Schasinglulu -C cache_state_modelled=1 \ 593*91f16700Schasinglulu -C cluster0.cpu0.RVBARADDR=0x04010000 \ 594*91f16700Schasinglulu -C cluster0.cpu1.RVBARADDR=0x04010000 \ 595*91f16700Schasinglulu -C cluster0.cpu2.RVBARADDR=0x04010000 \ 596*91f16700Schasinglulu -C cluster0.cpu3.RVBARADDR=0x04010000 \ 597*91f16700Schasinglulu -C cluster1.cpu0.RVBARADDR=0x04010000 \ 598*91f16700Schasinglulu -C cluster1.cpu1.RVBARADDR=0x04010000 \ 599*91f16700Schasinglulu -C cluster1.cpu2.RVBARADDR=0x04010000 \ 600*91f16700Schasinglulu -C cluster1.cpu3.RVBARADDR=0x04010000 \ 601*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl31-binary>"@0x04010000 \ 602*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl32-binary>"@0xff000000 \ 603*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 604*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 605*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 606*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 607*91f16700Schasinglulu 608*91f16700SchasingluluRunning on the Cortex-A32 Base FVP (AArch32) with reset to SP_MIN entrypoint 609*91f16700Schasinglulu^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 610*91f16700Schasinglulu 611*91f16700SchasingluluThe following ``FVP_Base_Cortex-A32x4`` model parameters should be used to 612*91f16700Schasingluluboot Linux with 4 CPUs using the AArch32 build of TF-A. 613*91f16700Schasinglulu 614*91f16700Schasinglulu.. code:: shell 615*91f16700Schasinglulu 616*91f16700Schasinglulu <path-to>/FVP_Base_Cortex-A32x4 \ 617*91f16700Schasinglulu -C pctl.startup=0.0.0.0 \ 618*91f16700Schasinglulu -C bp.secure_memory=1 \ 619*91f16700Schasinglulu -C bp.tzc_400.diagnostics=1 \ 620*91f16700Schasinglulu -C cache_state_modelled=1 \ 621*91f16700Schasinglulu -C cluster0.cpu0.RVBARADDR=0x04002000 \ 622*91f16700Schasinglulu -C cluster0.cpu1.RVBARADDR=0x04002000 \ 623*91f16700Schasinglulu -C cluster0.cpu2.RVBARADDR=0x04002000 \ 624*91f16700Schasinglulu -C cluster0.cpu3.RVBARADDR=0x04002000 \ 625*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl32-binary>"@0x04002000 \ 626*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 627*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 628*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 629*91f16700Schasinglulu --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 630*91f16700Schasinglulu 631*91f16700Schasinglulu-------------- 632*91f16700Schasinglulu 633*91f16700Schasinglulu*Copyright (c) 2019-2023, Arm Limited. All rights reserved.* 634*91f16700Schasinglulu 635*91f16700Schasinglulu.. _FW_CONFIG for FVP: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tree/plat/arm/board/fvp/fdts/fvp_fw_config.dts 636*91f16700Schasinglulu.. _Arm's website: `FVP models`_ 637*91f16700Schasinglulu.. _FVP models: https://developer.arm.com/products/system-design/fixed-virtual-platforms 638*91f16700Schasinglulu.. _Linaro Release 20.01: http://releases.linaro.org/members/arm/platforms/20.01 639*91f16700Schasinglulu.. _Arm FVP website: https://developer.arm.com/products/system-design/fixed-virtual-platforms 640