Rockchip - RK3399 (RockPro64)#
RP64, Kezako ?#
Le RockPro64 ou RP64 est, un nano / micro ordinateur monocarte, fonctionnant sur une architecture arm 64 bits.
Objectif#
Couvrir le processus d’installation d’OpenBSD sur RP64 pour les besoins suivants:
- OpenBSD Current (6.7-beta):
- Media d’installation: clé usb
- Cible: carte emmc 64Go
- nas: 2 disques en raid 1
Ne sera pas couvert, le processus d’installation standard d’OpenBSD
Processus d’installation sur RP64#
Séquence de démarrage du rockpro64:
- SPI NOR flash memory
- emmc
- sdcard
- Entrer dans U-BOOT
- Effacer la mémoire flash SPI
- Permettre au RP64 de démarrer le média USB
- Suivre le processus d’installation classique
Choix du RP64#
- Faible consommation électrique
- Prix faible vs un ordinateur
- Encombrement
- Ludique
- Moins sensible aux menaces: surface (empreinte quantitative) de l’architecture arm / os sur le marché
- 1 port PCIe x4 (gen 2.0)
- Carte SATA (nas)
- Carte ethernet
- Carte USB
- (…)
Pour en savoir plus sur le RP64
Matériel nécessaire dans le cadre d’une utilisation NAS / Domotique
- 1 RP64 - 4Gb
- 1 Adaptateur usb / emmc
- 1 carte emmc 64gb
- 1 zoli boitier nas
- 1 radiateur haut
- 1 ventilateur “boitier”
- 1 adaptateur 12v 5A (EU)
- 1 adaptateur “serial console”
Matériels testés :#
1. Cards / Chipsets OK:
- Startech.com PEXSATA32 2 ports SATA controller
- ahci0 at pci1 dev 0 function 0 “Marvell 88SE9128 AHCI” rev 0x20: msi, AHCI 1.2
- QNINE NVME PCIe Adapter M.2 2280 w/Samsung 970 EVO
- nvme0 at pci1 dev 0 function 0 Samsung SM981/PM981 NVMe rev 0x00: msix, NVMe 1.3
2. Fonctionne mais déconseillée
- ROCKPro64 PCI-e to Dual SATA-II Interface Card
- ahci0 at pci1 dev 0 function 0 ASMedia ASM1061 AHCI rev 0x01: msi, AHCI 1.2
3. Ne fonctionne pas:
- HighPoint Rocket 640L
- ahci0 at pci1 dev 0 function 0 Marvell 88SE9230 AHCI rev 0x11: msi, AHCI 1.2
- Dell PERC 6/ir
- mpi0 at pci9 dev 0 function 0 Symbios Logic SAS1068E rev 0x08: msi
Le pilote actuel, ne supporte pas les cartes basées sur pci-bridge
Prérequis techniques pour l’installation#
Les “pins jumper”
- (16) : désactiver le boot sur emmc
- (pin 23 & 25) : désactiver au premier demarrage le SPI flash
Dans les deux cas, à retirer 2 secondes post démarrage, et avant l’allumage de la LED blanche.
Objectif visé : permettre, pour l’installation, un démarrage sur sdcard.
Présenter les taches technique pour télécharger la version d’OpenBSD ainsi que l’intégration de U-Boot et du “Device Tree Blob” nécessaire pour le démarage et l’installation du système d’exploitation OpenBSD sur la plateforme arm64 RockPro64.
Step 1: obtenir les ressources#
- Image: miniroot68.img
code:
doas ftp -o miniroot68.img https://cdn.openbsd.org/pub/OpenBSD/6.8/arm64/miniroot68.img
- Si absent, installer les “packages” suivants:
code:
doas pkg_add u-boot-aarch64
doas pkg_add dtb
Step 2: préparer la clé usb d’installation#
- Installer l’image OpenBSD sur la clé usb (si clé=sd1)
code:
doas dd if=miniroot68.img of=/dev/rsd1c bs=1m
- Installer le firmware dtb sur la clé USB (si clé=sd1)
code:
doas mount /dev/sd1i /mnt
doas mkdir /mnt/rockchip
doas cp /usr/local/share/dtb/arm64/rockchip/rk3399-rockpro64.dtb /mnt/rockchip/
doas umount /mnt
Step 3: préparer la carte eMMC (si emmc=sd2)#
- Installer l’emmc sur la clé USB
- Installer U-BOOT & le firmware sur emmc
code:
doas dd if=/usr/local/share/u-boot/rockpro64-rk3399/idbloader.img of=/dev/sd2c seek=64
doas dd if=/usr/local/share/u-boot/rockpro64-rk3399/u-boot.itb of=/dev/sd2c seek=16384
Step 4: connecter les éléments#
- installer la carte emmc sur son emplacement final (board)
- insérer la clé sur un port USB 2.0 du RP64
Démarrage & installation#
Les étapes du processus#
- Positionner un cable sur les pins GPIO 23 et 25 pour shunter le boot sur flash SPI
- Positionner le cable USB TTL & se connecter à la console
- Démarrer
- Avant 2 secondes, retirer le jumper
- Entrer dans u-boot
- Effacer le flash SPI (ou laisser le jumper éternellement)
- Détecter manuellement la clé usb
- Sortir de u-boot
- Amorcer l’installation de OpenBSD
Console via cable série USB-TTL#
Pour se connecter via un cable série USB-TTL, il suffit de connecter le cable et de lancer la commande ci-dessous pour intéragir avec la “board” RocPro64.
doas cu -s 115200 -l /dev/cuaU0
Une fois alimenté nous visualison et pouvons interagir avec la plateforme.
u-boot#
Hit any key to stop autoboot
U-Boot TPL 2020.01 (Mar 31 2020 - 18:19:43)
Channel 0: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
Channel 1: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
256B stride
256B stride
lpddr4_set_rate: change freq to 400000000 mhz 0, 1
lpddr4_set_rate: change freq to 800000000 mhz 1, 0
Trying to boot from BOOTROM
Returning to boot ROM...
U-Boot SPL 2020.01 (Mar 31 2020 - 18:19:43 -0600)
Trying to boot from MMC2
INFO: GICv3 with legacy support detected. ARM GICv3 driver initialized in EL3
INFO: BL31: cortex_a53: CPU workaround for 855873 was applied
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x200000
INFO: SPSR = 0x3c9
U-Boot 2020.01 (Mar 31 2020 - 18:19:43 -0600)
Model: Pine64 RockPro64
DRAM: 3.9 GiB
PMIC: RK808
MMC: dwmmc@fe320000: 1, sdhci@fe330000: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment
In: serial@ff1a0000
Out: serial@ff1a0000
Err: serial@ff1a0000
Model: Pine64 RockPro64
rockchip_dnl_key_pressed: adc_channel_single_shot fail!
Net: eth0: ethernet@fe300000
Hit any key to stop autoboot: 0
u-boot : effacer le flash SPI#
Effacer le flash SPI, pour ne plus l’utiliser au boot
Dans u-boot
sf probe
sf erase 0 400000
u-boot : détecter la clé usb#
Dans u-boot:
=> usb start
starting USB...
Bus usb@fe380000: USB EHCI 1.00
Bus usb@fe3c0000: USB EHCI 1.00
Bus dwc3: Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
Bus dw3c:Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus usb@fe380000 for devices... 1 USB Device(s) found
scanning bus usb@fe3c0000 for devices... 2 USB Device(s) found
scanning bus dwc3 for devices... 1 USB Device(s) found
scanning bus dwc3 for devices... 1 USB Device(s) found
scanning usb for storage devices... 1 Storage Device(s) found
u-boot : phase de boot#
A l’invite de prompt de u-boot, lancer la commande boot.
=> boot
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found EFI removable media binary efi/boot/bootaa64.efi
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
Card did not respond to voltage select!
Scanning disk dwmmc@fe320000.blk...
Disk dwmmc@fe320000.blk not ready
Scanning disk sdhci@fe330000.blk...
** Unrecognized filesystem type **
Scanning disk usb_mass_storage.lun0...
** Unrecognized filesystem type **
Found 6 disks
BootOrder not defined
EFI boot manager: Cannot load any image
168758 bytes read in 55 ms (2.9 MiB/s)
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
disks: sd0* sd1
Ordonnancer le boot sur l’USB#
>> OpenBSD/arm64 BOOTAA64 0.21
boot> boot sd1a:/bsd
(...)
bootfile: sd1a:/bsd
boot device: sd1
root on rd0a swap on rd0b dump on rd0b
erase ^?, werase ^W, kill ^U, intr ^C, status ^T
Welcome to the OpenBSD/arm64 6.7 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?
Il est temps, d’installer OpenBSD selon la procédure d’installation classique