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