| # Running Hafnium under Arm FVP |
| |
| Arm offers a series of emulators known as Fixed Virtual Platforms (FVPs), which |
| simulate various processors. They are generally more accurate to the hardware |
| than QEMU, at the cost of being considerably slower. We support running |
| [tests](Testing.md) on the FVP as well as QEMU. |
| |
| ## Set up |
| |
| 1. Download the |
| [Armv8-A Base Platform FVP](https://developer.arm.com/products/system-design/fixed-virtual-platforms) |
| from Arm. |
| 1. Unzip it to a directory called `fvp` alongside the root directory of your |
| Hafnium checkout. |
| |
| ## Running tests |
| |
| To run tests with the FVP instead of QEMU, from the root directory of your |
| Hafnium checkout: |
| |
| ```shell |
| $ make && kokoro/test.sh --fvp |
| ``` |
| |
| See the `fvp` function in |
| [`hftest.py`](http://cs/hafnium/test/hftest/hftest.py?q=symbol:fvp) for details |
| on how this works. |
| |
| ## Other resources |
| |
| When running tests under the FVP we also use a prebuilt version of TF-A, which |
| is checked in under |
| [`prebuilts/linux-aarch64/arm-trusted-firmware/`](https://hafnium.googlesource.com/hafnium/prebuilts/+/refs/heads/master/linux-aarch64/arm-trusted-firmware/). |
| The |
| [README](https://hafnium.googlesource.com/hafnium/prebuilts/+/refs/heads/master/linux-aarch64/arm-trusted-firmware/README.md) |
| there has details on how it was built. The source code is available from the |
| [Arm Trusted Firmware site](https://developer.trustedfirmware.org/dashboard/view/6/). |
| |
| Documentation of the FVP (including memory maps) is |
| [available from Arm](https://static.docs.arm.com/100966/1101/fast_models_fvp_rg_100966_1101_00_en.pdf). |