ARM64

FreeBSD/arm64 is the FreeBSD port to the 64-bit ARM architecture, also known as AArch64 or ARMv8. FreeBSD 11.0 includes out-of-the-box support for ARMv8, and over 20,000 packages are available in the 3rd party software collection. Cavium's ThunderX is the initial reference platform for the FreeBSD/arm64 port.

See also the state of ports/packages on arm64.

Kyua tracking.

Source

The basic FreeBSD/arm64 support is available in FreeBSD-CURRENT and FREEBSD-11-STABLE. (For reference, also see the history of FreeBSD/arm64 commits).

head build status: https://ci.freebsd.org/job/FreeBSD-head-aarch64-build/

STABLE-11 build status: https://ci.freebsd.org/job/FreeBSD-stable-11-aarch64-build/

Building

Build script

arm64_build.sh

World

The standard buildworld sequence works:

export MAKEOBJDIRPREFIX=<path-to-suitable-objdir>
make buildworld TARGET=arm64

Kernel

The build sequence for the kernel is a fairly standard one:

export MAKEOBJDIRPREFIX=<path-to-suitable-objdir>
make buildkernel TARGET=arm64

This results in an image called 'kernel' created in:

$MAKEOBJDIRPREFIX/arm64.aarch64/<svn-checkout-path**>/sys/GENERIC

** See the 'Source' section above for the svn-checkout-path.

Running

ARM Foundation Model

The ARMv8 Foundation Model is available from ARM. You must read and accept a click-through license to obtain it. The Foundation model may be run in a Linux virtual machine, or by using the experimental 64-bit Linux emulation support.

AndrewTurner has a GitHub repo set up to help run on the Foundation Model.

Cavium ThunderX

Cavium's ThunderX is the initial reference target platform for FreeBSD/arm64.

FreeBSD 11.0 supports the ThunderX EVB (evaluation board) and CRB (customer reference board) in SMP mode (48 CPU cores). SATA drives, PCIe expansion cards, and the on-chip network interface are fully supported.

FreeBSD is available on the 2 socket, 96 core Type 2A ThunderX systems at Packet.net.

Demo of SMP kernel on ThunderX

Gem5

Gem5 instructions

HiKey

The HiKey is a low cost (~$75 - $100 + shipping) ARMv8 board from Linaro.

Pine64

Pine64 is pretty well supported other than HDMI. jmcneill@ is poking at HDMI.

QEMU

QEMU now has aarch64 system mode emulation support. It is available by installing the qemu-devel package or emulators/qemu-devel port.

The Release Engineers build periodic snapshots, including for arm64 on QEMU. Instructions on where to find these are sent to the shapshots mailing list.

See arm64/QEMU for further details on booting FreeBSD/arm64 in QEMU, including links to AArch64 EFI firmware files that are not included with the QEMU port.

Raspberry Pi 3 (RPI3)

This section has moved to arm64/rpi3

SoftIron Overdrive 3000

FreeBSD mostly works, other than the internal dual 10G networking, however support for this is being worked on. In the interim PCIe NICs work.

Screenshot

arm64_userland.png

Known Limitations

Bugs

Search for open PRs with Hardware = arm64.

arm64 (last edited 2017-11-21 02:25:01 by EdMaste)