Diff for /wikisrc/ports/evbarm/raspberry_pi.mdwn between versions 1.101 and 1.109

version 1.101, 2018/11/06 22:12:42 version 1.109, 2018/11/07 01:10:59
Line 1 Line 1
 [[!meta title="NetBSD/evbarm on Raspberry Pi"]]  [[!meta title="NetBSD/evbarm on Raspberry Pi"]]
   
 This page attempts to document and coordinate efforts towards NetBSD/evbarm on [Raspberry Pi](http://www.raspberrypi.org). All board variants are supported.  This page attempts to document and coordinate efforts towards NetBSD/evbarm on [Raspberry Pi](http://www.raspberrypi.org).  All [board variants](https://en.wikipedia.org/wiki/Raspberry_Pi#Specifications) are supported.  We use e.g. "RPI2" to refer to "Raspberry Pi 2" to save precious bytes on this page.
   
 Initial, limited, Raspberry Pi support was introduced in NetBSD 6.0. NetBSD 7.0 adds complete support for the board, along with introducing support for the quad-core Raspberry Pi 2 board.  Raspberry Pi 3 support was added for NetBSD 8, and backported to NetBSD 7 in July of 2017.  (This page assumes those using NetBSD 7 are using 7.2, or the netbsd-7 branch after mid 2018.)  Initial, limited, Raspberry Pi support was introduced in NetBSD 6.0.  NetBSD 7.0 adds complete support for the board, along with introducing support for the quad-core Raspberry Pi 2 board.  Raspberry Pi 3 support was added for NetBSD 8, and backported to NetBSD 7 in July of 2017.  (This page assumes those using NetBSD 7 are using 7.2 or later, but note that everyone uses 8 or -current.)
   
 [[images/raspberrypi.jpg]]  [[images/raspberrypi.jpg]]
   
Line 12  Initial, limited, Raspberry Pi support w Line 12  Initial, limited, Raspberry Pi support w
   
 # What works (and what doesn't yet)  # What works (and what doesn't yet)
   
 We use .e.g. "RPI2" to refer to "Raspberry Pi 2" to save precious bytes on this page.  
   
   
 \todo Add information  on Pi Zero and Pi Zero W.  
   
 ## NetBSD 7 and NetBSD 8  ## NetBSD 7 and NetBSD 8
   
  - RPI1, RPI2, RPI3 (except RPI3 builtin WiFi and bluetooth)   - RPI1, RPI2, RPI2-1.2, RPI3, RPI3+ (except RPI3 builtin WiFi and bluetooth)
  - RPI0 and RPI0W are expected to work (as RPI3, no WiFi, but one needs fdt files \todo where from?)   - RPI0 and RPI0W are expected to work (without WiFi, and one needs fdt files \todo where from?)
  - multiple processors on RPI2/RPI3   - multiple processors on RPI2/RPI3
  - boots normally to multiuser, with FAT32 boot partition on uSD   - boots normally to multiuser, with FAT32 boot partition on uSD
  - root filesystem can be uSD or USB-attached mass storage   - root filesystem can be uSD or USB-attached mass storage
Line 38  We use .e.g. "RPI2" to refer to "Raspber Line 33  We use .e.g. "RPI2" to refer to "Raspber
   
 ## NetBSD current  ## NetBSD current
   
  - RPI3B+    - RPI3+ 
  - RPI3 builtin bluetooth   - RPI3 builtin bluetooth
  - RPI3 new SD host controller driver   - RPI3 new SD host controller driver
   
   ## What needs documenting if it works
   
    - CM1
    - CM3
    - CM3lite
   
 ## What needs work  ## What needs work
   
  - USB (host); isochronous transfers.   - USB (host); isochronous transfers.
  - RPI3 builtin WiFi   - RPI3, RPI0W builtin WiFi
    - RPI0W Bluetooth Low Energy (probably)
   
 # CPU types  # CPU types
   
  - RPI1 uses "earmv6hf".   - RPI1 uses "earmv6hf".
  - RPI0 uses "\todo".   - RPI0 uses "earmv6hf".
    - RPI0W uses "earmv6hf".
  - RPI2 uses "earmv7hf".   - RPI2 uses "earmv7hf".
  - RPI3 uses "earmv7hf".   - RPI3 uses "earmv7hf".
  - RPI0W uses "\todo".  
   
 Note that one can run a build of earmv6hf on the 2 and 3.  There will still be a kernel7, built to use the 2/3 hardware, but with the armv6 instruction set.  Note that one can run a build of earmv6hf on the 2 and 3.  There will still be a kernel7, built to use the 2/3 hardware, but with the armv6 instruction set.
   
Line 61  In theory the code compiled for earmv7hf Line 63  In theory the code compiled for earmv7hf
   
 While the evbarm port has "eb" variants (for big-endian mode), the RPI systems do not support eb and these variants will not work.  Systems built with older CPU architectures (earm, earmv4, earmv5) are not expected to work on RPI.  While the evbarm port has "eb" variants (for big-endian mode), the RPI systems do not support eb and these variants will not work.  Systems built with older CPU architectures (earm, earmv4, earmv5) are not expected to work on RPI.
   
 See also [[NetBSD/aarch64|aarch64]] for running the Pi 2/3 in 64-bit mode.  See also [[NetBSD/aarch64|aarch64]] for running the RPI2-1.2 and RPI3/RPI3+ in 64-bit mode.
   
 # Installation  # Installation
   
Line 105  An example URL, arguably the standard ap Line 107  An example URL, arguably the standard ap
 Once you get to the releasedir, self-built and autobuild releases have the same structure.  Once you get to the releasedir, self-built and autobuild releases have the same structure.
   
  - The 'evbarm-earmv6hf/binary/gzimg/' directory contains an rpi.img file that will run on any of the RPI boards.   - The 'evbarm-earmv6hf/binary/gzimg/' directory contains an rpi.img file that will run on any of the RPI boards.
  - The 'evbarm-earmv7hf/binary/gzimg/' directory contains an armv7.img file that uses the armv7 instruction set, and thus can run only on the Raspberry Pi 2/3.   - The 'evbarm-earmv7hf/binary/gzimg/' directory contains an armv7.img file that uses the armv7 instruction set, and thus can run only on the RPI2 and RPI3 (and perhaps the CM3).  It also supports systems other than the RPI family.
   
 \todo Explain why there is no armv7_inst.gz.  \todo Explain why there is no armv7_inst.gz.
   
 ## Preparing a uSD card  ## Preparing a uSD card
   
 Once you have rpi.img.gz (or rpi_inst), put it on a uSD card using gunzip and dd, for example:  Once you have rpi.img.gz (or rpi_inst for earmv6 boards), put it on a uSD card using gunzip and dd, for example:
   
  - gunzip rpi.img.gz   - gunzip rpi.img.gz
  - dd if=rpi.img of=/dev/disk1   - dd if=rpi.img of=/dev/disk1
Line 124  The standard approach is to use a USB ke Line 126  The standard approach is to use a USB ke
   
 By default the rpi.img is set to use the HDMI output.  If you wish to use a serial console, mount the FAT32 partition on another system and edit cmdline.txt and remove '"console=fb"'.  By default the rpi.img is set to use the HDMI output.  If you wish to use a serial console, mount the FAT32 partition on another system and edit cmdline.txt and remove '"console=fb"'.
   
  - Most (all?) USB-to-TTL serial adapters have wires for Tx, Rx and ground, and not RTS/CTS or other flow control lines.   Thus, your terminal program (or terminal) must be configured to not require flow control; a symptom of misconfiguration is that you see console output, but cannot type anything.  If so, adjust your serial console application's flow control settings to "none".   - Most (all?) USB-to-TTL serial adapters have wires for TX, RX and ground, and not RTS/CTS or other flow control lines.   Thus, your terminal program (or terminal) must be configured to not require flow control; a symptom of misconfiguration is that you see console output, but cannot type anything.  If so, adjust your serial console application's flow control settings to "none".
   
    - In Kermit, the command is "set flow none".     - In Kermit, the command is "set flow none".
    - In minicom, run "minicom -s" and set hardware flow control to "no".     - In minicom, run "minicom -s" and set hardware flow control to "no".
Line 142  build.sh (and hence the FTP site) also c Line 144  build.sh (and hence the FTP site) also c
  - Use ssh to login to the address you found with user "sysinst", and password "netbsd".   - Use ssh to login to the address you found with user "sysinst", and password "netbsd".
  - When installing, ensure that you enable DHCP and ssh, so that you can log in again after the system is installed.   - When installing, ensure that you enable DHCP and ssh, so that you can log in again after the system is installed.
   
 \todo Verify that the above is accurate and sufficient.  The rpi_inst.img.gz image will only work for systems that use earmv6hf kernels (so not RPI2/3).  See [this port-arm message](https://mail-index.netbsd.org/port-arm/2017/08/18/msg004374.html) for details.
   
 ## Installation via ebijun's image  ## Installation via ebijun's image
   
Line 193  A section below describes the process of Line 195  A section below describes the process of
   
 \todo Explain where the firmware is in the source tree, and if it is in the installed system image (such as /usr/mdec).  Explain how to update a system (presumably /boot) from either an installed system's new firmware files, or the source tree.  Explain any particular cautions.  \todo Explain where the firmware is in the source tree, and if it is in the installed system image (such as /usr/mdec).  Explain how to update a system (presumably /boot) from either an installed system's new firmware files, or the source tree.  Explain any particular cautions.
   
 Probably, for the RPI3B+, one needs to use -current, or use -8 with firmware from -current.  \todo Defuzz.  Probably, for the RPI3+, one needs to use -current, or use -8 with firmware from -current.  \todo Defuzz.
   
 \todo Explain if using updated firmware from one branch (e.g. netbsd-current) on a system using a different branch (e.g. netbsd-8) is safe.  Explain if pullups are done to release branches with new firmware.  \todo Explain if using updated firmware from one branch (e.g. netbsd-current) on a system using a different branch (e.g. netbsd-8) is safe.  Explain if pullups are done to release branches with new firmware.
   
Line 270  Tests should be run on all of `rpi[0123] Line 272  Tests should be run on all of `rpi[0123]
   
 anita has support for evbarm.  Install qemu and dtb-arm-vexpress from pkgsrc.  Note that the release subdirectory should be evbarm-earmv6hf or evbarm-earmv7hf.  anita has support for evbarm.  Install qemu and dtb-arm-vexpress from pkgsrc.  Note that the release subdirectory should be evbarm-earmv6hf or evbarm-earmv7hf.
   
 \todo Explain how to select various RPI models to emulate.  \todo It is not currently known and documented how to configure qemu and anita to emulate a RPI in general or a specific RPI model.
   
 \todo Explain about how DTB works.  \todo Explain about how DTB works.
   
 \todo Give a command line example to run qemu (without anita).  \todo Give a command line example to run qemu (without anita).

Removed from v.1.101  
changed lines
  Added in v.1.109


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