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