Link in die Zwischenablage kopiert!

Erstellen von Gerätebaum-Overlays auf Toradex für Riverdi-Displays

Back to top

Das Ziel dieser Anleitung ist es, ein lauffähiges System aus sauberer/frischer Hardware zu erstellen – unter Verwendung von Torizon OS und den Quelldateien des Beispiel-Gerätebaums von Riverdi GitHub.

Auf diese Weise erreichen wir:

  • Torizon OS von Grund auf flashen
  • Erstellen eines benutzerdefinierten Gerätebaum-Overlays von Riverdi GitHub
  • Overlay in Torizon aktivieren
  • Booten Sie in ein vollgrafisches Display mit Touchfunktion

Dieser Leitfaden vermeidet absichtlich:

  • Yocto von Grund auf aufbauen
  • Neukompilierung des Linux-Kernels
  • Verwendung einer vollständigen virtuellen Linux-Maschine

Überblick über die Systemarchitektur

Hardware

  • Toradex Verdin iMX8MP oder iMX8MM
  • Toradex Dahlien-Träger
  • Riverdi 12.1″-Display (oder jedes andere Riverdi-Display, aber in diesem Beispiel verwenden wir 12.1″)

Bevor Sie das System modifizieren, ist es wichtig zu verstehen, wie die Display-Pipeline auf Verdin iMX8MP + Dahlia aufgebaut ist.

Datenpfad anzeigen

Für das Riverdi 12.1″ Display lautet die Signalkette:

i.MX8MP LCDIF

MIPI DSI

SN65DSI83 (DSI → LVDS-Brücke)

LVDS-Panel

  • Der LCDIF-Block im i.MX8MP erzeugt Pixeldaten.
  • Die Daten werden über MIPI DSI übertragen.
  • Der TI SN65DSI83 wandelt DSI in LVDS um.
  • Das LVDS-Panel empfängt Pixeldaten und zeigt das Bild an.

Steuerschnittstellen

Neben dem Videopfad müssen zwei weitere Subsysteme konfiguriert werden:

  • Steuerung der Hintergrundbeleuchtung
    • Angetrieben durch PWM vom i.MX8MP
    • Verbunden mit dem Treiber für die Hintergrundbeleuchtung des Displays
    • Die Einschaltdauer steuert die Helligkeit (0-100%)
  • Kapazitive Berührung
    • Verbunden über I2C
    • Erzeugt Interrupt-Signale
    • Zeigt ein Eingabegerät in Linux an (/dev/input/eventX)

Software

Wir verwenden eine Linux-Umgebung, in diesem Beispiel eine virtuelle Windows-Maschine, auf der Ubuntu installiert ist. Dies ist der Kern unserer Anleitung. Sie finden hier alles Notwendige – den gesamten Code, den wir verwenden, alle Links und alles ist erklärt. Unser Github finden Sie weiter unten:
https://github.com/riverdi/riverdi-toradex-DTS

Installation von Build-Abhängigkeiten

Bevor Sie Device Tree-Overlays erstellen können, muss die Entwicklungsumgebung die vom Linux-Kernel-Build-System benötigten Tools enthalten.
Öffnen Sie ein Terminal und installieren Sie die erforderlichen Pakete mit folgendem Befehl

sudo apt install -y \
git make gcc g++ bc bison flex \
libssl-dev libncurses-dev \
python3 python3-pip rsync wget xz-utils \
device-tree-compiler

Diese Pakete bieten die wichtigsten Dienstprogramme, die für die Erstellung von Kernel-Komponenten und Device Tree-Artefakten erforderlich sind.

Die folgenden Tools sind besonders wichtig für den Overlay-Erstellungsprozess:

  • Git – Wird verwendet, um die Toradex-Kernel-Quellen und das Device-Tree-Overlay-Framework zu klonen.
  • Build-Tools (gcc, make, etc.) – Erforderlich für das Linux-Kernel-Build-System.
  • device-tree-compiler (dtc) – Kompiliert Device Tree Quelldateien (.dts) in binäre Device Tree Blobs (.dtb oder .dtbo)
  • Zusätzliche Bibliotheken wie libssl-dev und libncurses-dev werden von verschiedenen Teilen der Kernel-Build-Infrastruktur benötigt.

Nachdem die Abhängigkeiten installiert sind, ist das System bereit, die Toradex-Kernelquellen zu klonen und die Build-Umgebung für die Kompilierung des Device Tree-Overlays vorzubereiten.

Anlegen von Swap Space und Vorbereitung des Arbeitsverzeichnisses

Wenn Sie in einer virtuellen Maschine arbeiten, kann der verfügbare Arbeitsspeicher begrenzt sein. Kernel-bezogene Build-Systeme können während der Kompilierung zusätzlichen Speicher benötigen, insbesondere bei der Verarbeitung großer Quellbäume.

Um speicherbedingte Build-Fehler zu vermeiden, empfiehlt es sich, eine Auslagerungsdatei zu erstellen, die zusätzlichen virtuellen Speicher bereitstellt.

Erstellen Sie mit den folgenden Befehlen eine 4 GB große Auslagerungsdatei:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Die Auslagerungsdatei wird dann zur Systemkonfiguration hinzugefügt, damit sie nach einem Neustart automatisch aktiviert wird:

echo '/swapfile keine swap sw 0 0' | sudo tee -a /etc/fstab

Nachdem Sie den Swap Space vorbereitet haben, erstellen Sie ein Arbeitsverzeichnis, in dem alle in dieser Anleitung verwendeten Repositories und Build-Artefakte gespeichert werden:

mkdir -p ~/work
cd ~/work

Dieses Verzeichnis wird als Hauptarbeitsbereich für das Klonen der Toradex-Kernelquellen, des Overlay-Frameworks und der Riverdi-Display-Overlay-Dateien verwendet.

Klonen der Toradex Linux Kernel Quellen

Der nächste Schritt ist das Herunterladen der Toradex Linux Kernel-Quellen. Diese Quellen bieten die Build-Infrastruktur und die Header-Dateien, die für den Kompilierungsprozess des Device Tree-Overlays erforderlich sind.

Navigieren Sie zu dem zuvor erstellten Arbeitsverzeichnis und klonen Sie das Toradex Kernel Repository:

git clone git://git.toradex.com/linux-toradex.git  

Dieses Repository enthält den Linux-Kernel, der in den Toradex BSP-Versionen verwendet wird, sowie die Konfigurationsdateien und Build-Skripte, die für die Kompilierung der Kernel-Komponenten und Device Tree-Overlays erforderlich sind.

Das Kernel-Repository ist relativ groß, so dass das Klonen je nach Netzwerkverbindung mehrere Minuten dauern kann. Im begleitenden Video wird dieser Schritt beschleunigt, um die Anleitung übersichtlich zu halten.

Nachdem das Repository heruntergeladen wurde, besteht der nächste Schritt darin, den Kernel-Zweig auszuwählen, der mit der BSP-Version übereinstimmt, die auf dem Verdin-Zielmodul verwendet wird.

Auswahl des richtigen Kernel-Zweigs

Nachdem Sie das Toradex-Kernel-Repository geklont haben, müssen Sie im nächsten Schritt den Zweig auswählen, der der BSP-Version entspricht, die auf dem Zielgerät läuft.

Die BSP-Versionen von Toradex basieren auf bestimmten Linux-Kernel-Versionen, und Device Tree-Overlays müssen mit demselben Kernel-Zweig kompiliert werden, um Kompatibilität zu gewährleisten.

Um die verfügbaren Kernel-Zweige in Bezug auf Linux 5.15 aufzulisten, führen Sie aus:

git branch -a | grep -E "5\.15|toradex_5\.15" | head -n 50

Dieser Befehl filtert die verfügbaren Zweige und zeigt die Zweige an, die sich auf die Linux 5.15 Kernel-Serie beziehen, die von mehreren Toradex BSP-Versionen verwendet wird.

git checkout toradex_5.15-2.2.x-imx

Dieser Zweig enthält die Kernel-Quellen und die Konfiguration, die von den Toradex BSP-Versionen basierend auf Linux 5.15 für NXP i.MX-Prozessoren verwendet werden.

Durch die Auswahl des richtigen Zweigs wird sichergestellt, dass das Gerätebaum-Overlay gegen einen Kernelbaum erstellt wird, der mit der auf der Zielhardware laufenden Software übereinstimmt.

Klonen des Overlay-Gerätebaums

Der nächste Schritt ist der Download des Toradex Device Tree Overlay Frameworks. Dieses Repository enthält die Build-Infrastruktur für die Kompilierung von Device Tree-Overlays mit dem Linux-Kernel-Build-System.

Klonen Sie das Repository in Ihr Arbeitsverzeichnis:

git clone git://git.toradex.com/device-tree-overlays.git

Dieses Repository enthält die Makefile-Struktur und die Integration, die für die Erstellung von .dtbo-Dateien unter Verwendung der zuvor geklonten Kernel-Quellen erforderlich sind.

Sobald das Repository geklont ist, erscheint im Arbeitsbereich ein neues Verzeichnis namens device-tree-overlays. Dieses Verzeichnis wird später verwendet, um die Riverdi Overlay-Quellen hinzuzufügen und das endgültige Overlay zu kompilieren.

Auswahl des richtigen Overlay-Framework-Zweigs

Nachdem Sie das Repository device-tree-overlays geklont haben, wählen Sie im nächsten Schritt den Zweig aus, der der gleichen Kernel-Version entspricht, die Sie zuvor verwendet haben.

Das Device Tree-Overlay-Framework muss mit dem im linux-toradex-Repository verwendeten Kernel-Zweig übereinstimmen. Dadurch wird sichergestellt, dass der Overlay-Erstellungsprozess die richtigen Kernel-Header und die richtige Erstellungskonfiguration verwendet.

Listen Sie zunächst die verfügbaren Zweige auf, die sich auf die Linux 5.15 Kernel-Serie beziehen:

git branch -a | grep -E "5\.15|toradex_5\.15" | head -n 50

Dieser Befehl filtert die verfügbaren Zweige und zeigt diejenigen an, die mit dem Linux 5.15 Kernel verbunden sind, der von mehreren Toradex BSP-Versionen verwendet wird.

Als nächstes überprüfen Sie den Zweig, der der zuvor ausgewählten Kernel-Version entspricht:

git checkout toradex_5.15-2.2.x-imx

Die Verwendung desselben Zweigs sowohl für die Kernel-Quellen als auch für das Overlay-Framework stellt sicher, dass das Build-System mit dem BSP kompatibel bleibt, das auf dem Verdin-Zielmodul läuft.

Konfigurieren des Kernel-Quellpfads und Klonen der Riverdi Overlay-Quellen

Bevor Sie Device Tree-Overlays erstellen, muss das Overlay-Build-System wissen, wo sich die Linux-Kernel-Quellen befinden. Dazu wird die Umgebungsvariable STAGING_KERNEL_DIR definiert, die auf das zuvor geklonte linux-toradex-Repository verweist.

Setzen Sie die Variable mit dem folgenden Befehl:

export STAGING_KERNEL_DIR=$HOME/work/linux-toradex

Wenn Sie die Konfiguration über mehrere Terminalsitzungen hinweg beibehalten möchten, fügen Sie sie der Shell-Konfigurationsdatei hinzu:

echo 'export STAGING_KERNEL_DIR=$HOME/work/linux-toradex'  >>  ~/.bashrc
Quelle ~/.bashrc

Diese Variable ermöglicht dem Overlay-Build-Framework den Zugriff auf die Kernel-Header und Build-Skripte, die vom Linux-Kernel-Build-System benötigt werden.

Klonen der Riverdi Overlay-Quellen

Sobald der Kernelpfad konfiguriert ist, laden Sie im nächsten Schritt die in dieser Anleitung verwendeten Riverdi Overlay-Quellen herunter.

Klonen Sie das Repository in Ihr Arbeitsverzeichnis:

git clone https://github.com/riverdi/riverdi-toradex-DTS.git

Dieses Repository enthält Device Tree Overlay-Quelldateien, die zur Konfiguration von Riverdi-Displays mit Toradex Verdin-Modulen verwendet werden.

Diese Overlay-Quellen werden im nächsten Schritt des Leitfadens in das Toradex Overlay Build Framework integriert.

Überprüfen von Repository-Zweigen und Auffinden von Overlay-Quellen

Bevor Sie mit der Erstellung des Overlays fortfahren, sollten Sie sicherstellen, dass sowohl das linux-toradex Repository als auch das device-tree-overlays Framework denselben Kernel-Zweig verwenden.

Dadurch wird sichergestellt, dass der Overlay-Erstellungsprozess mit den zuvor verwendeten Kernel-Quellen kompatibel bleibt.

Sie können den aktiven Zweig in jedem Repository mit überprüfen:

git rev-parse --abbrev-ref HEAD

Beide Repositories sollten zum Beispiel denselben Zweignamen melden:

toradex_5.15-2.2.x-imx

Die Verwendung desselben Zweigs in beiden Repositories stellt sicher, dass das Device Tree Overlay Framework die korrekten Kernel-Header und die richtige Build-Konfiguration verwendet.

Als nächstes navigieren Sie zum geklonten Riverdi-Repository, um die Quellen für die Gerätebaum-Überlagerung zu finden:

cd ~/work/riverdi-toradex-DTS
ls

Dieses Repository enthält die Device Tree-Quelldateien (.dts) und Include-Dateien (.dtsi), die zur Konfiguration von Riverdi-Displays auf Toradex Verdin-Plattformen verwendet werden.

Die erforderlichen Overlay-Dateien werden im nächsten Schritt in das Toradex Overlay Build Framework kopiert.

Aufbau des Overlays und Vorbereitung des Kernel-Quellbaums

In diesem Stadium befinden sich die Riverdi Overlay-Quellen im Overlay-Build-Verzeichnis und das Overlay wurde der dtb-y-Liste im Makefile hinzugefügt. Der nächste Schritt besteht darin, das Overlay zu kompilieren.

Starten Sie den Build im Verzeichnis device-tree-overlays/overlays:

sauber machen
machen

Wenn der Kernel-Quellbaum noch nicht vorbereitet wurde, kann der Build mit einer Fehlermeldung ähnlich der folgenden fehlschlagen:

Die Kernelkonfiguration ist ungültig
include/generated/autoconf.h oder include/config/auto.conf fehlen

Dies ist zu erwarten, da das Toradex Overlay Framework das Linux-Kernel-Build-System (Kbuild) verwendet. Kbuild benötigt einen konfigurierten und vorbereiteten Kernel-Baum, um die erforderlichen Header-Dateien und Konfigurationsartefakte zu erzeugen.

Um dies zu beheben, bereiten Sie den Kernel-Quellbaum vor:

  1. Navigieren Sie zum Kernel-Repository.
    cd ~/work/linux-toradex
  2. Konfigurieren Sie den Build für die Verdin iMX8M Plus-Plattform. Der SoC ist ein 64-Bit-ARM, verwenden Sie also arm64 und einen AArch64 Cross-Compiler.
    export ARCH=arm64
    export CROSS_COMPILE=aarch64-linux-gnu-
  3. Installieren Sie die Cross-Compiler-Toolchain auf dem Host-System:
    sudo apt install -y gcc-aarch64-linux-gnu
  4. Erzeugen Sie eine Standard-Kernelkonfiguration und bereiten Sie den Kernelbaum vor:
    make defconfig
    make oldconfig
    make prepare
    make scripts

Diese Befehle erzeugen die fehlenden Konfigurationsdateien und Header, die von Kbuild benötigt werden, einschließlich include/config/auto.conf und include/generated/autoconf.h.

Nachdem der Kernel-Baum vorbereitet wurde, kehren Sie in das Overlay-Verzeichnis zurück und führen den Overlay-Build erneut aus:

cd ~/work/device-tree-overlays/overlays
sauber machen
machen

Das Overlay sollte nun erfolgreich kompiliert werden und eine .dtbo-Ausgabedatei erzeugen.

Hinzufügen der Riverdi Overlay-Quellen zum Build-Framework

Das Toradex Overlay Build Framework kompiliert Overlays, die sich im Verzeichnis overlays befinden. Daher müssen die Quelldateien des Riverdi Device Tree in dieses Verzeichnis kopiert werden, bevor der Erstellungsprozess beginnen kann.

Navigieren Sie zu dem Verzeichnis, in dem das Overlay erstellt wurde:

cd ~/work/device-tree-overlays/overlays

Kopieren Sie die Riverdi Overlay-Quelldatei für das 12-Zoll-DSI-Display:

cp ~/work/riverdi-toradex-DTS/verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dts .

Als nächstes kopieren Sie die zusätzlichen Display-Include-Dateien, die vom Overlay verwendet werden:

cp ~/work/riverdi-toradex-DTS/display-*.dtsi  

Diese .dtsi-Dateien enthalten Panel-spezifische Konfigurationsdaten wie Timing-Parameter und Panel-Schnittstellendefinitionen, die von der Haupt-Overlay-Datei verwendet werden.

Registrierung des Overlays im Build-System

Damit das Overlay kompiliert werden kann, muss es dem Makefile hinzugefügt werden, das vom Toradex Overlay Framework verwendet wird.

Öffnen Sie das Makefile, das sich im Verzeichnis overlays befindet:

nano Makefile

Fügen Sie der Liste dtb-y einen neuen Eintrag hinzu:

cd ~/work/riverdi-toradex-DTS
dtb-y += verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo

Diese Zeile weist das Kernel-Build-System an, die entsprechende .dts-Datei während des Build-Prozesses in eine .dtbo-Binärdatei zu kompilieren.

Sobald dieser Eintrag hinzugefügt wurde, wird das Overlay Teil der Build-Ziele und wird erzeugt, wenn der Overlay-Build-Befehl ausgeführt wird.

Aufbau des Gerätebaum-Overlays

Nachdem Sie den Kernel-Quellbaum vorbereitet haben, kann das Overlay erfolgreich kompiliert werden.

Kehren Sie in das Verzeichnis für die Erstellung des Overlays zurück:

cd ~/work/device-tree-overlays/overlays

Bereinigen Sie alle vorherigen Build-Artefakte:

sauber machen

Starten Sie dann die Erstellung des Overlays:

machen

Während des Build-Prozesses ruft das Linux-Kernel-Build-System den Device Tree Compiler (dtc) auf und kompiliert die registrierte Overlay-Quelldatei in eine binäre .dtbo-Datei.

Wenn der Build erfolgreich abgeschlossen wurde, enthält die Build-Ausgabe Folgendes:

DTC verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo

Dies zeigt an, dass die Device Tree-Quelldatei erfolgreich kompiliert wurde.

Die erzeugte .dtbo-Datei erscheint im gleichen Verzeichnis wie die Overlays und ist nun bereit, auf das Toradex Verdin-Zielmodul übertragen zu werden.

Bereitstellung von

Anschließen an das Verdin-Modul

Nach der erfolgreichen Erstellung des Gerätebaum-Overlays auf dem Host-System besteht der nächste Schritt darin, es auf dem Toradex Verdin-Modul einzusetzen.

Um auf die Linux-Konsole des Moduls zuzugreifen, verbinden Sie sich über ein serielles Terminal mit dem Gerät. In diesem Beispiel wird PuTTY verwendet, um die Verbindung herzustellen.

Konfigurieren Sie die serielle Verbindung mit den folgenden Parametern:

  • Verbindungstyp: Seriell
  • Serielle Leitung: Der COM-Port, der dem Verdin-Debug-UART zugewiesen ist – überprüfen Sie ihn im Gerätemanager
  • Geschwindigkeit: 115200

Nach dem Öffnen der Verbindung zeigt das Terminal das Boot-Protokoll an und ermöglicht schließlich den Zugriff auf die Linux-Shell, die auf dem Verdin-Modul läuft.

Diese Konsole wird verwendet, um die kompilierte .dtbo-Datei zu übertragen und das Overlay in der Boot-Konfiguration zu aktivieren.

Konfigurieren der Netzwerkschnittstelle auf dem Verdin-Modul

Bevor Sie die kompilierte Overlay-Datei auf das Zielgerät übertragen, muss das Verdin-Modul über eine Netzwerkverbindung mit dem Entwicklungshost verfügen.

Überprüfen Sie zunächst die verfügbaren Netzwerkschnittstellen und deren aktuelle Konfiguration:

ip a

Dieser Befehl zeigt alle auf dem System vorhandenen Netzwerkschnittstellen und ihren aktuellen Status an.

Als nächstes weisen Sie der Ethernet-Schnittstelle eine statische IP-Adresse zu:

ip addr add 192.168.10.2/24 dev eth0

Aktivieren Sie dann die Schnittstelle:

ip link set eth0 up

Wenn die Schnittstelle konfiguriert ist, kann das Verdin-Modul über das lokale Netzwerk mit dem Host-Rechner kommunizieren. Diese Verbindung wird im nächsten Schritt für die Übertragung der kompilierten .dtbo-Datei verwendet.

Konfigurieren einer statischen IP-Adresse auf dem Host-Computer

Um die Kommunikation zwischen dem Entwicklungshost und dem Verdin-Modul zu ermöglichen, müssen sich beide Geräte im selben Netzwerk-Subnetz befinden.

Nachdem Sie dem Verdin-Modul die Adresse 192.168.10.2 zugewiesen haben, konfigurieren Sie die Ethernet-Schnittstelle auf dem Host-Computer mit einer statischen IP-Adresse.

Öffnen Sie unter Windows die erweiterten Netzwerkeinstellungen, navigieren Sie dann zu den Eigenschaften des Ethernet-Adapters und konfigurieren Sie die IPv4-Einstellungen manuell.

Stellen Sie die folgenden Parameter ein: (Sie können auch andere einstellen, aber wir empfehlen nur diese)

  • IP-Adresse: 192.168.10.1
  • Subnetz-Maske: 255.255.255.0
  • Standard-Gateway: leer lassen

Bei dieser Konfiguration befinden sich beide Geräte im selben lokalen Netzwerk:

  • Host-Computer → 192.168.10.1
  • Verdin-Modul → 192.168.10.2

Mit dieser Einrichtung können die beiden Systeme direkt über Ethernet kommunizieren und die kompilierte .dtbo-Datei kann im nächsten Schritt an das Verdin-Modul übertragen werden.

Übertragen des Overlays auf das Verdin-Modul

Sobald der Host-Computer und das Verdin-Modul über das Netzwerk verbunden sind, kann das kompilierte Device Tree Overlay auf das Zielgerät übertragen werden.

In diesem Beispiel wird die Datei mit scp (Secure Copy Protocol) kopiert:

scp ~/work/device-tree-overlays/overlays/verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo \
[email protected]:/boot/overlays/

Dieser Befehl kopiert die kompilierte .dtbo-Datei vom Entwicklungshost in das Verzeichnis /boot/overlays auf dem Verdin-Modul.

Während der ersten SSH-Verbindung zeigt das Hostsystem möglicherweise eine Sicherheitsabfrage an, in der Sie aufgefordert werden, die Authentizität des Zielgeräts zu bestätigen. Nachdem Sie den Fingerabdruck akzeptiert haben, wird die Dateiübertragung normal fortgesetzt.

Das Verzeichnis /boot/overlays wird von der Toradex-Bootkonfiguration verwendet, um Device Tree Overlay-Binärdateien zu speichern, die beim Systemstart geladen werden können.

Zusammenfassung

Vergewissern Sie sich, dass das Overlay genau mit dem BSP und dem Kernelzweig übereinstimmt, die auf Ihrem Zielgerät verwendet werden – hier liegen die meisten Probleme bei der Erstellung begründet. Sobald die Umgebung korrekt eingerichtet ist, wird der Arbeitsablauf wiederholbar: kompilieren, bereitstellen, aktivieren und testen. Von da an ist die Anpassung von Overlays für andere Riverdi-Displays meist nur noch eine Frage der Anpassung panel-spezifischer Dateien.

ENTDECKEN SIE UNSER

Whitepaper

Erzielen Sie die perfekte Interaktion zwischen Benutzer und Display mit dem richtigen Touchsensor-IC. Hatten Sie jemals Probleme mit Phantomberührungen oder Zertifizierungen? Verbessern Sie Ihre Forschung und Entwicklung wie ein Profi mit unserem Whitepaper!

Schauen Sie sich unseren Produktkatalog an und sehen Sie, wie Sie durch Qualität und nicht an Qualität sparen können.

Kontaktieren Sie uns jetzt, sparen Sie mit Qualität, nicht an Qualität.