version 1.63, 2018/11/24 16:05:32
|
version 1.86, 2020/02/15 08:00:06
|
Line 6 port_var2="earmeb"
|
Line 6 port_var2="earmeb"
|
port_var3="earmv6hf" |
port_var3="earmv6hf" |
port_var4="earmv7hf" |
port_var4="earmv7hf" |
port_var5="earmv7hfeb" |
port_var5="earmv7hfeb" |
|
port_var6="aarch64" |
port_var_install_notes="evbarm-earm" |
port_var_install_notes="evbarm-earm" |
cur_rel="8.0" |
cur_rel="9.0" |
future_rel="9.0" |
future_rel="10.0" |
changes_cur="8.0" |
changes_cur="9.0" |
changes_future="9.0" |
changes_future="10.0" |
thumbnail="http://www.netbsd.org/images/ports/evbarm/adi_brh.gif" |
thumbnail="//www.netbsd.org/images/ports/evbarm/adi_brh.gif" |
about=""" |
about=""" |
NetBSD/evbarm is the port of NetBSD to various evaluation and prototyping |
NetBSD/evbarm is the port of NetBSD to various evaluation and prototyping |
boards based on CPUs implementing the ARM architecture. NetBSD/evbarm also |
boards based on CPUs implementing the ARM architecture. NetBSD/evbarm also |
supports some specific embedded system products based on prototype board |
supports some specific embedded system products based on prototype board |
designs. |
designs. |
|
|
Matt Thomas is the maintainer of NetBSD/evbarm. |
|
|
|
### CPU types |
### CPU types |
|
|
The evbarm port can be built with a variety of CPU options, corresponding to the |
The evbarm port can be built with a variety of CPU options, corresponding to the |
Line 27 The evbarm port can be built with a vari
|
Line 26 The evbarm port can be built with a vari
|
There are |
There are |
four main variables: the word size, the instruction set, the |
four main variables: the word size, the instruction set, the |
endianness, and whether there is hardware floating point. By default |
endianness, and whether there is hardware floating point. By default |
the CPU type is "earm", and this implies aarch32 (32-bit), \todo cpu |
the CPU type is "earm", and this implies aarch32 (32-bit), earmv5 cpu |
architecture, little endian (el when explicitly stated), and soft |
architecture, little endian (el when explicitly stated), and soft |
(Emulated) floating point. Another example, suitable for Raspberry PI |
(Emulated) floating point. Another example, suitable for Raspberry PI |
2, is earmv7hf, which is aarch32, the v7 instruction set, little |
2, is earmv7hf, which is aarch32, the v7 instruction set, little |
Line 51 set and the aarch64 architecture, built
|
Line 50 set and the aarch64 architecture, built
|
(Note also that armv8 is the first architecture to support aarch64, so |
(Note also that armv8 is the first architecture to support aarch64, so |
this will not be an issue until at least armv9.) |
this will not be an issue until at least armv9.) |
|
|
#### ABI types |
### QEMU |
|
|
There are two basic ABIs on ARM. One, called oabi, assumed a |
See the [[NetBSD/evbarm under QEMU|qemu_arm]] page for instructions on how to get started with QEMU. |
particular kind of hardware floating point (FPA). This results in |
|
faulting any floating-point instructions for kernel emulation on a |
|
vast number of CPus, which is very slow. A newer one, called eabi, |
|
has two variants. Both have stricter alignment rules, tending to 8 |
|
byte rather than 4 bytes for 8-byte types (but actually read the specs |
|
if you care). The one without "hf" emulates floating point without |
|
causing traps/emulation, and "hf" uses VFP instructions, which are |
|
present on modern CPUs. See the |
|
[TS-7200](https://wiki.embeddedarm.com/wiki/EABI_vs_OABI) and |
|
[Debian](https://wiki.debian.org/ArmEabiPort) documentation. |
|
|
|
Now, EABI is normal, and OABI is crufty. The only real reason NetBSD |
|
retains OABI support is binary compatibility with older releases. The |
|
"arm" and "armeb" MACHINE_ARCH targets are OABI; the rest of the |
|
targets, all having "earm" are EABI. |
|
|
|
\todo CHECK THIS: The "aarch64" MACHINE_ARCH target is an EABI variant. |
|
|
|
### Relationship of MACHINE_ARCH to official ARM terminology |
|
|
|
Note that these are all little endian, and have big endian variants |
|
with a "eb" suffix. |
|
|
|
[[!table data=\"\"\" |
|
MACHINE_ARCH |bits | ARM architecture version |ABI |
|
arm |32 |? |oabi |
|
earm |32 |armv4 (effectively an alias) |eabi |
|
earmv4 |32 |armv4 (no thumb, so ok on strongarm) |eabi |
|
earmv5 |32 |armv5t |eabi |
|
earmv6 |32 |armv6 |eabi |
|
earmv7 |32 |armv7 |eabi |
|
aarch64 |64 |armv8 |\todo ? eabi |
|
\"\"\"]] |
|
|
|
\todo Explain why, if we have armv4, and this is confusing, we still have earm as a MACHINE_ARCH. |
|
|
|
\todo Explain why aarch64 is a MACHINE_ARCH, when it seems like it |
|
should be something like armv8hf_64. |
|
|
|
\todo Explain if MACHINE_ARCH values correspond to a particular |
|
argument to some CPU selection command in gcc (and/or clang). |
|
|
|
### Kernels and userland |
|
|
|
The evbarm userland can be used on any system that can run code of the |
|
CPU type used for the build. Typically, a particular board requires a |
|
kernel for that board. |
|
|
|
### anita and 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. |
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. |
|
|
Line 110 anita can be used to test builds. (In a
|
Line 62 anita can be used to test builds. (In a
|
- evbarm-aarch64 uses "qemu-system-aarch64 -M virt" |
- evbarm-aarch64 uses "qemu-system-aarch64 -M virt" |
- Information on how to test emulated versions of other specific hardware is welcome. |
- Information on how to test emulated versions of other specific hardware is welcome. |
|
|
### Board specific information |
### 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]] |
- [[Allwinner sunxi family SoCs|Allwinner]] |
- [[BeagleBone and BeagleBone Black|BeagleBone]] |
- [[BeagleBone, BeagleBone Black, and PocketBeagle|BeagleBone]] |
- [[NVIDIA Tegra|Tegra]] |
- [[NVIDIA Tegra|Tegra]] |
- [[ODROID C1 and C1+|ODROID-C1]] |
- [[ODROID C1 and C1+|ODROID-C1]] |
- [[Raspberry Pi 1, 2 and 3|Raspberry Pi]] |
- [[Raspberry Pi 1, 2 and 3|Raspberry Pi]] |
|
- [[RockChip SoCs|RockChip]] |
|
|
""" |
### SSH configuration for installtion |
|
|
|
The default configuration will connect to the local network via DHCP and |
|
run an SSH server. In order to use the SSH server, we must configure |
|
users. This can be done by writing to the SD card's MS-DOS partition. |
|
|
|
Create a creds.txt file and use: |
|
|
|
useradd user password |
|
|
|
<!--TODO: Additional configuration options are available on creds_msdos.8--> |
|
|
|
""" |
supported_hardware=""" |
supported_hardware=""" |
|
|
**NOTE**: This list is incomplete. For a full list of configurations, please see the [evbarm kernel configs](http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/evbarm/conf/) directory in CVS. |
**NOTE**: This list is incomplete. For a full list of boards, please see the [GENERIC DTS files](http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/arch/evbarm/conf/GENERIC). |
|
|
[[!toc startlevel=3]] |
[[!toc startlevel=3]] |
|
|
Line 321 Support for NVIDIA [[Tegra]] K1 SoCs is
|
Line 289 Support for NVIDIA [[Tegra]] K1 SoCs is
|
### Raspberry Pi Foundation **Raspberry Pi**/**Raspberry Pi 2**/**Raspberry Pi 3** |
### Raspberry Pi Foundation **Raspberry Pi**/**Raspberry Pi 2**/**Raspberry Pi 3** |
The [[Raspberry Pi]] is a low-cost credit-card-sized computer from the Raspberry Pi Foundation. The Raspberry Pi, Pi 2, and Pi 3 are supported. |
The [[Raspberry Pi]] is a low-cost credit-card-sized computer from the Raspberry Pi Foundation. The Raspberry Pi, Pi 2, and Pi 3 are supported. |
|
|
|
See the [[Raspberry Pi 1, 2 and 3|Raspberry Pi]] page for much more information. |
|
|
### Samsung **SMDK2410** |
### Samsung **SMDK2410** |
|
|
The SMDK2410 is the reference platform for the Samsung **S3C2410** processor, |
The SMDK2410 is the reference platform for the Samsung **S3C2410** processor, |