Diff for /wikisrc/ports/evbarm.mdwn between versions 1.35 and 1.68

version 1.35, 2017/03/15 08:29:16 version 1.68, 2018/11/25 15:18:34
Line 1 Line 1
 [[!template id=port  [[!template id=port
 port="evbarm"  port="evbarm"
 port_alt="arm"  port_alt="arm"
 port_var1="arm"  port_var1="earm"
 port_var2="armeb"  port_var2="earmeb"
 port_var3="earm"  port_var3="earmv6hf"
 port_var4="earmeb"  port_var4="earmv7hf"
 port_var5="earmv6hf"  port_var5="earmv7hfeb"
 port_var6="earmv7hf"  port_var_install_notes="evbarm-earm"
 port_var7="earmv7hfeb"  cur_rel="8.0"
 port_var_install_notes="evbarm-arm"  future_rel="9.0"
 cur_rel="7.1"  changes_cur="8.0"
 future_rel="8.0"  changes_future="9.0"
 changes_cur="7.0"  
 changes_future="8.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 22  designs. Line 20  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  ### Board specific information
    - [[Allwinner sunxi family SoCs|Allwinner]]
  - [[BeagleBone and BeagleBone Black|BeagleBone]]   - [[BeagleBone and BeagleBone Black|BeagleBone]]
  - [[Cubieboard 2, Cubietruck, Cubieboard 4, Banana Pi, and other Allwinner boards|Allwinner]]   - [[NVIDIA Tegra|Tegra]]
  - [[NVIDIA Jetson TK1|Tegra]]  
  - [[ODROID C1 and C1+|ODROID-C1]]   - [[ODROID C1 and C1+|ODROID-C1]]
  - [[Raspberry Pi and Pi 2|Raspberry Pi]]   - [[Raspberry Pi 1, 2 and 3|Raspberry Pi]]
   
 """  """
   
Line 37  supported_hardware=""" Line 126  supported_hardware="""
   
 [[!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 57  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 69  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 119  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 135  When booting, it is necessary to set the Line 224  When booting, it is necessary to set the
   
 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 209  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 227  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 267  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 314  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]]

Removed from v.1.35  
changed lines
  Added in v.1.68


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