1# Running Hafnium under Arm FVP
2
3Arm offers a series of emulators known as Fixed Virtual Platforms (FVPs), which
4simulate various processors. They are generally more accurate to the hardware
5than QEMU, at the cost of being considerably slower. We support running
6[tests](Testing.md) on the FVP as well as QEMU.
7
8## Set up
9
101.  Download the
11    [Armv8-A Base Platform FVP](https://developer.arm.com/products/system-design/fixed-virtual-platforms)
12    from Arm.
131.  Unzip it to a directory called `fvp` alongside the root directory of your
14    Hafnium checkout.
15
16## Running tests
17
18To run tests with the FVP instead of QEMU, from the root directory of your
19Hafnium checkout:
20
21```shell
22$ make && kokoro/test.sh --fvp
23```
24
25See the `FvpDriver` class in [`hftest.py`](../test/hftest/hftest.py) for details
26on how this works.
27
28## Other resources
29
30When running tests under the FVP we also use a prebuilt version of TF-A, which
31is checked in under
32[`prebuilts/linux-aarch64/arm-trusted-firmware/`](https://review.trustedfirmware.org/plugins/gitiles/hafnium/prebuilts/+/refs/heads/master/linux-aarch64/arm-trusted-firmware/).
33The
34[README](https://review.trustedfirmware.org/plugins/gitiles/hafnium/prebuilts/+/refs/heads/master/linux-aarch64/arm-trusted-firmware/README.md)
35there has details on how it was built. The source code is available from the
36[Arm Trusted Firmware site](https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git).
37
38Documentation of the FVP (including memory maps) is
39[available from Arm](https://developer.arm.com/docs/100966/latest).
40