You are currently reviewing an older revision of this page.
Welcome to the Arm Development Platforms Community wiki.
The instructions on this page detail how to download and run a full software stack on the Armv8 Foundation Model or AEMv8-A Base Platform FVP, including Arm Trusted Firmware and either an EDK2-based UEFI environment or a Linux kernel plus filesystem booted via U-Boot.
The current Linaro release is 17.10; see here for release notes and binary artefact direct download links.
The Arm software images contained in this release are distributed according to the EULA.
This software release supports a number of different software stacks, each of which have been validated on the Juno platform. These software stacks include
This document describes how to:
A set of prebuilt binaries are also available for a limited subset of configurations.
For any problems with your FVP please contact email@example.com.
These instructions assume your host PC is running Ubuntu Linux 16.04.1 LTS.Windows users may also follow these instructions but will only be able to use prebuilt configurations.
A number of prerequisite packages will need to be installed. The workspace initialization script will automatically detect and list any missing prerequisite packages.
If building from source you will need to configure git's `user.name' and `user.email' attributes:
$ git config --global user.name "John Doe"
$ git config --global user.email "firstname.lastname@example.org"
Create and enter a new directory that will be your workspace. The path to this directory will be referred to as `<workspace>' in these instructions.
Next download the workspace initialisation script to your workspace and run it:
$ python3 workspace_1710.py
The script will guide you through the process of initialising your workspace, automatically downloading all relevant source files and required binaries.
You can skip this section if you chose to use a prebuilt configuration when running the script.
To clean, build, and package the software:
$ ./build-scripts/build-all.sh all
You can also individually perform each of these steps:
$ ./build-scripts/build-all.sh clean
$ ./build-scripts/build-all.sh build
$ ./build-scripts/build-all.sh package
You can invoke a particular component's build script in the same way in order to build just that component rather than the whole software stack, for example `./build-scripts/build-linux.sh' targets just the Linux kernel.
To run the software, first make the FVP binary visible to the model scripts:
$ export MODEL=/path/to/FVP_Base_AEMv8A-AEMv8A
Note: The path must be absolute; relative paths are not supported.
If you chose to use Android or one of the OpenEmbedded filesystems, the workspace initialisation script will have placed the filesystem image in the root of `<workspace>'. You will need to make this filesystem image writeable, and also make it visible to the model scripts:
$ chmod a+w $DISK
How you then proceed will depend on whether you built from source or are using a prebuilt configuration.
Simply run the script in the `<workspace>/<prebuilt>/' directory.
For example for a `latest-armlt' + BusyBox prebuilt configuration:
$ cd <workspace>fvp-latest-busybox-uboot/
Note: FVP32 users will also need to pass the `--aarch32' flag to `run_model.sh'.
You will need to run the script found in the `<workspace>/<model-scripts>/' directory, pointing it at the binaries in `<workspace>/<output>/' corresponding to your chosen configuration.
For example for an `latest-armlt' + BusyBox configuration:
$ <workspace>/model-scripts/run_model.sh <workspace>/output/fvp/fvp-busybox/uboot/