xref: /aosp_15_r20/external/arm-trusted-firmware/docs/plat/arm/fvp-ve/index.rst (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong ParkArm Versatile Express
2*54fd6939SJiyong Park=====================
3*54fd6939SJiyong Park
4*54fd6939SJiyong ParkVersatile Express (VE) family development platform provides an ultra fast
5*54fd6939SJiyong Parkenvironment for prototyping Armv7 System-on-Chip designs. VE Fixed Virtual
6*54fd6939SJiyong ParkPlatforms (FVP) are simulations of Versatile Express boards. The platform in
7*54fd6939SJiyong ParkTrusted Firmware-A has been verified with Arm Cortex-A5 and Cortex-A7 VE FVP's.
8*54fd6939SJiyong ParkThis platform is tested on and only expected to work with single core models.
9*54fd6939SJiyong Park
10*54fd6939SJiyong ParkBoot Sequence
11*54fd6939SJiyong Park-------------
12*54fd6939SJiyong Park
13*54fd6939SJiyong ParkBL1 --> BL2 --> BL32(sp_min) --> BL33(u-boot) --> Linux kernel
14*54fd6939SJiyong Park
15*54fd6939SJiyong ParkHow to build
16*54fd6939SJiyong Park------------
17*54fd6939SJiyong Park
18*54fd6939SJiyong ParkCode Locations
19*54fd6939SJiyong Park~~~~~~~~~~~~~~
20*54fd6939SJiyong Park-  `U-boot <https://git.linaro.org/landing-teams/working/arm/u-boot.git>`__
21*54fd6939SJiyong Park
22*54fd6939SJiyong Park-  `Trusted Firmware-A <https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git>`__
23*54fd6939SJiyong Park
24*54fd6939SJiyong ParkBuild Procedure
25*54fd6939SJiyong Park~~~~~~~~~~~~~~~
26*54fd6939SJiyong Park
27*54fd6939SJiyong Park-  Obtain arm toolchain. The software stack has been verified with linaro 6.2
28*54fd6939SJiyong Park   `arm-linux-gnueabihf <https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/>`__.
29*54fd6939SJiyong Park   Set the CROSS_COMPILE environment variable to point to the toolchain folder.
30*54fd6939SJiyong Park
31*54fd6939SJiyong Park-  Fetch and build u-boot.
32*54fd6939SJiyong Park   Make the .config file using the command:
33*54fd6939SJiyong Park
34*54fd6939SJiyong Park   .. code:: shell
35*54fd6939SJiyong Park
36*54fd6939SJiyong Park      make ARCH=arm vexpress_aemv8a_aarch32_config
37*54fd6939SJiyong Park
38*54fd6939SJiyong Park   Make the u-boot binary for Cortex-A5 using the command:
39*54fd6939SJiyong Park
40*54fd6939SJiyong Park   .. code:: shell
41*54fd6939SJiyong Park
42*54fd6939SJiyong Park     make ARCH=arm SUPPORT_ARCH_TIMER=no
43*54fd6939SJiyong Park
44*54fd6939SJiyong Park   Make the u-boot binary for Cortex-A7 using the command:
45*54fd6939SJiyong Park
46*54fd6939SJiyong Park   .. code:: shell
47*54fd6939SJiyong Park
48*54fd6939SJiyong Park     make ARCH=arm
49*54fd6939SJiyong Park
50*54fd6939SJiyong Park
51*54fd6939SJiyong Park-  Build TF-A:
52*54fd6939SJiyong Park
53*54fd6939SJiyong Park   The make command for Cortex-A5 is:
54*54fd6939SJiyong Park
55*54fd6939SJiyong Park   .. code:: shell
56*54fd6939SJiyong Park
57*54fd6939SJiyong Park       make PLAT=fvp_ve ARCH=aarch32 ARM_ARCH_MAJOR=7 ARM_CORTEX_A5=yes \
58*54fd6939SJiyong Park       AARCH32_SP=sp_min FVP_HW_CONFIG_DTS=fdts/fvp-ve-Cortex-A5x1.dts \
59*54fd6939SJiyong Park       ARM_XLAT_TABLES_LIB_V1=1 BL33=<path_to_u-boot.bin> all fip
60*54fd6939SJiyong Park
61*54fd6939SJiyong Park   The make command for Cortex-A7 is:
62*54fd6939SJiyong Park
63*54fd6939SJiyong Park   .. code:: shell
64*54fd6939SJiyong Park
65*54fd6939SJiyong Park      make PLAT=fvp_ve ARCH=aarch32 ARM_ARCH_MAJOR=7 ARM_CORTEX_A7=yes \
66*54fd6939SJiyong Park      AARCH32_SP=sp_min FVP_HW_CONFIG_DTS=fdts/fvp-ve-Cortex-A7x1.dts  \
67*54fd6939SJiyong Park      BL33=<path_to_u-boot.bin> all fip
68*54fd6939SJiyong Park
69*54fd6939SJiyong ParkRun Procedure
70*54fd6939SJiyong Park~~~~~~~~~~~~~
71*54fd6939SJiyong Park
72*54fd6939SJiyong ParkThe following model parameters should be used to boot Linux using the build of
73*54fd6939SJiyong ParkTrusted Firmware-A made using the above make commands:
74*54fd6939SJiyong Park
75*54fd6939SJiyong Park  .. code:: shell
76*54fd6939SJiyong Park
77*54fd6939SJiyong Park    ./<path_to_model> <path_to_bl1.elf> \
78*54fd6939SJiyong Park          -C motherboard.flashloader1.fname=<path_to_fip.bin> \
79*54fd6939SJiyong Park          --data cluster.cpu0=<path_to_zImage>@0x80080000  \
80*54fd6939SJiyong Park          --data cluster.cpu0=<path_to_ramdisk>@0x84000000
81*54fd6939SJiyong Park
82*54fd6939SJiyong Park--------------
83*54fd6939SJiyong Park
84*54fd6939SJiyong Park*Copyright (c) 2019, Arm Limited. All rights reserved.*
85