RK3588

cropped-2.8.1.png
51miz-P1371254-FUV9P8GX-3840x1711

Der RK3588 von Rockchip ist ein leistungsstarker System-on-Chip (SoC), der sich durch seine Octa-Core-Architektur, eine 6-TOPS-NPU und die Mali-G610-GPU für Anwendungen in den Bereichen Edge-Computing, KI und Multimedia eignet.

Virtualisierung auf dem RK3588

Virtualisierung ermöglicht die Ausführung mehrerer Betriebssysteme oder Container auf einer einzigen Hardwareplattform, was für Serveranwendungen, Testumgebungen oder Edge-Computing von großer Bedeutung ist. Der RK3588 unterstützt Virtualisierung durch die ARMv8-A-Architektur, die Virtualisierungserweiterungen (Virtualization Extensions) umfasst. Dennoch hängt die Reife der Virtualisierungslösungen stark von der Kernelunterstützung, Treibern und Community-Arbeit ab.

1. KVM-Unterstützung

Kernel-based Virtual Machine (KVM) ist eine weit verbreitete Virtualisierungstechnologie für Linux, die hardwarebeschleunigte Virtualisierung ermöglicht. Der RK3588, mit seinen Cortex-A76- und Cortex-A55-Kernen, unterstützt die notwendigen ARM-Virtualisierungserweiterungen. Dennoch erfordert die Nutzung von KVM auf dem RK3588 einige Anpassungen:

  • Kernel-Konfiguration: Der Linux-Kernel muss mit aktiviertem KVM kompiliert werden (CONFIG_KVM=y). Projekte wie Joshua-Riek/ubuntu-rockchip (siehe GitHub) haben Patches integriert, die KVM auf RK3588-Plattformen wie dem Rock 5B oder Orange Pi 5 Plus ermöglichen.
  • Herausforderungen: Laut Community-Diskussionen (z. B. in Armbian-Foren) können Probleme bei der Geräteinitialisierung auftreten, etwa das Fehlen von /dev/vda in virtuellen Maschinen. Dies erfordert oft benutzerdefinierte Kernel-Patches oder spezifische QEMU-Konfigurationen.
  • Status: Die KVM-Unterstützung ist funktionsfähig, aber nicht vollständig im Mainline-Kernel integriert. Entwickler müssen auf Community-Builds oder selbst kompilierte Kernel zurückgreifen.

2. QEMU und KVM

QEMU ist das Standardwerkzeug für die Ausführung virtueller Maschinen in Kombination mit KVM. Es ermöglicht die Emulation von ARM-Systemen und die Nutzung von Hardwarebeschleunigung durch KVM. Für den RK3588 sind folgende Punkte relevant:

  • Konfiguration: QEMU muss mit korrekten Parametern gestartet werden, um die RK3588-Hardware (z. B. VPU und GPU) an virtuelle Maschinen weiterzureichen. Dies ist besonders wichtig für Anwendungen, die Hardwarebeschleunigung für Video- oder Grafikverarbeitung benötigen.
  • Performance: Die Leistung von QEMU/KVM auf dem RK3588 ist vielversprechend, wird jedoch durch unvollständige Treiberunterstützung eingeschränkt, insbesondere für die VPU (Video Processing Unit) und die Mali-GPU.
  • Beispiel: Ein Skript zur Ausführung einer Ubuntu-VM wird weiter unten bereitgestellt.

3. Leichtgewichtige Virtualisierung: LXC und Docker

Für Szenarien, die keine vollständige Virtualisierung erfordern, unterstützt der RK3588 LXC (Linux Containers) und Docker. Diese Technologien sind ideal für Entwicklungsumgebungen oder Microservices:

  • LXC: Ermöglicht isolierte Linux-Umgebungen mit minimalem Overhead. Die Weitergabe von Geräten wie /dev/dri oder /dev/mpp_service ist notwendig, um Hardwarebeschleunigung (z. B. für Video-Decoding) zu nutzen.
  • Docker: Docker-Container laufen problemlos auf RK3588-basierten Systemen, etwa in Proxmox- oder Armbian-Umgebungen. Projekte wie FriendlyWrt (siehe FriendlyELEC Wiki) bieten vorkonfigurierte Images.
  • Reife: LXC und Docker sind auf dem RK3588 gut unterstützt und reif für den produktiven Einsatz.

4. Einschränkungen

Trotz der Fortschritte gibt es einige Herausforderungen:

  • VPU/GPU-Treiber: Die Unterstützung für die VPU (RKMPP) und GPU (Panfrost) im Mainline-Kernel ist noch nicht vollständig, insbesondere für komplexe Szenarien wie AFBC-Kompression oder Mehrkern-VPU-Scheduling.
  • UEFI: Der RK3588 hat begrenzte UEFI-Unterstützung, was die Kompatibilität mit Plattformen wie VMware ESXi einschränkt.
  • Community-Abhängigkeit: Viele Virtualisierungsfunktionen basieren auf Community-Projekten, was die Stabilität und Wartung beeinflussen kann.

Lokale Entwicklung auf dem RK3588

Die lokale Entwicklung auf dem RK3588 profitiert von der hohen Rechenleistung und den spezialisierten Hardwarekomponenten (NPU, GPU, VPU). Der SoC eignet sich hervorragend für Anwendungen wie KI-Modell-Training/Inferenz, Multimedia-Entwicklung und eingebettete Systeme.

1. Betriebssysteme

Der RK3588 wird von einer Vielzahl von Betriebssystemen unterstützt, die die Grundlage für lokale Entwicklung bilden:

  • Ubuntu/Debian: Community-Projekte wie Collabora (siehe Collabora GitLab) und Radxa bieten Debian-basierte Images mit Mainline-Kernel-Unterstützung.
  • Android: Rockchip bietet offizielle Android-SDKs für Multimedia- und IoT-Anwendungen.
  • FriendlyWrt: Eine OpenWrt-basierte Distribution von FriendlyELEC, optimiert für Netzwerk- und IoT-Entwicklung.
  • Buildroot: Ermöglicht die Erstellung schlanker, maßgeschneiderter Systeme für eingebettete Anwendungen.

2. Entwicklungswerkzeuge und SDKs

  • Rockchip SDK: Das offizielle Linux-SDK umfasst Tools wie RKNN-Toolkit2 für NPU-Entwicklung und RKMPP für Multimedia-Anwendungen.
  • Community-Tools: Projekte wie Armbian und ubuntu-rockchip bieten Skripte für Kernel- und Image-Builds.
  • IDE-Unterstützung: Tools wie Visual Studio Code, PyCharm oder Eclipse können lokal auf dem RK3588 ausgeführt werden, was die Abhängigkeit von Cross-Compilation reduziert.

3. KI- und Multimedia-Entwicklung

  • NPU: Die 6-TOPS-NPU unterstützt KI-Modelle wie YOLOv5 oder TensorFlow Lite über das RKNN-Toolkit2. Entwickler können ONNX- oder PyTorch-Modelle in RKNN-Format konvertieren und auf der NPU ausführen.
  • VPU: Die RKMPP-Bibliothek ermöglicht hardwarebeschleunigtes Video-Encoding/Decoding, z. B. für Anwendungen wie Jellyfin oder FFmpeg.
  • GPU: Der Panfrost-Treiber unterstützt OpenGL ES 3.1, was die Entwicklung von Grafikanwendungen ermöglicht.

4. Build-Umgebung

Für die Kompilierung von Kernel, U-Boot oder Betriebssystem-Images wird eine leistungsstarke Host-Maschine empfohlen:

  • Hardware: Mindestens 16 GB RAM (besser 32 GB) und eine SSD.
  • Anleitungen: FriendlyELEC und Radxa bieten detaillierte Dokumentationen für den Build-Prozess (siehe Radxa Docs).

Praktische Codebeispiele

Um die praktische Anwendung zu demonstrieren, stellen wir zwei Codebeispiele bereit: ein Skript für die Virtualisierung mit QEMU/KVM und ein Python-Skript für YOLOv5-Inferenz mit der NPU.

1. QEMU/KVM: Ubuntu-VM starten

Das folgende Bash-Skript startet eine Ubuntu-22.04-VM auf dem RK3588 mit QEMU und KVM.

bash
 

#!/bin/bash

# Überprüfen, ob KVM aktiviert ist
if ! lsmod | grep -q kvm; then
echo “KVM-Modul nicht geladen. Bitte Kernel mit KVM-Unterstützung kompilieren.”
exit 1
fi

# VM-Parameter
VM_NAME=”ubuntu-vm”
IMAGE_PATH=”/path/to/ubuntu-22.04.qcow2″
ISO_PATH=”/path/to/ubuntu-22.04.iso”
MEMORY=2048
CPUS=4

# Virtuelle Festplatte erstellen (falls nicht vorhanden)
if [ ! -f “$IMAGE_PATH” ]; then
qemu-img create -f qcow2 “$IMAGE_PATH” 20G
fi

# QEMU starten
qemu-system-aarch64 \
-machine virt,accel=kvm \
-cpu host \
-smp “$CPUS” \
-m “$MEMORY” \
-drive file=”$IMAGE_PATH”,format=qcow2 \
-cdrom “$ISO_PATH” \
-netdev user,id=net0 \
-device virtio-net-pci,netdev=net0 \
-nographic \
-boot menu=on

echo “Virtuelle Maschine $VM_NAME gestartet.”

 
 

Anleitung:

  1. Installieren Sie QEMU: sudo apt install qemu-system-arm.
  2. Laden Sie die Ubuntu-22.04-ARM64-ISO und ein QCOW2-Image herunter.
  3. Überprüfen Sie die Kernel-Konfiguration: grep CONFIG_KVM /boot/config-$(uname -r).
  4. Führen Sie das Skript aus: chmod +x run_ubuntu_vm.sh && ./run_ubuntu_vm.sh.

2. YOLOv5-Inferenz mit RKNN-Toolkit2

Das folgende Python-Skript führt YOLOv5-Inferenz auf der RK3588-NPU aus.

python
 

import cv2
import numpy as np
from rknn.api import RKNN
# RKNN initialisieren
rknn = RKNN()
model_path = ‘yolov5s.rknn’
rknn.load_rknn(model_path)
rknn.init_runtime()

# Bild laden
img_path = ‘test.jpg’
img = cv2.imread(img_path)
img = cv2.resize(img, (640, 640))
img = img.astype(np.float32) / 255.0
img = np.transpose(img, (2, 0, 1))

# Inferenz durchführen
outputs = rknn.inference(inputs=[img])

# Ergebnisse verarbeiten
for output in outputs:
print(“Erkennungsergebnisse:”, output.shape) # NMS und Bounding-Box-Dekodierung erforderlich

# Ressourcen freigeben
rknn.release()

 
 

Anleitung:

  1. Installieren Sie RKNN-Toolkit2 und OpenCV: pip install rknn-toolkit opencv-python.
  2. Konvertieren Sie ein YOLOv5-Modell in das RKNN-Format mit dem RKNN-Toolkit2.
  3. Führen Sie das Skript aus: python yolov5_rknn.py.

Ressourcen und Community

Die Reife der Software für den RK3588 wird stark von der Community vorangetrieben. Hier sind einige vertrauenswürdige Quellen:

  • Collabora: Mainline-Kernel- und U-Boot-Unterstützung  .
  • Joshua-Riek/ubuntu-rockchip: Ubuntu-Images mit KVM-Patches  .
  • FriendlyELEC: Build-Anleitungen und FriendlyWrt  .
  • Radxa: Dokumentation und Debian-Images für Rock 5B/5B+  .
  • Armbian: Community-Builds für RK3588-Plattformen  .

 

Der RK3588 bietet vielversprechende Möglichkeiten für Virtualisierung und lokale Entwicklung, steht jedoch vor einigen Herausforderungen:

  • Virtualisierung: KVM und QEMU sind funktionsfähig, erfordern jedoch Kernel-Patches und manuelle Konfigurationen. Leichtgewichtige Lösungen wie LXC und Docker sind reif und produktionsbereit.
  • Lokale Entwicklung: Die Unterstützung für KI, Multimedia und eingebettete Anwendungen ist gut entwickelt, dank Tools wie RKNN-Toolkit2 und RKMPP. Die Community liefert wertvolle Ressourcen, um die Mainline-Integration zu verbessern.
  • Empfehlung: Entwickler sollten auf Community-Projekte wie ubuntu-rockchip oder Collabora zurückgreifen und die neuesten Kernel-Versionen nutzen, um die beste Unterstützung zu gewährleisten.

Für spezifische Anwendungsfälle oder weiterführende Fragen zur Implementierung können Entwickler die oben genannten Ressourcen konsultieren oder sich an die Community wenden. Der RK3588 ist ein vielseitiger SoC, dessen Software-Ökosystem stetig reift und für zukünftige Projekte großes Potenzial bietet.


 

滚动至顶部