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