Linaro Engineering: ARMv8 activity

Linaro is making early ARMv8 images available to interested developers. For a primer on the ARMv8 architecture, the AArch64 execution state and the A64 instruction set, please visit this ARM portal:

http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php

While there is currently no ARMv8 hardware available, ARM and Linaro have developed support for AArch64/A64 against virtual platforms and started sending the resulting patches to various open source projects.

With the Linaro provided downloads and with ARM’s Fast Models virtual platform, you may boot a virtual ARMv8 system and run 64-bit binaries. These downloads are currently in beta, but they should just work and we are looking towards including them as part of our monthly releases.

Downloading assets

Prepare a working directory:

mkdir ~/linaro-armv8
cd ~/linaro-armv8

Download boot image:

wget http://releases.linaro.org/13.05/openembedded/aarch64/img-foundation.axf

Download and extract disk image:

wget http://releases.linaro.org/13.05/openembedded/aarch64/vexpress64-openembedded_lamp-armv8_20130526-344.img.gz
gunzip vexpress64-openembedded_lamp-armv8_20130526-344.img.gz

Fast Models are ARM’s software to provide a full virtual ARMv8 system on an x86-64 machine (there is no 32-bit x86 version).  Linaro images will work with both the free to download ARMv8 Foundation model and with commercial Versatile Express model (AEMv8 VE model).

The following instructions are for the ARMv8 Foundation model which you may obtain from ARM at:

http://www.arm.com/fvp

Unpack the model in a directory of your choice, for instance in your home directory:

cd ~/linaro-armv8
tar xvf ~/Downloads/FM000-KT-00035-r0p8-44rel23.tgz

Running the system

Run the model with:

~/linaro-armv8/Foundation_v8pkg/Foundation_v8 --image ~/linaro-armv8/img-foundation.axf --block-device ~/linaro-armv8/vexpress64-openembedded_lamp-armv8_20130526-344.img --network=nat

After a couple of minutes, you should get a xterm window displaying boot progress, and subsequently a login prompt should show up; login is “root”.

Congratulations, that’s it!  You should now have a virtual ARMv8 system running; try running:

uname -a

Going further

Next you could consider:

Creating an image

Linaro offers various pre-built images (root filesystems and boot files for models) built with OpenEmbedded. Download one of the root filesystems, for instance the “lamp” one, and download the support files for the Foundation and Versatile Express 64-bit platforms (hardware pack):

mkdir ~/linaro-armv8
cd ~/linaro-armv8
wget http://releases.linaro.org/13.05/openembedded/aarch64/hwpack_linaro-vexpress64-rtsm_20130526-344_arm64_supported.tar.gz
wget http://releases.linaro.org/13.05/openembedded/aarch64/linaro-image-lamp-genericarmv8-20130520-309.rootfs.tar.gz

To combine boot support files (hardware packs contain kernels, device trees etc.) with a root filesystem, you’ll need to install a very recent version of Linaro Image Tools which adds support for these Fast Models platforms; you may get a pre-built package from the Linaro Tools PPA:

https://launchpad.net/~linaro-maintainers/+archive/tools

Add the PPA to your system and install the linaro-image-tools package with:

sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get update
sudo apt-get install linaro-image-tools

Generate a 2 GiB SD card image (it should be enough for larger images):

cd ~/linaro-armv8
linaro-media-create --dev fastmodel --output-directory fastmodel --image_size 2000M --hwpack ~/linaro-armv8/hwpack_linaro-vexpress64-rtsm_20130526-344_arm64_supported.tar.gz --binary ~/linaro-armv8/linaro-image-lamp-genericarmv8-20130520-309.rootfs.tar.gz

Engineering Builds

 NameVersionReleaseDownloads
OpenEmbedded (LAMP) 2013.05 13.05
OpenEmbedded (Source) 2013.05 13.05
Versatile Express 64-bit (Support files) 2013.05 13.05

Components

Toolchain

We provide pre-built versions of Linaro GCC and Linaro GDB that target either a Linaro Engineering Build or a bare-metal target.

NameVersionReleaseDownloads
gcc-linaro 4.8 (Aarch64, GNU/Linux) 4.8-2013.05 13.05
gcc-linaro 4.7 (Aarch64, GNU/Linux) 4.7-2013.04 13.04