Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Arm Research
    • DesignStart
    • Education Hub
    • Graphics and Gaming
    • High Performance Computing
    • Innovation
    • Multimedia
    • Open Source Software and Platforms
    • Physical
    • Processors
    • Security
    • System
    • Software Tools
    • TrustZone for Armv8-M
    • 中文社区
  • Blog
    • Artificial Intelligence
    • Automotive
    • Healthcare
    • HPC
    • Infrastructure
    • Innovation
    • Internet of Things
    • Machine Learning
    • Mobile
    • Smart Homes
    • Wearables
  • Forums
    • All developer forums
    • IP Product forums
    • Tool & Software forums
  • Activity
  • Support
    • Open a support case
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • More
  • Cancel
Open Source Software and Platforms
  • Developer Community
  • Tools and Software
  • Open Source Software and Platforms
  • Jump...
  • Cancel
Open Source Software and Platforms
Wiki FVPs
  • Android blog
  • Forums
  • Help
  • Jump...
  • Cancel
  • New
  • About this wiki
  • Supported platforms
  • Obtaining support
  • +Arm Reference Platforms deliverables
  • -A-class platforms
    • +Juno
    • -FVPs
      • Run the Arm Platforms deliverables on an FVP
      • Using pre-"Rev C" AEM FVPs
    • +System Guidance for Infrastructure (SGI)
    • +System Guidance for Mobile (SGM)
    • Corstone-700
    • Cortex-A5 DesignStart
    • Neoverse N1 SDP
    • Neoverse Reference Designs
    • +Legacy platforms
  • +M-class platforms
  • +FPGA prototyping boards
  • +Open source software

You are currently reviewing an older revision of this page.

  • History View current version

Armv8-A FVPs

Getting started with your Armv8-A FVP

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.

 

Preface

The current Arm Platforms release is 18.07; see here for release notes and binary artefact direct download links.

NOTE:

  • Release 18.01 REMOVED support for pre-"Rev C" Architecture Envelope Models (AEMs) i.e. version older than 11.3.30
  • FVP model users will need to go here on developer.arm.com to download the latest Architecture Envelope Model FVP binary
  • See here for more information

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

  • 64-bit Linaro `ack-armlt' Android Common Kernel plus one of the following filesystems:
    • Android
    • OpenEmbedded Minimal
    • OpenEmbedded LAMP
    • BusyBox
  • 64-bit Linaro `latest-armlt' plus one of the following filesystems:
    • OpenEmbedded Minimal
    • OpenEmbedded LAMP
    • BusyBox
  • 32-bit Linaro `ack-armlt' Android Common Kernel plus one of the following filesystems:
    • OpenEmbedded ALIP
    • BusyBox
  • 32-bit Linaro `latest-armlt' plus one of the following filesystems:
    • OpenEmbedded ALIP
    • BusyBox
  • 64-bit EDK2-based UEFI environment
    (No Linux kernel or filesystem included)

This document describes how to:

  • Obtain software sources and related binary artefacts
  • Build the software sources
  • Install and run the resulting binaries on the Armv8 Foundation Model or AEMv8-A Base Platform FVP.

A set of prebuilt binaries are also available for a limited subset of configurations.

For any problems with your FVP please contact support@arm.com.

 

Prerequisites

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 "john.doe@example.com"
$ git config --global color.diff auto

 

Initialising a workspace

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 initialization script to your workspace and run it:

$ python3 armplat_1807.py

The script will guide you through the process of initialising your workspace, automatically downloading all relevant source files and required binaries.

 

Building from source

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

If building for a pre-"Rev C" FVP i.e. version older than 11.3.30, you'll need to add the `-a true' flag:

$ ./build-scripts/build-all.sh all -a true

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.

 

Running the software

Note paths for environment variables must be absolute; relative paths are not supported.

To run the software, first make the FVP binary visible to the model scripts:

$ export MODEL=/path/to/FVP_Base_AEMv8A-AEMv8A

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:

$ DISK=/path/to/<workspace>/<filesystem>.img
$ chmod a+w $DISK

How you then proceed will depend on whether you built from source or are using a prebuilt configuration.

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/
$ ./run_model.sh

Note: FVP32 users will also need to pass the `--aarch32' flag to `run_model.sh'.

Built from source

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/

Note: FVP32 users will also need to pass the `--aarch32' flag to `run_model.sh'.