Microordenadores - Desarrollos modernos para sistemas retro

OpenBSD en Pine A64+
22 de Agosto de 2017

Como preparar la tarjeta MicroSD para iniciar la instalación de OpenBSD en una placa Pine A64+ de 1GB de RAM.

Conectores GPIO para puerto serie con conector USB a TTL CP2102 de 3.3v

Hasta hace unos días, para instalar OpenBSD en placas Pine A64 era necesario un archivo que no era libremente distruíble, concretamente boot0.bin. Gracias a la nuueva versión de u-boot ya no es necesario y se puede preparar la imagen correcta sin tener que buscar este archivo. Aquí explico como preparar la instalación de OpenBSD en Pine A64+, para lo cual necesitarás:

  • Un pendrive para guardar los archivos de instalación
  • Un adaptador USB a TTL CP2102 de 3.3v
  • Un ordenador desde el que preparar la tarjeta MicroSD

Ten en cuenta que, aunque la placa es un objetivo de desarrollo para el proyecto OpenBSD, no funciona ni la salida HDMI ni Ethernet, aunque este sistema operativo soporta muchos dispositivos Ethernet USB. Puedes encontrar una lista de los soportados consultando las páginas de manual que se muestran con el comando apropos ethernet | grep USB.

Lectura recomendada

Preparación de la imagen de OpenBSD para Pine A64

Actualización: todo este proceso para preparar la imagen ya no es necesario de acuerdo a este anuncio de soporte de Pine64, por lo que tan sólo tienes que grabar la imagen miniroot62.fs mediante # dd if=miniroot62.fs of=/dev/rsdXc bs=1m, siendo sdX el dispositivo donde vas a realizar la instalación (en este caso sd0, que es la tarjeta MicroSD).

Como instalar la última versión de u-boot y dtb

Lo primero que necesitas es la última versión de u-boot que incluye el archivo u-boot-sunxi-with-spl.bin, necesario para preparar la tarjeta. La versión mínima que necesitas es la 2017.09rc2p0, que se encuentra como paquete precompilado desde el día 23 de Agosto en OpenBSD 6.2-beta.

Puedes instalar u-boot mediante el paquete u-boot-aarch64 desde el repositorio oficial o compilándolo mediante dpb o con un simple cd /usr/ports/sysutils/u-boot ; make install.

Ten en cuenta que también necesitarás instalar dtb (sysutils/dtb).

Como preparar y grabar en la tarjeta la imagen adecuada

Para ello sigue las notas de instalación para ARM64 enlazadas anteriormente. Resumiendo, y suponiendo que rsdX es la tarjeta MicroSD que vas a usar para la instalación:

# dd if=miniroot62.fs of=/dev/rsdXc bs=1m
# mount /dev/sdXi /mnt
# cp /usr/local/share/dtb/arm64/allwinner/sun50i-a64-pine64-plus.dtb /mnt
# umount /mnt
# dd if=/usr/local/share/u-boot/pine64_plus/u-boot-sunxi-with-spl.bin \
  of=/dev/sdXc bs=1024 seek=8

Si has seguido estos pasos correctamente la tarjeta ya está lista para que arranque el instalador de OpenBSD en la placa Pine A64+, a la que accederás desde otro ordenador mediante un adaptador de USB a TTL.

Pines para conexión por puerto serie USB a TTL

Para conectar la placa Pine A64 mediante puerto serie yo uso el dispositivo CP2102 de 3.3v; ten en cuenta que debe ser ese voltaje o puedes estropear la placa. Se conecta a la cabecera etiquetada como EXP y, tal y como se aprecia en la figura anterior esta es la correspondencia de los pines:

  • PIN 7 corresponde a TX
  • PIN 8 corresponde a RX
  • PIN 9 corresponde a GND

Como conectar por puerto serie para iniciar la instalación

# cu -s 115200 -l cuaU0

U-Boot SPL 2017.09-rc2 (Aug 22 2017 - 14:14:56)
DRAM: 1024 MiB
Trying to boot from MMC1
NOTICE:  BL3-1: Running on A64/H64 (1689) in SRAM A2 (@0x44000)
NOTICE:  Configuring SPC Controller
NOTICE:  BL3-1: v1.0(debug):20170702
NOTICE:  BL3-1: Built : 14:03:53, Aug 22 2017
NOTICE:  Configuring AXP PMIC
NOTICE:  PMIC: fixing DRAM voltage from 1.24V to 1.36V
NOTICE:  PMIC: setup successful
NOTICE:  SCPI: dummy stub handler, implementation level: 000000
INFO:    BL3-1: Initializing runtime services
INFO:    BL3-1: Preparing for EL3 exit to normal world
INFO:    BL3-1: Next image address: 0x4a000000, SPSR: 0x3c9


U-Boot 2017.09-rc2 (Aug 22 2017 - 14:14:56 +0200) Allwinner Technology

CPU:   Allwinner A64 (SUN50I)
Model: Pine64+
DRAM:  1 GiB
MMC:   SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   phy interface7
eth0: ethernet@01c30000
starting USB...
USB0:   USB EHCI 1.00
USB1:   USB OHCI 1.0
scanning bus 0 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found EFI removable media binary efi/boot/bootaa64.efi
reading efi/boot/bootaa64.efi
76544 bytes read in 42 ms (1.7 MiB/s)
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
## Starting EFI application at 40080000 ...
Scanning disks on usb...
Scanning disks on mmc...
MMC Device 1 not found
MMC Device 2 not found
MMC Device 3 not found
Found 5 disks
>> OpenBSD/arm64 BOOTAA64 0.7
boot> 
cannot open sd0a:/etc/random.seed: No such file or directory
booting sd0a:/bsd: 2267064+356324+8305336+601720 [179975+96+276600+151967]=0xf13770
type 0x2 pa 0x40000000 va 0x40000000 pages 0x4000 attr 0x8
type 0x7 pa 0x44000000 va 0x40000000 pages 0x4000 attr 0x8
type 0x2 pa 0x78e20000 va 0x78e20000 pages 0x1 attr 0x8
type 0x2 pa 0x78e21000 va 0x78e21000 pages 0x100 attr 0x8
type 0x6 pa 0x78f21000 va 0x78f21000 pages 0x1 attr 0x8000000000000008
type 0x2 pa 0x78f22000 va 0x78f22000 pages 0x13 attr 0x8
type 0x2 pa 0x78f35000 va 0x78f35000 pages 0x5085 attr 0x8
type 0x5 pa 0x7dfba000 va 0x7dfba000 pages 0x1 attr 0x8000000000000008
type 0x2 pa 0x7dfbb000 va 0x78f35000 pages 0x2045 attr 0x8
Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2017 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 6.2-beta (RAMDISK) #0: Mon Aug 21 16:48:19 AEST 2017
    jsg@arm64.jsg.id.au:/usr/src/sys/arch/arm64/compile/RAMDISK
real mem  = 942886912 (899MB)
avail mem = 880537600 (839MB)
mainbus0 at root: Pine64+
cpu0 at mainbus0: ARM Cortex-A53 r0p4
psci0 at mainbus0
agtimer0 at mainbus0: tick rate 24000 KHz
simplebus0 at mainbus0: "soc"
sxiccmu0 at simplebus0
sxipio0 at simplebus0: 103 pins
sximmc0 at simplebus0
sdmmc0 at sximmc0: 4-bit, sd high-speed, mmc high-speed, dma
ehci0 at simplebus0
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1
com0 at simplebus0: ns16550, no working fifo
com0: console
ampintc0 at simplebus0 nirq 224, ncpu 4: "interrupt-controller"
sxirtc0 at simplebus0
gpio0 at sxipio0: 32 pins
gpio1 at sxipio0: 32 pins
gpio2 at sxipio0: 32 pins
gpio3 at sxipio0: 32 pins
gpio4 at sxipio0: 32 pins
gpio5 at sxipio0: 32 pins
gpio6 at sxipio0: 32 pins
gpio7 at sxipio0: 32 pins
scsibus0 at sdmmc0: 2 targets, initiator 0
sd0 at scsibus0 targ 1 lun 0:  SCSI2 0/direct removable
sd0: 15247MB, 512 bytes/sector, 31225856 sectors
bootfile: sd0a:/bsd
boot device: sd0
WARNING: preposterous clock chip time
WARNING: CHECK AND RESET THE DATE!
erase ^?, werase ^W, kill ^U, intr ^C, status ^T

Welcome to the OpenBSD/arm64 6.2 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?  

A partir de aquí el proceso de instalación es el habitual, y viene bien explicado en la guía oficial de instalación de OpenBSD. Ten en cuenta que, al no haber aún soporte Ethernet tendrás que instalar los sets desde un pendrive conectado por USB. Para ello descarga el contenido del directorio snapshots/arm64 y graba los archivos en un pendrive; luego elige la opción disk cuando el instalador pregunte donde están los sets o archivos de instalación.


Contenido relacionado: