.. _fvp_base_revc_2xaemv8a: ARM BASE RevC AEMv8A Fixed Virtual Platforms ############################################ Overview ******** This board configuration will use ARM Fixed Virtual Platforms(FVP) to emulate a generic Armv8-A 64-bit hardware platform. This configuration provides support for a generic Armv8-A 64-bit CPU and these devices: * GICv3 interrupt controller * ARM architected (Generic) timer * PL011 UART controller Hardware ******** Supported Features ================== The following hardware features are supported: +-----------------------+------------+----------------------+ | Interface | Controller | Driver/Component | +=======================+============+======================+ | GICv3 | on-chip | interrupt controller | +-----------------------+------------+----------------------+ | PL011 UART | on-chip | serial port | +-----------------------+------------+----------------------+ | ARM GENERIC TIMER | on-chip | system clock | +-----------------------+------------+----------------------+ | SMSC_91C111 | on-chip | ethernet device | +-----------------------+------------+----------------------+ The kernel currently does not support other hardware features on this platform. Devices ======== System Clock ------------ This board configuration uses a system clock frequency of 100 MHz. Serial Port ----------- This board configuration uses a single serial communication channel with the UART0. Known Problems or Limitations ============================== Programming and Debugging ************************* Environment =========== First, set the ``ARMFVP_BIN_PATH`` environment variable before building. Optionally, set ``ARMFVP_EXTRA_FLAGS`` to pass additional arguments to the FVP. .. code-block:: bash export ARMFVP_BIN_PATH=/path/to/fvp/directory Programming =========== Use this configuration to build basic Zephyr applications and kernel tests in the ARM FVP emulated environment, for example, with the :zephyr:code-sample:`synchronization` sample: .. zephyr-app-commands:: :zephyr-app: samples/synchronization :host-os: unix :board: fvp_base_revc_2xaemv8a :goals: build This will build an image with the synchronization sample app. Then you can run it with ``west build -t run``. Running Zephyr at EL1NS *********************** In order to run Zephyr as EL1NS with ``CONFIG_ARMV8_A_NS``, you'll need a proper Trusted Firmware loaded in the FVP model. The ARM TF-A for FVP can be used to run Zephyr as preloaded BL33 payload. Checkout and Build the TF-A: .. code-block:: console git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git --depth 1 cd trusted-firmware-a/ make PLAT=fvp PRELOADED_BL33_BASE="0x88000000" all fip then export the ``ARMFVP_BL1_FILE` and ``ARMFVP_FIP_FILE`` environment variables: .. code-block:: console export ARMFVP_BL1_FILE= export ARMFVP_FIP_FILE= Debugging ========= Refer to the detailed overview about :ref:`application_debugging`. Networking ========== References ********** 1. (ID070919) ArmĀ® Architecture Reference Manual - Armv8, for Armv8-A architecture profile 2. AArch64 Exception and Interrupt Handling 3. https://developer.arm.com/tools-and-software/simulation-models/fixed-virtual-platforms