File:  [NetBSD Developer Wiki] / wikisrc / ports / evbarm.mdwn
Revision 1.88: download - view: text, annotated - select for diffs
Tue Sep 15 07:21:58 2020 UTC (2 months, 2 weeks ago) by nia
Branches: MAIN
CVS tags: HEAD
remove pre-fdt nonsense, update link to supported boards to a link that works

restructure page slightly to prioritize important information

[[!template id=port
port="evbarm"
port_alt="arm"
port_var1="earm"
port_var2="earmeb"
port_var3="earmv6hf"
port_var4="earmv7hf"
port_var5="earmv7hfeb"
port_var6="aarch64"
port_var_install_notes="evbarm-earm"
cur_rel="9.0"
future_rel="10.0"
changes_cur="9.0"
changes_future="10.0"
thumbnail="//www.netbsd.org/images/ports/evbarm/adi_brh.gif"
about="""
NetBSD/evbarm is the port of NetBSD to various evaluation and prototyping
boards based on CPUs implementing the ARM architecture. NetBSD/evbarm also
supports some specific embedded system products based on prototype board
designs.

### CPU types

The evbarm port can be built with a variety of CPU options, corresponding to the
[large array of ARM CPU architectures](https://en.wikipedia.org/wiki/ARM_architecture#Cores).
There are
four main variables: the word size, the instruction set, the
endianness, and whether there is hardware floating point.  By default
the CPU type is "earm", and this implies aarch32 (32-bit), earmv5 cpu
architecture, little endian (el when explicitly stated), and soft
(Emulated) floating point.  Another example, suitable for Raspberry PI
2, is earmv7hf, which is aarch32, the v7 instruction set, little
endian, and hardware floating point.

Typically, various boards are best compiled with a CPU type that
matches the board's CPU and floating point support, but generally a
lower CPU instruction set version is workable on a newer board.  See
build.sh and look for aliases for the evbarm port.

Through NetBSD 8, the evbarm port has supported exclusively the
aarch32 (32-bit CPU) sub-family of the ARM architecture.  Some
processors, such as many supporting the armv8 CPU architecture, also
support a 64-bit instruction set, referred to as aarch64.  This is
sometimes referred to as a distinct port, [[NetBSD/aarch64|aarch64]],
with code in src/sys/arch/aarch64, but it is built as the evbarm port
with aarch64 cpu type, and available as the alias evbarm64.

Note that MACHINE_ARCH=aarch64 currently refers to the A64 instruction
set and the aarch64 architecture, built for the armv8 architecture.
(Note also that armv8 is the first architecture to support aarch64, so
this will not be an issue until at least armv9.)

### armbsd.org builds

NetBSD developer Jared McNeill provides [builds of NetBSD 9 and -current for a vast variety of hardware.](https://www.armbsd.org/)   In addition to the standard build, these images have board-specific U-Boot contents.  See also /usr/pkgsrc/sysutils/u-boot*.

### Board specific information (often including installation information)

 - [[Allwinner sunxi family SoCs|Allwinner]]
 - [[BeagleBone, BeagleBone Black, and PocketBeagle|BeagleBone]]
 - [[NVIDIA Tegra|Tegra]]
 - [[ODROID C1 and C1+|ODROID-C1]]
 - [[Raspberry Pi 1, 2 and 3|Raspberry Pi]]
 - [[RockChip SoCs|RockChip]]
 - [[Terasic DE0 Nano-SoC|Cyclone5]]

**NOTE**: This list is incomplete. For a full list of supported boards, please see the list of [32-bit](https://github.com/NetBSD/src/blob/netbsd-9/sys/arch/evbarm/conf/GENERIC#L18) and [64-bit](https://github.com/NetBSD/src/blob/netbsd-9/sys/arch/evbarm/conf/GENERIC64#L20) device trees.

### QEMU

See the [[NetBSD/evbarm under QEMU|qemu_arm]] page for instructions on how to get started with QEMU.

### anita

anita can be used to test builds.  (In addition to anita, install qemu and dtb-arm-vexpress from pkgsrc.)   The release subdirectory should follow the naming convention on the autobuild cluster, used below.

 - evbarm-earmv7hf uses "qemu-system-arm -M vexpress-a15"
 - evbarm-aarch64 uses "qemu-system-aarch64 -M virt"
 - Information on how to test emulated versions of other specific hardware is welcome.

[[!tag tier1port]]

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb