Link copiato negli appunti!

Creazione di sovrapposizioni ad albero di dispositivi su Toradex per i display Riverdi

Back to top

L’obiettivo di questa guida è la creazione di un sistema funzionante partendo da un hardware pulito e fresco, utilizzando Torizon OS e i file sorgente dell’albero dei dispositivi di esempio da Riverdi GitHub.

In questo modo otteniamo:

  • Flashare il sistema operativo Torizon da zero
  • Costruisci una struttura ad albero dei dispositivi personalizzata da Riverdi GitHub
  • Abilita la sovrapposizione in Torizon
  • Avvio in un display completamente grafico con touch

Questa guida evita intenzionalmente:

  • Costruire Yocto da zero
  • Ricompilazione del kernel Linux
  • Utilizzare una macchina virtuale Linux completa

Panoramica dell’architettura del sistema

Hardware

  • Toradex Verdin iMX8MP o iMX8MM
  • Portatore di Dalia Toradex
  • Display Riverdi da 12,1″ (o qualsiasi altro display Riverdi, ma in questo esempio usiamo il 12,1″)

Prima di modificare il sistema, è importante capire come è costruita la pipeline di visualizzazione su Verdin iMX8MP + Dahlia.

Percorso dati del display

Per il display Riverdi da 12,1″, la catena del segnale è la seguente:

i.MX8MP LCDIF

MIPI DSI

SN65DSI83 (ponte DSI → LVDS)

Pannello LVDS

  • Il blocco LCDIF all’interno dell’i.MX8MP genera i dati dei pixel.
  • I dati vengono trasmessi tramite MIPI DSI.
  • Il TI SN65DSI83 converte il DSI in LVDS.
  • Il pannello LVDS riceve i dati dei pixel e visualizza l’immagine.

Interfacce di controllo

Oltre al percorso video, devono essere configurati altri due sottosistemi:

  • Controllo della retroilluminazione
    • Guidato dal PWM dell’i.MX8MP
    • Collegato al driver della retroilluminazione del display
    • Il ciclo di lavoro controlla la luminosità (0-100%)
  • Tocco capacitivo
    • Collegato via I2C
    • Genera segnali di interruzione
    • Espone un dispositivo di input in Linux (/dev/input/eventX)

Software

Abbiamo utilizzato un ambiente Linux, in questo esempio una macchina virtuale Windows con Ubuntu installato. Questo è il cuore della nostra guida. Qui troverai tutto il necessario: tutto il codice che utilizziamo, tutti i link e tutte le spiegazioni. Trovi il nostro github qui sotto:
https://github.com/riverdi/riverdi-toradex-DTS

Installare le dipendenze della compilazione

Prima di costruire gli overlay della Device Tree, l’ambiente di sviluppo deve contenere gli strumenti richiesti dal sistema di compilazione del kernel Linux.
Apri un terminale e installa i pacchetti necessari utilizzando le seguenti istruzioni

sudo apt install -y \
git make gcc g++ bc bison flex \
libssl-dev libncurses-dev \
python3 python3-pip rsync wget xz-utils \
dispositivo-albero-compilatore

Questi pacchetti forniscono le utility di base necessarie per costruire i componenti relativi al kernel e gli artefatti della Device Tree.

I seguenti strumenti sono particolarmente importanti per il processo di creazione dell’overlay:

  • Git – Utilizzato per clonare i sorgenti del kernel Toradex e il framework di overlay device-tree.
  • strumenti di compilazione (gcc, make, ecc.) – Richiesti dal sistema di compilazione del kernel Linux.
  • device-tree-compiler (dtc) – Compila i file sorgente di Device Tree (.dts) in blob binari di Device Tree (.dtb o .dtbo).
  • Librerie aggiuntive come libssl-dev e libncurses-dev sono richieste da varie parti dell’infrastruttura di compilazione del kernel.

Una volta installate le dipendenze, il sistema è pronto per clonare i sorgenti del kernel Toradex e preparare l’ambiente di compilazione per la compilazione dell’overlay Device Tree.

Creare lo spazio di swap e preparare la directory di lavoro

Quando si lavora in una macchina virtuale, la RAM disponibile può essere limitata. I sistemi di compilazione legati al kernel possono richiedere memoria aggiuntiva durante la compilazione, soprattutto quando si elaborano alberi di sorgenti di grandi dimensioni.

Per evitare errori di compilazione legati alla memoria, si consiglia di creare un file di swap che fornisca memoria virtuale aggiuntiva.

Crea un file di swap da 4 GB utilizzando i seguenti comandi:

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

Il file di swap viene quindi aggiunto alla configurazione del sistema in modo da essere abilitato automaticamente dopo il riavvio:

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

Dopo aver preparato lo spazio di swap, crea una directory di lavoro che conservi tutti i repository e gli artefatti di compilazione utilizzati in questa guida:

mkdir -p ~/work
cd ~/lavoro

Questa directory sarà utilizzata come spazio di lavoro principale per clonare i sorgenti del kernel Toradex, il framework di overlay e i file di overlay della visualizzazione Riverdi.

Clonare i sorgenti del kernel Linux di Toradex

Il passo successivo è scaricare i sorgenti del kernel Linux di Toradex. Questi sorgenti forniscono l’infrastruttura di compilazione e i file header necessari al processo di compilazione dell’overlay Device Tree.

Naviga nella directory di lavoro creata in precedenza e clona il repository del kernel Toradex:

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

Questo repository contiene il kernel Linux utilizzato nelle versioni BSP di Toradex e include i file di configurazione e gli script di compilazione necessari per compilare i componenti del kernel e gli overlay della Device Tree.

Il repository del kernel è relativamente grande, quindi la clonazione può richiedere diversi minuti a seconda della connessione di rete. Nel video di accompagnamento questo passaggio viene accelerato per mantenere il tutorial conciso.

Dopo aver scaricato il repository, il passo successivo sarà la selezione del ramo del kernel che corrisponde alla versione del BSP utilizzata nel modulo Verdin di destinazione.

Selezionare il ramo del kernel corretto

Dopo aver clonato il repository del kernel di Toradex, il passo successivo consiste nel selezionare il ramo che corrisponde alla versione del BSP in esecuzione sul dispositivo di destinazione.

Le versioni BSP di Toradex sono costruite su specifiche versioni del kernel Linux e gli overlay di Device Tree devono essere compilati con lo stesso ramo del kernel per garantire la compatibilità.

Per elencare i rami del kernel disponibili relativi a Linux 5.15, esegui:

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

Questo comando filtra i rami disponibili e mostra quelli relativi alla serie di kernel Linux 5.15 utilizzati da diverse release del BSP Toradex.

git checkout toradex_5.15-2.2.x-imx

Questo ramo contiene i sorgenti del kernel e la configurazione utilizzata dalle versioni BSP di Toradex basate su Linux 5.15 per i processori NXP i.MX.

La selezione del ramo corretto garantisce che l’overlay della Struttura dei Dispositivi sia costruito sulla base di una struttura del kernel che corrisponde al software in esecuzione sull’hardware di destinazione.

Clonare il framework di overlay Device Tree

Il passo successivo è scaricare il framework Toradex Device Tree overlay. Questo repository contiene l’infrastruttura di compilazione utilizzata per compilare gli overlay Device Tree utilizzando il sistema di compilazione del kernel Linux.

Clona il repository nella directory di lavoro:

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

Questo repository fornisce la struttura del Makefile e l’integrazione necessaria per costruire i file .dtbo utilizzando i sorgenti del kernel clonati in precedenza.

Una volta clonato il repository, nell’area di lavoro apparirà una nuova directory denominata device-tree-overlays. Questa directory verrà utilizzata in seguito per aggiungere i sorgenti dell’overlay Riverdi e compilare l’overlay finale.

Selezione del ramo di struttura di overlay corretto

Dopo aver clonato il repository device-tree-overlays, il passo successivo è quello di selezionare il ramo che corrisponde alla stessa versione del kernel utilizzata in precedenza.

Il framework dell’overlay Device Tree deve corrispondere al ramo del kernel utilizzato nel repository linux-toradex. Questo assicura che il processo di compilazione dell’overlay utilizzi le intestazioni del kernel e la configurazione di compilazione corrette.

Per prima cosa, elenca i rami disponibili relativi alla serie di kernel Linux 5.15:

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

Questo comando filtra i rami disponibili e visualizza quelli associati al kernel Linux 5.15 utilizzato da diverse release del BSP Toradex.

Successivamente, controlla il ramo corrispondente alla versione del kernel selezionata in precedenza:

git checkout toradex_5.15-2.2.x-imx

L’utilizzo dello stesso ramo sia per i sorgenti del kernel che per il framework di overlay assicura che il sistema di compilazione rimanga compatibile con il BSP in esecuzione sul modulo Verdin di destinazione.

Configurare il percorso dei sorgenti del kernel e clonare i sorgenti dell’overlay Riverdi

Prima di costruire gli overlay di Device Tree, il sistema di creazione degli overlay deve sapere dove si trovano i sorgenti del kernel Linux. Ciò avviene definendo la variabile d’ambiente STAGING_KERNEL_DIR, che punta al repository linux-toradex precedentemente clonato.

Imposta la variabile con il seguente comando:

esporta STAGING_KERNEL_DIR=$HOME/work/linux-toradex

Per rendere la configurazione persistente tra le sessioni del terminale, aggiungila al file di configurazione della shell:

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

Questa variabile permette al framework di compilazione dell’overlay di accedere agli header del kernel e agli script di compilazione richiesti dal sistema di compilazione del kernel Linux.

Clonare le fonti di overlay Riverdi

Una volta configurato il percorso del kernel, il passo successivo è scaricare i sorgenti dell’overlay Riverdi utilizzati in questa guida.

Clona il repository nella directory di lavoro:

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

Questo repository contiene i file sorgente di Device Tree overlay utilizzati per configurare i display Riverdi con i moduli Toradex Verdin.

Queste fonti di overlay saranno integrate nel framework di costruzione di overlay di Toradex nella fase successiva della guida.

Verifica dei rami del repository e individuazione delle fonti di overlay

Prima di procedere con il processo di creazione degli overlay, si consiglia di verificare che sia il repository linux-toradex che il framework device-tree-overlays utilizzino lo stesso ramo del kernel.

Questo assicura che il processo di creazione dell’overlay rimanga compatibile con i sorgenti del kernel utilizzati in precedenza.

Puoi verificare il ramo attivo in ogni repository utilizzando:

git rev-parse --abbrev-ref HEAD

Entrambi i repository dovrebbero riportare lo stesso nome di ramo, ad esempio:

toradex_5.15-2.2.x-imx

L’utilizzo dello stesso ramo in entrambi i repository assicura che il framework di overlay Device Tree utilizzi gli header del kernel e la configurazione di compilazione corretti.

Successivamente, naviga nel repository Riverdi clonato per individuare le sorgenti di overlay della Struttura dei dispositivi:

cd ~/work/riverdi-toradex-DTS
ls

Questo repository contiene i file sorgente (.dts) e i file di inclusione (.dtsi) della Device Tree utilizzati per configurare i display Riverdi sulle piattaforme Toradex Verdin.

I file di overlay necessari saranno copiati nel framework di creazione di overlay di Toradex nel passaggio successivo.

Costruire l’overlay e preparare l’albero dei sorgenti del kernel

A questo punto, i sorgenti dell’overlay Riverdi sono presenti nella directory di compilazione dell’overlay e l’overlay è stato aggiunto all’elenco dtb-y nel Makefile. Il passo successivo è la compilazione dell’overlay.

Dalla directory device-tree-overlays/overlays, avvia la compilazione:

pulire
fare

Se l’albero dei sorgenti del kernel non è ancora stato preparato, la compilazione può fallire con un errore simile a:

La configurazione del kernel non è valida
mancano include/generated/autoconf.h o include/config/auto.conf

Questo è previsto perché il framework Toradex overlay utilizza il sistema di compilazione del kernel Linux (Kbuild). Kbuild richiede un albero del kernel configurato e preparato per generare i file header e gli artefatti di configurazione necessari.

Per risolvere questo problema, prepara l’albero dei sorgenti del kernel:

  1. Vai al repository del kernel.
    cd ~/work/linux-toradex
  2. Configura la build per la piattaforma Verdin iMX8M Plus. Il SoC è ARM a 64 bit, quindi usa arm64 e un cross-compilatore AArch64.
    export ARCH=arm64
    export CROSS_COMPILE=aarch64-linux-gnu-
  3. Installa la toolchain del cross-compilatore sul sistema host:
    sudo apt install -y gcc-aarch64-linux-gnu
  4. Genera una configurazione predefinita del kernel e prepara l’albero del kernel:
    make defconfig
    make oldconfig
    make prepare
    make scripts

Questi comandi generano i file di configurazione e gli header mancanti richiesti da Kbuild, tra cui include/config/auto.conf e include/generated/autoconf.h.

Dopo che l’albero del kernel è stato preparato, torna alla directory dell’overlay ed esegui nuovamente la compilazione dell’overlay:

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

L’overlay dovrebbe ora essere compilato con successo e produrre un file di output .dtbo.

Aggiungere i sorgenti dell’overlay Riverdi al framework di build

Il framework di creazione degli overlay Toradex compila gli overlay che si trovano nella directory overlays. Pertanto, i file sorgente della Riverdi Device Tree devono essere copiati in questa directory prima che il processo di compilazione possa iniziare.

Naviga nella directory di creazione dell’overlay:

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

Copia il file sorgente dell’overlay Riverdi per il display DSI da 12 pollici:

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

Successivamente, copia i file di inclusione di visualizzazione aggiuntivi utilizzati dall’overlay:

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

Questi file .dtsi contengono dati di configurazione specifici del pannello, come i parametri di temporizzazione e le definizioni dell’interfaccia del pannello utilizzate dal file di overlay principale.

Registrare l’overlay nel sistema di compilazione

Affinché l’overlay venga compilato, deve essere aggiunto al Makefile utilizzato dal framework Toradex overlay.

Apri il Makefile che si trova nella directory degli overlay:

nano Makefile

Aggiungi una nuova voce all’elenco dtb-y:

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

Questa riga indica al sistema di compilazione del kernel di compilare il file .dts corrispondente in un binario .dtbo durante il processo di compilazione.

Una volta aggiunta questa voce, l’overlay diventa parte dei target di compilazione e verrà generato quando viene eseguito il comando di compilazione dell’overlay.

Creazione della struttura ad albero dei dispositivi

Dopo aver preparato l’albero dei sorgenti del kernel, l’overlay può essere compilato con successo.

Torna alla directory di creazione dell’overlay:

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

Pulisce tutti gli artefatti di compilazione precedenti:

pulire

Poi avvia la creazione dell’overlay:

fare

Durante il processo di creazione, il sistema di creazione del kernel Linux invoca il Device Tree Compiler (dtc) e compila il file sorgente dell’overlay registrato in un file binario .dtbo.

Se la compilazione viene completata con successo, l’output della compilazione includerà:

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

Questo indica che il file sorgente della Struttura dei dispositivi è stato compilato con successo.

Il file .dtbo generato apparirà nella stessa directory degli overlay ed è ora pronto per essere trasferito al modulo Toradex Verdin di destinazione.

Distribuzione

Collegamento al modulo Verdin

Dopo aver creato con successo l’overlay dell’albero dei dispositivi sul sistema host, il passo successivo consiste nel distribuirlo sul modulo Toradex Verdin.

Per accedere alla console Linux del modulo, collegati al dispositivo utilizzando un terminale seriale. In questo esempio, per stabilire la connessione viene utilizzato PuTTY.

Configura la connessione seriale con i seguenti parametri:

  • Tipo di connessione: Seriale
  • Linea seriale: La porta COM assegnata alla UART di debug di Verdin – controllala in Gestione dispositivi.
  • Velocità: 115200

Dopo aver aperto la connessione, il terminale visualizzerà il registro di avvio e infine fornirà l’accesso alla shell Linux in esecuzione sul modulo Verdin.

Questa console verrà utilizzata per trasferire il file .dtbo compilato e abilitare l’overlay nella configurazione di avvio.

Configurazione dell’interfaccia di rete del modulo Verdin

Prima di trasferire il file di overlay compilato al dispositivo di destinazione, il modulo Verdin deve essere connesso alla rete con l’host di sviluppo.

Per prima cosa, controlla le interfacce di rete disponibili e la loro configurazione attuale:

ip a

Questo comando visualizza tutte le interfacce di rete presenti sul sistema e il loro stato attuale.

Successivamente, assegna un indirizzo IP statico all’interfaccia Ethernet:

ip addr add 192.168.10.2/24 dev eth0

Quindi abilita l’interfaccia:

ip link set eth0 up

Con l’interfaccia configurata, il modulo Verdin può comunicare con il computer host attraverso la rete locale. Questa connessione verrà utilizzata nella fase successiva per trasferire il file .dtbo compilato.

Configurazione di un indirizzo IP statico sul computer host

Per consentire la comunicazione tra l’host di sviluppo e il modulo Verdin, entrambi i dispositivi devono trovarsi nella stessa subnet di rete.

Dopo aver assegnato l’indirizzo 192.168.10.2 al modulo Verdin, configura l’interfaccia Ethernet del computer host con un indirizzo IP statico.

Su Windows, apri le Impostazioni di rete avanzate, quindi vai alle proprietà dell’adattatore Ethernet e configura manualmente le impostazioni IPv4.

Imposta i seguenti parametri: (puoi impostarne di diversi, ma ti consigliamo solo questi)

  • Indirizzo IP: 192.168.10.1
  • Maschera di sottorete: 255.255.255.0
  • Gateway predefinito: lasciare vuoto

Questa configurazione colloca entrambi i dispositivi nella stessa rete locale:

  • Computer host → 192.168.10.1
  • Modulo Verdin → 192.168.10.2

Con questa configurazione, i due sistemi possono comunicare direttamente via Ethernet e il file .dtbo compilato può essere trasferito al modulo Verdin nella fase successiva.

Trasferimento dell’overlay al modulo Verdin

Una volta che il computer host e il modulo Verdin sono collegati in rete, l’overlay della Struttura dei dispositivi compilato può essere trasferito al dispositivo di destinazione.

In questo esempio, il file viene copiato utilizzando il protocollo scp (Secure Copy Protocol):

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

Questo comando copia il file .dtbo compilato dall’host di sviluppo alla directory /boot/overlays del modulo Verdin.

Durante la prima connessione SSH, il sistema host potrebbe visualizzare un messaggio di sicurezza che chiede di confermare l’autenticità del dispositivo di destinazione. Dopo aver accettato l’impronta digitale, il trasferimento dei file procede normalmente.

La directory /boot/overlays è utilizzata dalla configurazione di avvio di Toradex per memorizzare i file binari di overlay della Device Tree che possono essere caricati all’avvio del sistema.

Sintesi

Assicurati che l’overlay corrisponda esattamente al BSP e al ramo del kernel utilizzati sul dispositivo di destinazione: è da qui che deriva la maggior parte dei problemi di compilazione. Una volta impostato correttamente l’ambiente, il flusso di lavoro diventa ripetibile: compilare, distribuire, attivare e testare. Da qui, adattare gli overlay per altri display Riverdi è per lo più una questione di adattamento dei file specifici del pannello.

SCOPRI IL NOSTRO

Carta bianca

Ottieni un’interazione perfetta tra utente e display con il giusto IC per sensore tattile. Hai mai avuto problemi con eventi di tocco fantasma o con la certificazione? Potenzia la tua ricerca e sviluppo come un professionista con il nostro Whitepaper!

Consulta il nostro catalogo prodotti e scopri come puoi risparmiare sulla qualità, non sulla qualità.

Contattaci subito, risparmia con la qualità, non sulla qualità.