version 1.25, 2015/10/08 06:42:53
|
version 1.69, 2018/12/23 02:46:57
|
Line 1
|
Line 1
|
[[!template id=port |
[[!template id=port |
port="evbarm" |
port="evbarm" |
port_alt="arm" |
port_alt="arm" |
cur_rel="7.0" |
port_var1="earm" |
future_rel="7.0" |
port_var2="earmeb" |
changes_cur="6.0" |
port_var3="earmv6hf" |
changes_future="7.0" |
port_var4="earmv7hf" |
|
port_var5="earmv7hfeb" |
|
port_var_install_notes="evbarm-earm" |
|
cur_rel="8.0" |
|
future_rel="9.0" |
|
changes_cur="8.0" |
|
changes_future="9.0" |
thumbnail="http://www.netbsd.org/images/ports/evbarm/adi_brh.gif" |
thumbnail="http://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 |
Line 13 supports some specific embedded system p
|
Line 19 supports some specific embedded system p
|
designs. |
designs. |
|
|
Matt Thomas is the maintainer of NetBSD/evbarm. |
Matt Thomas is the maintainer of NetBSD/evbarm. |
|
|
|
### 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.) |
|
|
|
#### ABI types |
|
|
|
There are two basic ABIs on ARM. One, called oabi, assumed a |
|
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. Unless otherwise noted, all use the A32 or |
|
aarch32 instruction set. |
|
|
|
[[!table data=<<EOT |
|
MACHINE_ARCH |bits | ARM architecture version |ABI |
|
arm |32 |\todo ? |oabi |
|
earm |32 |alias for earmv5 (\todo why?) |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 in aarch64 mode |\todo ? eabi |
|
EOT]] |
|
|
|
\todo Explain why, if we have armv5, 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 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. |
|
|
|
### Board specific 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]] |
|
|
""" |
""" |
|
|
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 configurations, please see the [evbarm kernel configs](http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/evbarm/conf/) directory in CVS. |
|
|
[[!toc startlevel=3]] |
[[!toc startlevel=3]] |
|
|
### ADI Engineering **BRH** ("Big Red Head") |
### ADI Engineering **BRH** ("Big Red Head") |
|
|
The BRH is an evaluation and development platform for the Intel **i80200** |
The BRH is an evaluation and development platform for the Intel **i80200** |
XScale processor. The BRH is based on ADI's **BECC** ("Big Endian Companion |
XScale processor. The BRH is based on ADI's **BECC** ("Big Endian Companion |
Line 40 limited to 64M due to the layout of the
|
Line 146 limited to 64M due to the layout of the
|
systems should obtain an FPGA upgrade from ADI to revision 8 or later of the |
systems should obtain an FPGA upgrade from ADI to revision 8 or later of the |
BECC. |
BECC. |
|
|
### Allwinner Technology A20/A31 |
### Allwinner Technology |
Various boards based on [[Allwinner]] SoCs are supported, including the BananaPi, Cubieboard 2, Cubietruck, Cubieboard 4, and Merrii Hummingbird A31. |
Various boards based on [[Allwinner]] SoCs are supported, including the BananaPi, Cubieboard 2, Cubietruck, Cubieboard 4, and Merrii Hummingbird A31. |
|
|
### Arcom **Viper** |
### Arcom **Viper** |
Line 52 Support for the Arcom Viper was written
|
Line 158 Support for the Arcom Viper was written
|
|
|
* On-chip timers (_saost_ used as system clock) |
* On-chip timers (_saost_ used as system clock) |
* On-chip serial ports (_com_) |
* On-chip serial ports (_com_) |
* On-board SMC91C111 ethernet (_sm_) |
* On-board SMC91C111 ethernet (_sm_) |
|
|
### ARM, Ltd. **Integrator** |
### ARM, Ltd. **Integrator** |
|
|
Line 102 Support for the gumstix was written by K
|
Line 208 Support for the gumstix was written by K
|
* netCF |
* netCF |
* netDUO |
* netDUO |
* netDUO-mmc |
* netDUO-mmc |
* netMMC |
* netMMC |
|
|
When booting, it is necessary to set these with u-boot dynamically. |
When booting, it is necessary to set these with u-boot dynamically. |
|
|
Line 114 When booting, it is necessary to set the
|
Line 220 When booting, it is necessary to set the
|
* GPSstix (GPS not test) |
* GPSstix (GPS not test) |
* tweener |
* tweener |
|
|
### Hardkernel ODROID-C1 |
### Hardkernel ODROID-C1 and ODROID-C1+ |
|
|
The [[ODROID-C1]] is a quad core Cortex-A5 small form-factor board from Hardkernel co., Ltd. |
The [[ODROID-C1]] is a quad core Cortex-A5 small form-factor board from Hardkernel co., Ltd. |
|
|
### Intel **DBPXA250** ("Lubbock") |
### Intel **DBPXA250** ("Lubbock") |
|
|
DBPXA250 (a.k.a. Lubbock) is an evaluation and development platform for the |
DBPXA250 (a.k.a. Lubbock) is an evaluation and development platform for the |
Intel **PXA250** XScale Core application processor. More information about the **DBPXA250** can be found at [Intel website](http://www.intel.com/design/pca/applicationsprocessors/swsup/index.htm). |
Intel **PXA250** XScale Core application processor. More information about the **DBPXA250** can be found at [Intel website](http://www.intel.com/design/pca/applicationsprocessors/swsup/index.htm). |
Line 192 Support for the IXM1200 was written by I
|
Line 298 Support for the IXM1200 was written by I
|
* On-chip timers (ixpclk0 used as system clock) |
* On-chip timers (ixpclk0 used as system clock) |
* On-chip serial port (_ixpcom_) |
* On-chip serial port (_ixpcom_) |
|
|
### NOVATEC **NTNP425B** ("ZAO425") |
### NOVATEC **NTNP425B** ("ZAO425") |
|
|
NTNP425B is an evaluation and development platform for the Intel **IXP425** |
NTNP425B is an evaluation and development platform for the Intel **IXP425** |
XScale Core NetworkProcessor. NTNP425B is based on the reference board of |
XScale Core NetworkProcessor. NTNP425B is based on the reference board of |
Line 210 Support for the NTNP425B was written by
|
Line 316 Support for the NTNP425B was written by
|
* On-chip watchdog timer (_ixpwdog_) |
* On-chip watchdog timer (_ixpwdog_) |
|
|
### NVIDIA Tegra K1 |
### NVIDIA Tegra K1 |
Support for NVIDIA [[Tegra]] K1 SoCs is present in NetBSD-current. The Jetson TK1 board is currently supported. |
Support for NVIDIA [[Tegra]] K1 SoCs is present in NetBSD-current and |
|
8.0_BETA. The Jetson TK1 board is currently supported. |
### Raspberry Pi Foundation **Raspberry Pi**/**Raspberry Pi 2** |
|
The [[Raspberry Pi]] is a low-cost credit-card-sized computer from the Raspberry Pi Foundation. Both the Raspberry Pi and Raspberry Pi 2 are supported. |
|
|
|
### Rockchip PX2/RK3066/RK3188/RK3188+ |
### Raspberry Pi Foundation **Raspberry Pi**/**Raspberry Pi 2**/**Raspberry Pi 3** |
Various [[Rockchip]] family SoCs are supported by the ROCKCHIP kernel. |
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. |
|
|
### Samsung **SMDK2410** |
### Samsung **SMDK2410** |
|
|
Line 250 Fujitsu Component Ltd., and Genetec Corp
|
Line 354 Fujitsu Component Ltd., and Genetec Corp
|
* On-chip serial ports (_sscom_) |
* On-chip serial ports (_sscom_) |
* On-chip Host-PCI bridge (_sspci_) |
* On-chip Host-PCI bridge (_sspci_) |
* On-chip timers (used as system clock) |
* On-chip timers (used as system clock) |
* Other devices inserted into the PCI slots |
* Other devices inserted into the PCI slots |
|
|
### Team ASA, Inc. **Npwr** |
### Team ASA, Inc. **Npwr** |
|
|
Line 297 Support for the TS-7200 was written by J
|
Line 401 Support for the TS-7200 was written by J
|
""" |
""" |
additional=""" |
additional=""" |
* The [NetBSD Diskless HOWTO](http://www.netbsd.org/docs/network/netboot/) |
* The [NetBSD Diskless HOWTO](http://www.netbsd.org/docs/network/netboot/) |
* [ Porting NetBSD/evbarm to the Arcom Viper](http://www.cs.hut.fi/~pooka/pubs/EuroBSDCon2005/viper.pdf), presented at EuroBSDCon 2005. |
* [ Porting NetBSD/evbarm to the Arcom Viper](http://www.cs.hut.fi/~pooka/pubs/EuroBSDCon2005/viper.pdf), presented at EuroBSDCon 2005. |
""" |
""" |
]] |
]] |
[[!tag tier1port]] |
[[!tag tier1port]] |