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