1.. _fvp_base_revc_2xaemv8a:
2
3ARM BASE RevC AEMv8A Fixed Virtual Platforms
4############################################
5
6Overview
7********
8
9This board configuration will use ARM Fixed Virtual Platforms(FVP) to emulate
10a generic Armv8-A 64-bit hardware platform.
11
12This configuration provides support for a generic Armv8-A 64-bit CPU and
13these devices:
14
15* GICv3 interrupt controller
16* ARM architected (Generic) timer
17* PL011 UART controller
18
19Hardware
20********
21
22Supported Features
23==================
24
25The following hardware features are supported:
26
27+-----------------------+------------+----------------------+
28| Interface             | Controller | Driver/Component     |
29+=======================+============+======================+
30| GICv3                 | on-chip    | interrupt controller |
31+-----------------------+------------+----------------------+
32| PL011 UART            | on-chip    | serial port          |
33+-----------------------+------------+----------------------+
34| ARM GENERIC TIMER     | on-chip    | system clock         |
35+-----------------------+------------+----------------------+
36| SMSC_91C111           | on-chip    | ethernet device      |
37+-----------------------+------------+----------------------+
38
39The kernel currently does not support other hardware features on this platform.
40
41Devices
42========
43
44System Clock
45------------
46
47This board configuration uses a system clock frequency of 100 MHz.
48
49Serial Port
50-----------
51
52This board configuration uses a single serial communication channel with the
53UART0.
54
55Known Problems or Limitations
56==============================
57
58Programming and Debugging
59*************************
60
61Environment
62===========
63
64First, set the ``ARMFVP_BIN_PATH`` environment variable before building.
65Optionally, set ``ARMFVP_EXTRA_FLAGS`` to pass additional arguments to the FVP.
66
67.. code-block:: bash
68
69   export ARMFVP_BIN_PATH=/path/to/fvp/directory
70
71Programming
72===========
73
74Use this configuration to build basic Zephyr applications and kernel tests in the
75ARM FVP emulated environment, for example, with the :zephyr:code-sample:`synchronization` sample:
76
77.. zephyr-app-commands::
78   :zephyr-app: samples/synchronization
79   :host-os: unix
80   :board: fvp_base_revc_2xaemv8a
81   :goals: build
82
83This will build an image with the synchronization sample app.
84Then you can run it with ``west build -t run``.
85
86Running Zephyr at EL1NS
87***********************
88
89In order to run Zephyr as EL1NS with ``CONFIG_ARMV8_A_NS``, you'll need a proper
90Trusted Firmware loaded in the FVP model.
91
92The ARM TF-A for FVP can be used to run Zephyr as preloaded BL33 payload.
93
94Checkout and Build the TF-A:
95
96.. code-block:: console
97
98   git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git --depth 1
99   cd trusted-firmware-a/
100   make PLAT=fvp PRELOADED_BL33_BASE="0x88000000" all fip
101
102then export the :envvar:`ARMFVP_BL1_FILE` and :envvar:`ARMFVP_FIP_FILE` environment variables:
103
104.. code-block:: console
105
106   export ARMFVP_BL1_FILE=<path/to/tfa-a/build/fvp/release/bl1.bin>
107   export ARMFVP_FIP_FILE=<path/to/tfa-a/build/fvp/release/fip.bin>
108
109Debugging
110=========
111
112Refer to the detailed overview about :ref:`application_debugging`.
113
114Networking
115==========
116
117References
118**********
119
120.. target-notes::
121
1221. (ID070919) Arm® Architecture Reference Manual - Armv8, for Armv8-A architecture profile
1232. AArch64 Exception and Interrupt Handling
1243. https://developer.arm.com/tools-and-software/simulation-models/fixed-virtual-platforms
125