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