143f35ef5SPaul BeesleyArm Fixed Virtual Platforms (FVP) 243f35ef5SPaul Beesley================================= 343f35ef5SPaul Beesley 443f35ef5SPaul BeesleyFixed Virtual Platform (FVP) Support 543f35ef5SPaul Beesley------------------------------------ 643f35ef5SPaul Beesley 743f35ef5SPaul BeesleyThis section lists the supported Arm |FVP| platforms. Please refer to the FVP 843f35ef5SPaul Beesleydocumentation for a detailed description of the model parameter options. 943f35ef5SPaul Beesley 1043f35ef5SPaul BeesleyThe latest version of the AArch64 build of TF-A has been tested on the following 1143f35ef5SPaul BeesleyArm FVPs without shifted affinities, and that do not support threaded CPU cores 1243f35ef5SPaul Beesley(64-bit host machine only). 1343f35ef5SPaul Beesley 1443f35ef5SPaul Beesley.. note:: 156f09bcceSlaurenw-arm The FVP models used are Version 11.14 Build 21, unless otherwise stated. 1643f35ef5SPaul Beesley 17ccf220adSManish V Badarkhe- ``FVP_Base_AEMvA`` 1843f35ef5SPaul Beesley- ``FVP_Base_AEMv8A-AEMv8A`` 1943f35ef5SPaul Beesley- ``FVP_Base_AEMv8A-AEMv8A-AEMv8A-AEMv8A-CCN502`` 206f09bcceSlaurenw-arm- ``FVP_Base_RevC-2xAEMvA`` 219cfb878fSlaurenw-arm- ``FVP_Base_Cortex-A32x4`` (Version 11.12 build 38) 2243f35ef5SPaul Beesley- ``FVP_Base_Cortex-A35x4`` 2343f35ef5SPaul Beesley- ``FVP_Base_Cortex-A53x4`` 2443f35ef5SPaul Beesley- ``FVP_Base_Cortex-A55x4+Cortex-A75x4`` 2543f35ef5SPaul Beesley- ``FVP_Base_Cortex-A55x4`` 2643f35ef5SPaul Beesley- ``FVP_Base_Cortex-A57x1-A53x1`` 2743f35ef5SPaul Beesley- ``FVP_Base_Cortex-A57x2-A53x4`` 2843f35ef5SPaul Beesley- ``FVP_Base_Cortex-A57x4-A53x4`` 2943f35ef5SPaul Beesley- ``FVP_Base_Cortex-A57x4`` 30495553d5Slaurenw-arm- ``FVP_Base_Cortex-A65x4`` 31495553d5Slaurenw-arm- ``FVP_Base_Cortex-A65AEx8`` 3243f35ef5SPaul Beesley- ``FVP_Base_Cortex-A72x4-A53x4`` 3343f35ef5SPaul Beesley- ``FVP_Base_Cortex-A72x4`` 3443f35ef5SPaul Beesley- ``FVP_Base_Cortex-A73x4-A53x4`` 3543f35ef5SPaul Beesley- ``FVP_Base_Cortex-A73x4`` 3643f35ef5SPaul Beesley- ``FVP_Base_Cortex-A75x4`` 3743f35ef5SPaul Beesley- ``FVP_Base_Cortex-A76x4`` 3843f35ef5SPaul Beesley- ``FVP_Base_Cortex-A76AEx4`` 3943f35ef5SPaul Beesley- ``FVP_Base_Cortex-A76AEx8`` 40495553d5Slaurenw-arm- ``FVP_Base_Cortex-A77x4`` 41ccf220adSManish V Badarkhe- ``FVP_Base_Cortex-A78x4`` 426f09bcceSlaurenw-arm- ``FVP_Base_Matterhornx4`` 436f09bcceSlaurenw-arm- ``FVP_Morello`` (Version 0.10 build 542) 4491879af7SAlexei Fedorov- ``FVP_Base_Neoverse-E1x1`` 4591879af7SAlexei Fedorov- ``FVP_Base_Neoverse-E1x2`` 4691879af7SAlexei Fedorov- ``FVP_Base_Neoverse-E1x4`` 4743f35ef5SPaul Beesley- ``FVP_Base_Neoverse-N1x4`` 489cfb878fSlaurenw-arm- ``FVP_Base_Neoverse-N2x4`` (Version 11.12 build 38) 49ccf220adSManish V Badarkhe- ``FVP_Base_Neoverse-V1x4`` 50e09559fdSVijayenthiran Subramaniam- ``FVP_CSS_SGI-575`` (Version 11.10 build 36) 51495553d5Slaurenw-arm- ``FVP_CSS_SGM-775`` 52ccf220adSManish V Badarkhe- ``FVP_RD_E1_edge`` (Version 11.9 build 41) 53e09559fdSVijayenthiran Subramaniam- ``FVP_RD_N1_edge`` (Version 11.10 build 36) 54e09559fdSVijayenthiran Subramaniam- ``FVP_RD_N1_edge_dual`` (Version 11.10 build 36) 5506ea86feSAditya Angadi- ``FVP_RD_Daniel`` (Version 11.13 build 10) 567b24e48aSAditya Angadi- ``FVP_RD_N2`` (Version 11.13 build 10) 576f09bcceSlaurenw-arm- ``FVP_TC0`` (Version 0.0 build 6509) 58051906bbSManish V Badarkhe- ``FVP_Base_AEMv8A-GIC600AE`` (Version 0.0 build 6415) 5943f35ef5SPaul Beesley- ``Foundation_Platform`` 6043f35ef5SPaul Beesley 6143f35ef5SPaul BeesleyThe latest version of the AArch32 build of TF-A has been tested on the 6243f35ef5SPaul Beesleyfollowing Arm FVPs without shifted affinities, and that do not support threaded 6343f35ef5SPaul BeesleyCPU cores (64-bit host machine only). 6443f35ef5SPaul Beesley 65ccf220adSManish V Badarkhe- ``FVP_Base_AEMvA`` 6643f35ef5SPaul Beesley- ``FVP_Base_AEMv8A-AEMv8A`` 6743f35ef5SPaul Beesley- ``FVP_Base_Cortex-A32x4`` 6843f35ef5SPaul Beesley 6943f35ef5SPaul Beesley.. note:: 7043f35ef5SPaul Beesley The ``FVP_Base_RevC-2xAEMv8A`` FVP only supports shifted affinities, which 7143f35ef5SPaul Beesley is not compatible with legacy GIC configurations. Therefore this FVP does not 7243f35ef5SPaul Beesley support these legacy GIC configurations. 7343f35ef5SPaul Beesley 7443f35ef5SPaul BeesleyThe *Foundation* and *Base* FVPs can be downloaded free of charge. See the `Arm 7543f35ef5SPaul BeesleyFVP website`_. The Cortex-A models listed above are also available to download 7643f35ef5SPaul Beesleyfrom `Arm's website`_. 7743f35ef5SPaul Beesley 7843f35ef5SPaul Beesley.. note:: 7943f35ef5SPaul Beesley The build numbers quoted above are those reported by launching the FVP 8043f35ef5SPaul Beesley with the ``--version`` parameter. 8143f35ef5SPaul Beesley 8243f35ef5SPaul Beesley.. note:: 8343f35ef5SPaul Beesley Linaro provides a ramdisk image in prebuilt FVP configurations and full 8443f35ef5SPaul Beesley file systems that can be downloaded separately. To run an FVP with a virtio 8543f35ef5SPaul Beesley file system image an additional FVP configuration option 8643f35ef5SPaul Beesley ``-C bp.virtioblockdevice.image_path="<path-to>/<file-system-image>`` can be 8743f35ef5SPaul Beesley used. 8843f35ef5SPaul Beesley 8943f35ef5SPaul Beesley.. note:: 9043f35ef5SPaul Beesley The software will not work on Version 1.0 of the Foundation FVP. 9143f35ef5SPaul Beesley The commands below would report an ``unhandled argument`` error in this case. 9243f35ef5SPaul Beesley 9343f35ef5SPaul Beesley.. note:: 9443f35ef5SPaul Beesley FVPs can be launched with ``--cadi-server`` option such that a 9543f35ef5SPaul Beesley CADI-compliant debugger (for example, Arm DS-5) can connect to and control 9643f35ef5SPaul Beesley its execution. 9743f35ef5SPaul Beesley 9843f35ef5SPaul Beesley.. warning:: 9943f35ef5SPaul Beesley Since FVP model Version 11.0 Build 11.0.34 and Version 8.5 Build 0.8.5202 10043f35ef5SPaul Beesley the internal synchronisation timings changed compared to older versions of 10143f35ef5SPaul Beesley the models. The models can be launched with ``-Q 100`` option if they are 10243f35ef5SPaul Beesley required to match the run time characteristics of the older versions. 10343f35ef5SPaul Beesley 10499a99eb4SZelalemAll the above platforms have been tested with `Linaro Release 20.01`_. 10543f35ef5SPaul Beesley 10643f35ef5SPaul Beesley.. _build_options_arm_fvp_platform: 10743f35ef5SPaul Beesley 10843f35ef5SPaul BeesleyArm FVP Platform Specific Build Options 10943f35ef5SPaul Beesley--------------------------------------- 11043f35ef5SPaul Beesley 11143f35ef5SPaul Beesley- ``FVP_CLUSTER_COUNT`` : Configures the cluster count to be used to 11243f35ef5SPaul Beesley build the topology tree within TF-A. By default TF-A is configured for dual 11343f35ef5SPaul Beesley cluster topology and this option can be used to override the default value. 11443f35ef5SPaul Beesley 11543f35ef5SPaul Beesley- ``FVP_INTERCONNECT_DRIVER``: Selects the interconnect driver to be built. The 11643f35ef5SPaul Beesley default interconnect driver depends on the value of ``FVP_CLUSTER_COUNT`` as 11743f35ef5SPaul Beesley explained in the options below: 11843f35ef5SPaul Beesley 11943f35ef5SPaul Beesley - ``FVP_CCI`` : The CCI driver is selected. This is the default 12043f35ef5SPaul Beesley if 0 < ``FVP_CLUSTER_COUNT`` <= 2. 12143f35ef5SPaul Beesley - ``FVP_CCN`` : The CCN driver is selected. This is the default 12243f35ef5SPaul Beesley if ``FVP_CLUSTER_COUNT`` > 2. 12343f35ef5SPaul Beesley 12443f35ef5SPaul Beesley- ``FVP_MAX_CPUS_PER_CLUSTER``: Sets the maximum number of CPUs implemented in 12543f35ef5SPaul Beesley a single cluster. This option defaults to 4. 12643f35ef5SPaul Beesley 12743f35ef5SPaul Beesley- ``FVP_MAX_PE_PER_CPU``: Sets the maximum number of PEs implemented on any CPU 12843f35ef5SPaul Beesley in the system. This option defaults to 1. Note that the build option 12943f35ef5SPaul Beesley ``ARM_PLAT_MT`` doesn't have any effect on FVP platforms. 13043f35ef5SPaul Beesley 13143f35ef5SPaul Beesley- ``FVP_USE_GIC_DRIVER`` : Selects the GIC driver to be built. Options: 13243f35ef5SPaul Beesley 13343f35ef5SPaul Beesley - ``FVP_GICV2`` : The GICv2 only driver is selected 13443f35ef5SPaul Beesley - ``FVP_GICV3`` : The GICv3 only driver is selected (default option) 13543f35ef5SPaul Beesley 13643f35ef5SPaul Beesley- ``FVP_HW_CONFIG_DTS`` : Specify the path to the DTS file to be compiled 13743f35ef5SPaul Beesley to DTB and packaged in FIP as the HW_CONFIG. See :ref:`Firmware Design` for 13843f35ef5SPaul Beesley details on HW_CONFIG. By default, this is initialized to a sensible DTS 13943f35ef5SPaul Beesley file in ``fdts/`` folder depending on other build options. But some cases, 14043f35ef5SPaul Beesley like shifted affinity format for MPIDR, cannot be detected at build time 14143f35ef5SPaul Beesley and this option is needed to specify the appropriate DTS file. 14243f35ef5SPaul Beesley 14343f35ef5SPaul Beesley- ``FVP_HW_CONFIG`` : Specify the path to the HW_CONFIG blob to be packaged in 14443f35ef5SPaul Beesley FIP. See :ref:`Firmware Design` for details on HW_CONFIG. This option is 14543f35ef5SPaul Beesley similar to the ``FVP_HW_CONFIG_DTS`` option, but it directly specifies the 14643f35ef5SPaul Beesley HW_CONFIG blob instead of the DTS file. This option is useful to override 14743f35ef5SPaul Beesley the default HW_CONFIG selected by the build system. 14843f35ef5SPaul Beesley 149d30a6615SManish V Badarkhe- ``FVP_GICR_REGION_PROTECTION``: Mark the redistributor pages of 150d30a6615SManish V Badarkhe inactive/fused CPU cores as read-only. The default value of this option 151d30a6615SManish V Badarkhe is ``0``, which means the redistributor pages of all CPU cores are marked 152d30a6615SManish V Badarkhe as read and write. 153d30a6615SManish V Badarkhe 15443f35ef5SPaul BeesleyBooting Firmware Update images 15543f35ef5SPaul Beesley------------------------------ 15643f35ef5SPaul Beesley 15743f35ef5SPaul BeesleyWhen Firmware Update (FWU) is enabled there are at least 2 new images 15843f35ef5SPaul Beesleythat have to be loaded, the Non-Secure FWU ROM (NS-BL1U), and the 15943f35ef5SPaul BeesleyFWU FIP. 16043f35ef5SPaul Beesley 16143f35ef5SPaul BeesleyThe additional fip images must be loaded with: 16243f35ef5SPaul Beesley 16343f35ef5SPaul Beesley:: 16443f35ef5SPaul Beesley 16543f35ef5SPaul Beesley --data cluster0.cpu0="<path_to>/ns_bl1u.bin"@0x0beb8000 [ns_bl1u_base_address] 16643f35ef5SPaul Beesley --data cluster0.cpu0="<path_to>/fwu_fip.bin"@0x08400000 [ns_bl2u_base_address] 16743f35ef5SPaul Beesley 16843f35ef5SPaul BeesleyThe address ns_bl1u_base_address is the value of NS_BL1U_BASE. 16943f35ef5SPaul BeesleyIn the same way, the address ns_bl2u_base_address is the value of 17043f35ef5SPaul BeesleyNS_BL2U_BASE. 17143f35ef5SPaul Beesley 17243f35ef5SPaul BeesleyBooting an EL3 payload 17343f35ef5SPaul Beesley---------------------- 17443f35ef5SPaul Beesley 17543f35ef5SPaul BeesleyThe EL3 payloads boot flow requires the CPU's mailbox to be cleared at reset for 17643f35ef5SPaul Beesleythe secondary CPUs holding pen to work properly. Unfortunately, its reset value 17743f35ef5SPaul Beesleyis undefined on the FVP platform and the FVP platform code doesn't clear it. 17843f35ef5SPaul BeesleyTherefore, one must modify the way the model is normally invoked in order to 17943f35ef5SPaul Beesleyclear the mailbox at start-up. 18043f35ef5SPaul Beesley 18143f35ef5SPaul BeesleyOne way to do that is to create an 8-byte file containing all zero bytes using 18243f35ef5SPaul Beesleythe following command: 18343f35ef5SPaul Beesley 18443f35ef5SPaul Beesley.. code:: shell 18543f35ef5SPaul Beesley 18643f35ef5SPaul Beesley dd if=/dev/zero of=mailbox.dat bs=1 count=8 18743f35ef5SPaul Beesley 18843f35ef5SPaul Beesleyand pre-load it into the FVP memory at the mailbox address (i.e. ``0x04000000``) 18943f35ef5SPaul Beesleyusing the following model parameters: 19043f35ef5SPaul Beesley 19143f35ef5SPaul Beesley:: 19243f35ef5SPaul Beesley 19343f35ef5SPaul Beesley --data cluster0.cpu0=mailbox.dat@0x04000000 [Base FVPs] 19443f35ef5SPaul Beesley --data=mailbox.dat@0x04000000 [Foundation FVP] 19543f35ef5SPaul Beesley 19643f35ef5SPaul BeesleyTo provide the model with the EL3 payload image, the following methods may be 19743f35ef5SPaul Beesleyused: 19843f35ef5SPaul Beesley 19943f35ef5SPaul Beesley#. If the EL3 payload is able to execute in place, it may be programmed into 20043f35ef5SPaul Beesley flash memory. On Base Cortex and AEM FVPs, the following model parameter 20143f35ef5SPaul Beesley loads it at the base address of the NOR FLASH1 (the NOR FLASH0 is already 20243f35ef5SPaul Beesley used for the FIP): 20343f35ef5SPaul Beesley 20443f35ef5SPaul Beesley :: 20543f35ef5SPaul Beesley 20643f35ef5SPaul Beesley -C bp.flashloader1.fname="<path-to>/<el3-payload>" 20743f35ef5SPaul Beesley 20843f35ef5SPaul Beesley On Foundation FVP, there is no flash loader component and the EL3 payload 20943f35ef5SPaul Beesley may be programmed anywhere in flash using method 3 below. 21043f35ef5SPaul Beesley 21143f35ef5SPaul Beesley#. When using the ``SPIN_ON_BL1_EXIT=1`` loading method, the following DS-5 21243f35ef5SPaul Beesley command may be used to load the EL3 payload ELF image over JTAG: 21343f35ef5SPaul Beesley 21443f35ef5SPaul Beesley :: 21543f35ef5SPaul Beesley 21643f35ef5SPaul Beesley load <path-to>/el3-payload.elf 21743f35ef5SPaul Beesley 21843f35ef5SPaul Beesley#. The EL3 payload may be pre-loaded in volatile memory using the following 21943f35ef5SPaul Beesley model parameters: 22043f35ef5SPaul Beesley 22143f35ef5SPaul Beesley :: 22243f35ef5SPaul Beesley 22343f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/el3-payload>"@address [Base FVPs] 22443f35ef5SPaul Beesley --data="<path-to>/<el3-payload>"@address [Foundation FVP] 22543f35ef5SPaul Beesley 22643f35ef5SPaul Beesley The address provided to the FVP must match the ``EL3_PAYLOAD_BASE`` address 22743f35ef5SPaul Beesley used when building TF-A. 22843f35ef5SPaul Beesley 22943f35ef5SPaul BeesleyBooting a preloaded kernel image (Base FVP) 23043f35ef5SPaul Beesley------------------------------------------- 23143f35ef5SPaul Beesley 23243f35ef5SPaul BeesleyThe following example uses a simplified boot flow by directly jumping from the 23343f35ef5SPaul BeesleyTF-A to the Linux kernel, which will use a ramdisk as filesystem. This can be 23443f35ef5SPaul Beesleyuseful if both the kernel and the device tree blob (DTB) are already present in 23543f35ef5SPaul Beesleymemory (like in FVP). 23643f35ef5SPaul Beesley 23743f35ef5SPaul BeesleyFor example, if the kernel is loaded at ``0x80080000`` and the DTB is loaded at 23843f35ef5SPaul Beesleyaddress ``0x82000000``, the firmware can be built like this: 23943f35ef5SPaul Beesley 24043f35ef5SPaul Beesley.. code:: shell 24143f35ef5SPaul Beesley 242f35e5ab3SMadhukar Pappireddy CROSS_COMPILE=aarch64-none-elf- \ 24343f35ef5SPaul Beesley make PLAT=fvp DEBUG=1 \ 24443f35ef5SPaul Beesley RESET_TO_BL31=1 \ 24543f35ef5SPaul Beesley ARM_LINUX_KERNEL_AS_BL33=1 \ 24643f35ef5SPaul Beesley PRELOADED_BL33_BASE=0x80080000 \ 24743f35ef5SPaul Beesley ARM_PRELOADED_DTB_BASE=0x82000000 \ 24843f35ef5SPaul Beesley all fip 24943f35ef5SPaul Beesley 25043f35ef5SPaul BeesleyNow, it is needed to modify the DTB so that the kernel knows the address of the 25143f35ef5SPaul Beesleyramdisk. The following script generates a patched DTB from the provided one, 25243f35ef5SPaul Beesleyassuming that the ramdisk is loaded at address ``0x84000000``. Note that this 25343f35ef5SPaul Beesleyscript assumes that the user is using a ramdisk image prepared for U-Boot, like 25443f35ef5SPaul Beesleythe ones provided by Linaro. If using a ramdisk without this header,the ``0x40`` 25543f35ef5SPaul Beesleyoffset in ``INITRD_START`` has to be removed. 25643f35ef5SPaul Beesley 25743f35ef5SPaul Beesley.. code:: bash 25843f35ef5SPaul Beesley 25943f35ef5SPaul Beesley #!/bin/bash 26043f35ef5SPaul Beesley 26143f35ef5SPaul Beesley # Path to the input DTB 26243f35ef5SPaul Beesley KERNEL_DTB=<path-to>/<fdt> 26343f35ef5SPaul Beesley # Path to the output DTB 26443f35ef5SPaul Beesley PATCHED_KERNEL_DTB=<path-to>/<patched-fdt> 26543f35ef5SPaul Beesley # Base address of the ramdisk 26643f35ef5SPaul Beesley INITRD_BASE=0x84000000 26743f35ef5SPaul Beesley # Path to the ramdisk 26843f35ef5SPaul Beesley INITRD=<path-to>/<ramdisk.img> 26943f35ef5SPaul Beesley 27043f35ef5SPaul Beesley # Skip uboot header (64 bytes) 27143f35ef5SPaul Beesley INITRD_START=$(printf "0x%x" $((${INITRD_BASE} + 0x40)) ) 27243f35ef5SPaul Beesley INITRD_SIZE=$(stat -Lc %s ${INITRD}) 27343f35ef5SPaul Beesley INITRD_END=$(printf "0x%x" $((${INITRD_BASE} + ${INITRD_SIZE})) ) 27443f35ef5SPaul Beesley 27543f35ef5SPaul Beesley CHOSEN_NODE=$(echo \ 27643f35ef5SPaul Beesley "/ { \ 27743f35ef5SPaul Beesley chosen { \ 27843f35ef5SPaul Beesley linux,initrd-start = <${INITRD_START}>; \ 27943f35ef5SPaul Beesley linux,initrd-end = <${INITRD_END}>; \ 28043f35ef5SPaul Beesley }; \ 28143f35ef5SPaul Beesley };") 28243f35ef5SPaul Beesley 28343f35ef5SPaul Beesley echo $(dtc -O dts -I dtb ${KERNEL_DTB}) ${CHOSEN_NODE} | \ 28443f35ef5SPaul Beesley dtc -O dtb -o ${PATCHED_KERNEL_DTB} - 28543f35ef5SPaul Beesley 28643f35ef5SPaul BeesleyAnd the FVP binary can be run with the following command: 28743f35ef5SPaul Beesley 28843f35ef5SPaul Beesley.. code:: shell 28943f35ef5SPaul Beesley 29043f35ef5SPaul Beesley <path-to>/FVP_Base_AEMv8A-AEMv8A \ 29143f35ef5SPaul Beesley -C pctl.startup=0.0.0.0 \ 29243f35ef5SPaul Beesley -C bp.secure_memory=1 \ 29343f35ef5SPaul Beesley -C cluster0.NUM_CORES=4 \ 29443f35ef5SPaul Beesley -C cluster1.NUM_CORES=4 \ 29543f35ef5SPaul Beesley -C cache_state_modelled=1 \ 2966227cca9SAlexei Fedorov -C cluster0.cpu0.RVBAR=0x04001000 \ 2976227cca9SAlexei Fedorov -C cluster0.cpu1.RVBAR=0x04001000 \ 2986227cca9SAlexei Fedorov -C cluster0.cpu2.RVBAR=0x04001000 \ 2996227cca9SAlexei Fedorov -C cluster0.cpu3.RVBAR=0x04001000 \ 3006227cca9SAlexei Fedorov -C cluster1.cpu0.RVBAR=0x04001000 \ 3016227cca9SAlexei Fedorov -C cluster1.cpu1.RVBAR=0x04001000 \ 3026227cca9SAlexei Fedorov -C cluster1.cpu2.RVBAR=0x04001000 \ 3036227cca9SAlexei Fedorov -C cluster1.cpu3.RVBAR=0x04001000 \ 3046227cca9SAlexei Fedorov --data cluster0.cpu0="<path-to>/bl31.bin"@0x04001000 \ 30543f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<patched-fdt>"@0x82000000 \ 30643f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 30743f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<ramdisk.img>"@0x84000000 30843f35ef5SPaul Beesley 30943f35ef5SPaul BeesleyObtaining the Flattened Device Trees 31043f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 31143f35ef5SPaul Beesley 31243f35ef5SPaul BeesleyDepending on the FVP configuration and Linux configuration used, different 31343f35ef5SPaul BeesleyFDT files are required. FDT source files for the Foundation and Base FVPs can 31443f35ef5SPaul Beesleybe found in the TF-A source directory under ``fdts/``. The Foundation FVP has 31543f35ef5SPaul Beesleya subset of the Base FVP components. For example, the Foundation FVP lacks 31643f35ef5SPaul BeesleyCLCD and MMC support, and has only one CPU cluster. 31743f35ef5SPaul Beesley 31843f35ef5SPaul Beesley.. note:: 31943f35ef5SPaul Beesley It is not recommended to use the FDTs built along the kernel because not 32043f35ef5SPaul Beesley all FDTs are available from there. 32143f35ef5SPaul Beesley 32243f35ef5SPaul BeesleyThe dynamic configuration capability is enabled in the firmware for FVPs. 32343f35ef5SPaul BeesleyThis means that the firmware can authenticate and load the FDT if present in 32443f35ef5SPaul BeesleyFIP. A default FDT is packaged into FIP during the build based on 32543f35ef5SPaul Beesleythe build configuration. This can be overridden by using the ``FVP_HW_CONFIG`` 32643f35ef5SPaul Beesleyor ``FVP_HW_CONFIG_DTS`` build options (refer to 32743f35ef5SPaul Beesley:ref:`build_options_arm_fvp_platform` for details on the options). 32843f35ef5SPaul Beesley 32943f35ef5SPaul Beesley- ``fvp-base-gicv2-psci.dts`` 33043f35ef5SPaul Beesley 33143f35ef5SPaul Beesley For use with models such as the Cortex-A57-A53 Base FVPs without shifted 33243f35ef5SPaul Beesley affinities and with Base memory map configuration. 33343f35ef5SPaul Beesley 33443f35ef5SPaul Beesley- ``fvp-base-gicv2-psci-aarch32.dts`` 33543f35ef5SPaul Beesley 33643f35ef5SPaul Beesley For use with models such as the Cortex-A32 Base FVPs without shifted 33743f35ef5SPaul Beesley affinities and running Linux in AArch32 state with Base memory map 33843f35ef5SPaul Beesley configuration. 33943f35ef5SPaul Beesley 34043f35ef5SPaul Beesley- ``fvp-base-gicv3-psci.dts`` 34143f35ef5SPaul Beesley 34243f35ef5SPaul Beesley For use with models such as the Cortex-A57-A53 Base FVPs without shifted 34343f35ef5SPaul Beesley affinities and with Base memory map configuration and Linux GICv3 support. 34443f35ef5SPaul Beesley 34543f35ef5SPaul Beesley- ``fvp-base-gicv3-psci-1t.dts`` 34643f35ef5SPaul Beesley 34743f35ef5SPaul Beesley For use with models such as the AEMv8-RevC Base FVP with shifted affinities, 34843f35ef5SPaul Beesley single threaded CPUs, Base memory map configuration and Linux GICv3 support. 34943f35ef5SPaul Beesley 35043f35ef5SPaul Beesley- ``fvp-base-gicv3-psci-dynamiq.dts`` 35143f35ef5SPaul Beesley 35243f35ef5SPaul Beesley For use with models as the Cortex-A55-A75 Base FVPs with shifted affinities, 35343f35ef5SPaul Beesley single cluster, single threaded CPUs, Base memory map configuration and Linux 35443f35ef5SPaul Beesley GICv3 support. 35543f35ef5SPaul Beesley 35643f35ef5SPaul Beesley- ``fvp-base-gicv3-psci-aarch32.dts`` 35743f35ef5SPaul Beesley 35843f35ef5SPaul Beesley For use with models such as the Cortex-A32 Base FVPs without shifted 35943f35ef5SPaul Beesley affinities and running Linux in AArch32 state with Base memory map 36043f35ef5SPaul Beesley configuration and Linux GICv3 support. 36143f35ef5SPaul Beesley 36243f35ef5SPaul Beesley- ``fvp-foundation-gicv2-psci.dts`` 36343f35ef5SPaul Beesley 36443f35ef5SPaul Beesley For use with Foundation FVP with Base memory map configuration. 36543f35ef5SPaul Beesley 36643f35ef5SPaul Beesley- ``fvp-foundation-gicv3-psci.dts`` 36743f35ef5SPaul Beesley 36843f35ef5SPaul Beesley (Default) For use with Foundation FVP with Base memory map configuration 36943f35ef5SPaul Beesley and Linux GICv3 support. 37043f35ef5SPaul Beesley 37143f35ef5SPaul Beesley 37243f35ef5SPaul BeesleyRunning on the Foundation FVP with reset to BL1 entrypoint 37343f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 37443f35ef5SPaul Beesley 37543f35ef5SPaul BeesleyThe following ``Foundation_Platform`` parameters should be used to boot Linux with 37643f35ef5SPaul Beesley4 CPUs using the AArch64 build of TF-A. 37743f35ef5SPaul Beesley 37843f35ef5SPaul Beesley.. code:: shell 37943f35ef5SPaul Beesley 38043f35ef5SPaul Beesley <path-to>/Foundation_Platform \ 38143f35ef5SPaul Beesley --cores=4 \ 38243f35ef5SPaul Beesley --arm-v8.0 \ 38343f35ef5SPaul Beesley --secure-memory \ 38443f35ef5SPaul Beesley --visualization \ 38543f35ef5SPaul Beesley --gicv3 \ 38643f35ef5SPaul Beesley --data="<path-to>/<bl1-binary>"@0x0 \ 38743f35ef5SPaul Beesley --data="<path-to>/<FIP-binary>"@0x08000000 \ 38843f35ef5SPaul Beesley --data="<path-to>/<kernel-binary>"@0x80080000 \ 38943f35ef5SPaul Beesley --data="<path-to>/<ramdisk-binary>"@0x84000000 39043f35ef5SPaul Beesley 39143f35ef5SPaul BeesleyNotes: 39243f35ef5SPaul Beesley 39343f35ef5SPaul Beesley- BL1 is loaded at the start of the Trusted ROM. 39443f35ef5SPaul Beesley- The Firmware Image Package is loaded at the start of NOR FLASH0. 39543f35ef5SPaul Beesley- The firmware loads the FDT packaged in FIP to the DRAM. The FDT load address 39643f35ef5SPaul Beesley is specified via the ``hw_config_addr`` property in `TB_FW_CONFIG for FVP`_. 39743f35ef5SPaul Beesley- The default use-case for the Foundation FVP is to use the ``--gicv3`` option 39843f35ef5SPaul Beesley and enable the GICv3 device in the model. Note that without this option, 39943f35ef5SPaul Beesley the Foundation FVP defaults to legacy (Versatile Express) memory map which 40043f35ef5SPaul Beesley is not supported by TF-A. 40143f35ef5SPaul Beesley- In order for TF-A to run correctly on the Foundation FVP, the architecture 40243f35ef5SPaul Beesley versions must match. The Foundation FVP defaults to the highest v8.x 40343f35ef5SPaul Beesley version it supports but the default build for TF-A is for v8.0. To avoid 40443f35ef5SPaul Beesley issues either start the Foundation FVP to use v8.0 architecture using the 40543f35ef5SPaul Beesley ``--arm-v8.0`` option, or build TF-A with an appropriate value for 40643f35ef5SPaul Beesley ``ARM_ARCH_MINOR``. 40743f35ef5SPaul Beesley 40843f35ef5SPaul BeesleyRunning on the AEMv8 Base FVP with reset to BL1 entrypoint 40943f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 41043f35ef5SPaul Beesley 41143f35ef5SPaul BeesleyThe following ``FVP_Base_RevC-2xAEMv8A`` parameters should be used to boot Linux 41243f35ef5SPaul Beesleywith 8 CPUs using the AArch64 build of TF-A. 41343f35ef5SPaul Beesley 41443f35ef5SPaul Beesley.. code:: shell 41543f35ef5SPaul Beesley 41643f35ef5SPaul Beesley <path-to>/FVP_Base_RevC-2xAEMv8A \ 41743f35ef5SPaul Beesley -C pctl.startup=0.0.0.0 \ 41843f35ef5SPaul Beesley -C bp.secure_memory=1 \ 41943f35ef5SPaul Beesley -C bp.tzc_400.diagnostics=1 \ 42043f35ef5SPaul Beesley -C cluster0.NUM_CORES=4 \ 42143f35ef5SPaul Beesley -C cluster1.NUM_CORES=4 \ 42243f35ef5SPaul Beesley -C cache_state_modelled=1 \ 42343f35ef5SPaul Beesley -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 42443f35ef5SPaul Beesley -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 42543f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 42643f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 42743f35ef5SPaul Beesley 42843f35ef5SPaul Beesley.. note:: 42943f35ef5SPaul Beesley The ``FVP_Base_RevC-2xAEMv8A`` has shifted affinities and requires 43043f35ef5SPaul Beesley a specific DTS for all the CPUs to be loaded. 43143f35ef5SPaul Beesley 43243f35ef5SPaul BeesleyRunning on the AEMv8 Base FVP (AArch32) with reset to BL1 entrypoint 43343f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 43443f35ef5SPaul Beesley 43543f35ef5SPaul BeesleyThe following ``FVP_Base_AEMv8A-AEMv8A`` parameters should be used to boot Linux 43643f35ef5SPaul Beesleywith 8 CPUs using the AArch32 build of TF-A. 43743f35ef5SPaul Beesley 43843f35ef5SPaul Beesley.. code:: shell 43943f35ef5SPaul Beesley 44043f35ef5SPaul Beesley <path-to>/FVP_Base_AEMv8A-AEMv8A \ 44143f35ef5SPaul Beesley -C pctl.startup=0.0.0.0 \ 44243f35ef5SPaul Beesley -C bp.secure_memory=1 \ 44343f35ef5SPaul Beesley -C bp.tzc_400.diagnostics=1 \ 44443f35ef5SPaul Beesley -C cluster0.NUM_CORES=4 \ 44543f35ef5SPaul Beesley -C cluster1.NUM_CORES=4 \ 44643f35ef5SPaul Beesley -C cache_state_modelled=1 \ 44743f35ef5SPaul Beesley -C cluster0.cpu0.CONFIG64=0 \ 44843f35ef5SPaul Beesley -C cluster0.cpu1.CONFIG64=0 \ 44943f35ef5SPaul Beesley -C cluster0.cpu2.CONFIG64=0 \ 45043f35ef5SPaul Beesley -C cluster0.cpu3.CONFIG64=0 \ 45143f35ef5SPaul Beesley -C cluster1.cpu0.CONFIG64=0 \ 45243f35ef5SPaul Beesley -C cluster1.cpu1.CONFIG64=0 \ 45343f35ef5SPaul Beesley -C cluster1.cpu2.CONFIG64=0 \ 45443f35ef5SPaul Beesley -C cluster1.cpu3.CONFIG64=0 \ 45543f35ef5SPaul Beesley -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 45643f35ef5SPaul Beesley -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 45743f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 45843f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 45943f35ef5SPaul Beesley 46043f35ef5SPaul BeesleyRunning on the Cortex-A57-A53 Base FVP with reset to BL1 entrypoint 46143f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 46243f35ef5SPaul Beesley 46343f35ef5SPaul BeesleyThe following ``FVP_Base_Cortex-A57x4-A53x4`` model parameters should be used to 46443f35ef5SPaul Beesleyboot Linux with 8 CPUs using the AArch64 build of TF-A. 46543f35ef5SPaul Beesley 46643f35ef5SPaul Beesley.. code:: shell 46743f35ef5SPaul Beesley 46843f35ef5SPaul Beesley <path-to>/FVP_Base_Cortex-A57x4-A53x4 \ 46943f35ef5SPaul Beesley -C pctl.startup=0.0.0.0 \ 47043f35ef5SPaul Beesley -C bp.secure_memory=1 \ 47143f35ef5SPaul Beesley -C bp.tzc_400.diagnostics=1 \ 47243f35ef5SPaul Beesley -C cache_state_modelled=1 \ 47343f35ef5SPaul Beesley -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 47443f35ef5SPaul Beesley -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 47543f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 47643f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 47743f35ef5SPaul Beesley 47843f35ef5SPaul BeesleyRunning on the Cortex-A32 Base FVP (AArch32) with reset to BL1 entrypoint 47943f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 48043f35ef5SPaul Beesley 48143f35ef5SPaul BeesleyThe following ``FVP_Base_Cortex-A32x4`` model parameters should be used to 48243f35ef5SPaul Beesleyboot Linux with 4 CPUs using the AArch32 build of TF-A. 48343f35ef5SPaul Beesley 48443f35ef5SPaul Beesley.. code:: shell 48543f35ef5SPaul Beesley 48643f35ef5SPaul Beesley <path-to>/FVP_Base_Cortex-A32x4 \ 48743f35ef5SPaul Beesley -C pctl.startup=0.0.0.0 \ 48843f35ef5SPaul Beesley -C bp.secure_memory=1 \ 48943f35ef5SPaul Beesley -C bp.tzc_400.diagnostics=1 \ 49043f35ef5SPaul Beesley -C cache_state_modelled=1 \ 49143f35ef5SPaul Beesley -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ 49243f35ef5SPaul Beesley -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ 49343f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 49443f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 49543f35ef5SPaul Beesley 49643f35ef5SPaul Beesley 49743f35ef5SPaul BeesleyRunning on the AEMv8 Base FVP with reset to BL31 entrypoint 49843f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 49943f35ef5SPaul Beesley 50043f35ef5SPaul BeesleyThe following ``FVP_Base_RevC-2xAEMv8A`` parameters should be used to boot Linux 50143f35ef5SPaul Beesleywith 8 CPUs using the AArch64 build of TF-A. 50243f35ef5SPaul Beesley 50343f35ef5SPaul Beesley.. code:: shell 50443f35ef5SPaul Beesley 50543f35ef5SPaul Beesley <path-to>/FVP_Base_RevC-2xAEMv8A \ 50643f35ef5SPaul Beesley -C pctl.startup=0.0.0.0 \ 50743f35ef5SPaul Beesley -C bp.secure_memory=1 \ 50843f35ef5SPaul Beesley -C bp.tzc_400.diagnostics=1 \ 50943f35ef5SPaul Beesley -C cluster0.NUM_CORES=4 \ 51043f35ef5SPaul Beesley -C cluster1.NUM_CORES=4 \ 51143f35ef5SPaul Beesley -C cache_state_modelled=1 \ 51243f35ef5SPaul Beesley -C cluster0.cpu0.RVBAR=0x04010000 \ 51343f35ef5SPaul Beesley -C cluster0.cpu1.RVBAR=0x04010000 \ 51443f35ef5SPaul Beesley -C cluster0.cpu2.RVBAR=0x04010000 \ 51543f35ef5SPaul Beesley -C cluster0.cpu3.RVBAR=0x04010000 \ 51643f35ef5SPaul Beesley -C cluster1.cpu0.RVBAR=0x04010000 \ 51743f35ef5SPaul Beesley -C cluster1.cpu1.RVBAR=0x04010000 \ 51843f35ef5SPaul Beesley -C cluster1.cpu2.RVBAR=0x04010000 \ 51943f35ef5SPaul Beesley -C cluster1.cpu3.RVBAR=0x04010000 \ 52043f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl31-binary>"@0x04010000 \ 52143f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl32-binary>"@0xff000000 \ 52243f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 52343f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 52443f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 52543f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 52643f35ef5SPaul Beesley 52743f35ef5SPaul BeesleyNotes: 52843f35ef5SPaul Beesley 529*7285fd5fSManish Pandey- Position Independent Executable (PIE) support is enabled in this 530*7285fd5fSManish Pandey config allowing BL31 to be loaded at any valid address for execution. 53143f35ef5SPaul Beesley 53243f35ef5SPaul Beesley- Since a FIP is not loaded when using BL31 as reset entrypoint, the 53343f35ef5SPaul Beesley ``--data="<path-to><bl31|bl32|bl33-binary>"@<base-address-of-binary>`` 53443f35ef5SPaul Beesley parameter is needed to load the individual bootloader images in memory. 53543f35ef5SPaul Beesley BL32 image is only needed if BL31 has been built to expect a Secure-EL1 53643f35ef5SPaul Beesley Payload. For the same reason, the FDT needs to be compiled from the DT source 53743f35ef5SPaul Beesley and loaded via the ``--data cluster0.cpu0="<path-to>/<fdt>"@0x82000000`` 53843f35ef5SPaul Beesley parameter. 53943f35ef5SPaul Beesley 54043f35ef5SPaul Beesley- The ``FVP_Base_RevC-2xAEMv8A`` has shifted affinities and requires a 54143f35ef5SPaul Beesley specific DTS for all the CPUs to be loaded. 54243f35ef5SPaul Beesley 54343f35ef5SPaul Beesley- The ``-C cluster<X>.cpu<Y>.RVBAR=@<base-address-of-bl31>`` parameter, where 54443f35ef5SPaul Beesley X and Y are the cluster and CPU numbers respectively, is used to set the 54543f35ef5SPaul Beesley reset vector for each core. 54643f35ef5SPaul Beesley 54743f35ef5SPaul Beesley- Changing the default value of ``ARM_TSP_RAM_LOCATION`` will also require 54843f35ef5SPaul Beesley changing the value of 54943f35ef5SPaul Beesley ``--data="<path-to><bl32-binary>"@<base-address-of-bl32>`` to the new value of 55043f35ef5SPaul Beesley ``BL32_BASE``. 55143f35ef5SPaul Beesley 55243f35ef5SPaul Beesley 55343f35ef5SPaul BeesleyRunning on the AEMv8 Base FVP (AArch32) with reset to SP_MIN entrypoint 55443f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 55543f35ef5SPaul Beesley 55643f35ef5SPaul BeesleyThe following ``FVP_Base_AEMv8A-AEMv8A`` parameters should be used to boot Linux 55743f35ef5SPaul Beesleywith 8 CPUs using the AArch32 build of TF-A. 55843f35ef5SPaul Beesley 55943f35ef5SPaul Beesley.. code:: shell 56043f35ef5SPaul Beesley 56143f35ef5SPaul Beesley <path-to>/FVP_Base_AEMv8A-AEMv8A \ 56243f35ef5SPaul Beesley -C pctl.startup=0.0.0.0 \ 56343f35ef5SPaul Beesley -C bp.secure_memory=1 \ 56443f35ef5SPaul Beesley -C bp.tzc_400.diagnostics=1 \ 56543f35ef5SPaul Beesley -C cluster0.NUM_CORES=4 \ 56643f35ef5SPaul Beesley -C cluster1.NUM_CORES=4 \ 56743f35ef5SPaul Beesley -C cache_state_modelled=1 \ 56843f35ef5SPaul Beesley -C cluster0.cpu0.CONFIG64=0 \ 56943f35ef5SPaul Beesley -C cluster0.cpu1.CONFIG64=0 \ 57043f35ef5SPaul Beesley -C cluster0.cpu2.CONFIG64=0 \ 57143f35ef5SPaul Beesley -C cluster0.cpu3.CONFIG64=0 \ 57243f35ef5SPaul Beesley -C cluster1.cpu0.CONFIG64=0 \ 57343f35ef5SPaul Beesley -C cluster1.cpu1.CONFIG64=0 \ 57443f35ef5SPaul Beesley -C cluster1.cpu2.CONFIG64=0 \ 57543f35ef5SPaul Beesley -C cluster1.cpu3.CONFIG64=0 \ 57643f35ef5SPaul Beesley -C cluster0.cpu0.RVBAR=0x04002000 \ 57743f35ef5SPaul Beesley -C cluster0.cpu1.RVBAR=0x04002000 \ 57843f35ef5SPaul Beesley -C cluster0.cpu2.RVBAR=0x04002000 \ 57943f35ef5SPaul Beesley -C cluster0.cpu3.RVBAR=0x04002000 \ 58043f35ef5SPaul Beesley -C cluster1.cpu0.RVBAR=0x04002000 \ 58143f35ef5SPaul Beesley -C cluster1.cpu1.RVBAR=0x04002000 \ 58243f35ef5SPaul Beesley -C cluster1.cpu2.RVBAR=0x04002000 \ 58343f35ef5SPaul Beesley -C cluster1.cpu3.RVBAR=0x04002000 \ 58443f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl32-binary>"@0x04002000 \ 58543f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 58643f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 58743f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 58843f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 58943f35ef5SPaul Beesley 59043f35ef5SPaul Beesley.. note:: 591*7285fd5fSManish Pandey Position Independent Executable (PIE) support is enabled in this 592*7285fd5fSManish Pandey config allowing SP_MIN to be loaded at any valid address for execution. 59343f35ef5SPaul Beesley 59443f35ef5SPaul BeesleyRunning on the Cortex-A57-A53 Base FVP with reset to BL31 entrypoint 59543f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 59643f35ef5SPaul Beesley 59743f35ef5SPaul BeesleyThe following ``FVP_Base_Cortex-A57x4-A53x4`` model parameters should be used to 59843f35ef5SPaul Beesleyboot Linux with 8 CPUs using the AArch64 build of TF-A. 59943f35ef5SPaul Beesley 60043f35ef5SPaul Beesley.. code:: shell 60143f35ef5SPaul Beesley 60243f35ef5SPaul Beesley <path-to>/FVP_Base_Cortex-A57x4-A53x4 \ 60343f35ef5SPaul Beesley -C pctl.startup=0.0.0.0 \ 60443f35ef5SPaul Beesley -C bp.secure_memory=1 \ 60543f35ef5SPaul Beesley -C bp.tzc_400.diagnostics=1 \ 60643f35ef5SPaul Beesley -C cache_state_modelled=1 \ 60743f35ef5SPaul Beesley -C cluster0.cpu0.RVBARADDR=0x04010000 \ 60843f35ef5SPaul Beesley -C cluster0.cpu1.RVBARADDR=0x04010000 \ 60943f35ef5SPaul Beesley -C cluster0.cpu2.RVBARADDR=0x04010000 \ 61043f35ef5SPaul Beesley -C cluster0.cpu3.RVBARADDR=0x04010000 \ 61143f35ef5SPaul Beesley -C cluster1.cpu0.RVBARADDR=0x04010000 \ 61243f35ef5SPaul Beesley -C cluster1.cpu1.RVBARADDR=0x04010000 \ 61343f35ef5SPaul Beesley -C cluster1.cpu2.RVBARADDR=0x04010000 \ 61443f35ef5SPaul Beesley -C cluster1.cpu3.RVBARADDR=0x04010000 \ 61543f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl31-binary>"@0x04010000 \ 61643f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl32-binary>"@0xff000000 \ 61743f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 61843f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 61943f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 62043f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 62143f35ef5SPaul Beesley 62243f35ef5SPaul BeesleyRunning on the Cortex-A32 Base FVP (AArch32) with reset to SP_MIN entrypoint 62343f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 62443f35ef5SPaul Beesley 62543f35ef5SPaul BeesleyThe following ``FVP_Base_Cortex-A32x4`` model parameters should be used to 62643f35ef5SPaul Beesleyboot Linux with 4 CPUs using the AArch32 build of TF-A. 62743f35ef5SPaul Beesley 62843f35ef5SPaul Beesley.. code:: shell 62943f35ef5SPaul Beesley 63043f35ef5SPaul Beesley <path-to>/FVP_Base_Cortex-A32x4 \ 63143f35ef5SPaul Beesley -C pctl.startup=0.0.0.0 \ 63243f35ef5SPaul Beesley -C bp.secure_memory=1 \ 63343f35ef5SPaul Beesley -C bp.tzc_400.diagnostics=1 \ 63443f35ef5SPaul Beesley -C cache_state_modelled=1 \ 63543f35ef5SPaul Beesley -C cluster0.cpu0.RVBARADDR=0x04002000 \ 63643f35ef5SPaul Beesley -C cluster0.cpu1.RVBARADDR=0x04002000 \ 63743f35ef5SPaul Beesley -C cluster0.cpu2.RVBARADDR=0x04002000 \ 63843f35ef5SPaul Beesley -C cluster0.cpu3.RVBARADDR=0x04002000 \ 63943f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl32-binary>"@0x04002000 \ 64043f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ 64143f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<fdt>"@0x82000000 \ 64243f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ 64343f35ef5SPaul Beesley --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 64443f35ef5SPaul Beesley 64543f35ef5SPaul Beesley-------------- 64643f35ef5SPaul Beesley 6476f09bcceSlaurenw-arm*Copyright (c) 2019-2021, Arm Limited. All rights reserved.* 64843f35ef5SPaul Beesley 6496844c347SMadhukar Pappireddy.. _TB_FW_CONFIG for FVP: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tree/plat/arm/board/fvp/fdts/fvp_tb_fw_config.dts 65043f35ef5SPaul Beesley.. _Arm's website: `FVP models`_ 65143f35ef5SPaul Beesley.. _FVP models: https://developer.arm.com/products/system-design/fixed-virtual-platforms 65299a99eb4SZelalem.. _Linaro Release 20.01: http://releases.linaro.org/members/arm/platforms/20.01 65343f35ef5SPaul Beesley.. _Arm FVP website: https://developer.arm.com/products/system-design/fixed-virtual-platforms 654