- Aperçu de l’architecture du système
- Logiciel
- Installation des dépendances
- Création d’un espace de pagination et préparation du répertoire de travail
- Clonage des sources du noyau Linux Toradex
- Sélection de la branche correcte du noyau
- Clonage du cadre de superposition de l’arborescence des périphériques
- Choisir la bonne branche du cadre de superposition
- Configuration du chemin d’accès aux sources du noyau et clonage des sources de la superposition Riverdi
- Clonage des sources de recouvrement Riverdi
- Vérification des branches du référentiel et localisation des sources superposées
- Construction de la superposition et préparation de l’arbre des sources du noyau
- Ajout des sources de recouvrement Riverdi au cadre de construction
- Enregistrement de la surcouche dans le système de construction
- Création de la superposition de l’arborescence des appareils
- Déploiement
- Résumé
L’objectif de ce guide est de créer un système opérationnel à partir d’un matériel propre/frais – en utilisant Torizon OS et les fichiers sources de l’arborescence de périphériques de Riverdi GitHub.
C’est ainsi que nous atteignons notre objectif :
- Flash Torizon OS from scratch
- Créez une superposition d’arborescence personnalisée à partir de Riverdi GitHub
- Activer la superposition dans Torizon
- Démarrez dans un écran entièrement graphique et tactile
Ce guide évite intentionnellement :
- Construire Yocto à partir de zéro
- Recompilation du noyau Linux
- Utilisation d’une machine virtuelle Linux complète
Aperçu de l’architecture du système


Matériel
- Toradex Verdin iMX8MP ou iMX8MM
- Porte-dahlia Toradex
- Ecran Riverdi 12.1″ (ou tout autre écran Riverdi, mais dans cet exemple nous utilisons 12.1″)
Avant de modifier le système, il est important de comprendre comment le pipeline d’affichage est construit sur Verdin iMX8MP + Dahlia.
Chemin d’affichage des données
Pour l’écran Riverdi 12.1″, la chaîne du signal est la suivante :
i.MX8MP LCDIF
↓
MIPI DSI
↓
SN65DSI83 (pont DSI → LVDS)
↓
Panneau LVDS
- Le bloc LCDIF à l’intérieur de l’i.MX8MP génère des données de pixels.
- Les données sont transmises via MIPI DSI.
- Le TI SN65DSI83 convertit le DSI en LVDS.
- Le panneau LVDS reçoit les données des pixels et affiche l’image.
Interfaces de contrôle
Outre le chemin vidéo, deux autres sous-systèmes doivent être configurés :
- Contrôle du rétroéclairage
- Piloté par le PWM de l’i.MX8MP
- Connecté au pilote du rétro-éclairage de l’écran
- Le rapport cyclique contrôle la luminosité (0-100%)
- Touches capacitives
- Connecté via I2C
- Génère des signaux d’interruption
- Expose un périphérique d’entrée sous Linux (/dev/input/eventX)
Logiciel
Nous avons utilisé un environnement Linux, dans cet exemple une machine virtuelle Windows sur laquelle Ubuntu est installé. C’est le cœur de notre guide. Vous trouverez ici tout ce qui est nécessaire – tout le code que nous utilisons, tous les liens et tout est expliqué. Vous trouverez notre github ci-dessous :
https://github.com/riverdi/riverdi-toradex-DTS
Installation des dépendances
Avant de construire les superpositions Device Tree, l’environnement de développement doit contenir les outils requis par le système de construction du noyau Linux.
Ouvrez un terminal et installez les paquets requis à l’aide de la commande suivante
sudo apt install -y \N git make gcc g++ bc bison flex \N libssl-dev libncurses-dev \N-librement python3 python3-pip rsync wget xz-utils \N-utils compilateur d'appareils et d'arbres
Ces paquets fournissent les utilitaires de base nécessaires à la construction des composants liés au noyau et des artefacts de l’arbre des périphériques.
Les outils suivants sont particulièrement importants pour le processus de construction de la superposition :
- Git – Utilisé pour cloner les sources du noyau Toradex et le framework de superposition device-tree.
- outils de construction (gcc, make, etc.) – Requis par le système de construction du noyau Linux.
- device-tree-compiler (dtc) – Compile les fichiers sources (.dts) de Device Tree en blobs binaires de Device Tree (.dtb ou .dtbo).
- Des bibliothèques supplémentaires telles que libssl-dev et libncurses-dev sont requises par diverses parties de l’infrastructure de construction du noyau.
Une fois les dépendances installées, le système est prêt à cloner les sources du noyau Toradex et à préparer l’environnement de construction pour la compilation de la couche Device Tree.
Création d’un espace de pagination et préparation du répertoire de travail
Lorsque vous travaillez dans une machine virtuelle, la mémoire vive disponible peut être limitée. Les systèmes de compilation liés au noyau peuvent nécessiter de la mémoire supplémentaire pendant la compilation, en particulier lorsqu’ils traitent de grandes arborescences de sources.
Pour éviter les échecs de construction liés à la mémoire, il est recommandé de créer un fichier d’échange qui fournit de la mémoire virtuelle supplémentaire.
Créez un fichier d’échange de 4 Go à l’aide des commandes suivantes :
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
Le fichier d’échange est ensuite ajouté à la configuration du système afin d’être automatiquement activé après le redémarrage :
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Après avoir préparé l’espace de pagination, créez un répertoire de travail qui contiendra tous les dépôts et artefacts de construction utilisés dans ce guide :
mkdir -p ~/work cd ~/work
Ce répertoire sera utilisé comme espace de travail principal pour cloner les sources du noyau Toradex, le cadre de superposition et les fichiers de superposition d’affichage Riverdi.
Clonage des sources du noyau Linux Toradex
L’étape suivante consiste à télécharger les sources du noyau Linux Toradex. Ces sources fournissent l’infrastructure de construction et les fichiers d’en-tête nécessaires au processus de compilation de la couche Device Tree.
Naviguez vers le répertoire de travail créé précédemment et clonez le dépôt de noyau Toradex :
git clone git://git.toradex.com/linux-toradex.git
Ce dépôt contient le noyau Linux utilisé dans les versions BSP de Toradex et inclut les fichiers de configuration et les scripts de compilation nécessaires pour compiler les composants du noyau et les superpositions de l’arbre des périphériques.
Le référentiel du noyau est relativement volumineux, de sorte que le clonage peut prendre plusieurs minutes en fonction de la connexion réseau. Dans la vidéo d’accompagnement, cette étape est accélérée pour que le tutoriel reste concis.
Une fois le dépôt téléchargé, l’étape suivante consiste à sélectionner la branche du noyau qui correspond à la version du BSP utilisée sur le module Verdin cible.
Sélection de la branche correcte du noyau
Après avoir cloné le dépôt de noyau Toradex, l’étape suivante consiste à sélectionner la branche qui correspond à la version du BSP fonctionnant sur l’appareil cible.
Les versions BSP de Toradex sont construites sur des versions spécifiques du noyau Linux, et les superpositions Device Tree doivent être compilées sur la même branche du noyau pour garantir la compatibilité.
Pour lister les branches disponibles du noyau liées à Linux 5.15, exécutez :
git branch -a | grep -E "5\.15|toradex_5\.15" | head -n 50
Cette commande filtre les branches disponibles et affiche celles relatives à la série de noyaux Linux 5.15 utilisés par plusieurs versions de Toradex BSP.
git checkout toradex_5.15-2.2.x-imx
Cette branche contient les sources du noyau et la configuration utilisée par les versions BSP de Toradex basées sur Linux 5.15 pour les processeurs NXP i.MX.
La sélection de la branche correcte garantit que la superposition de l’arborescence des périphériques sera construite sur la base d’une arborescence de noyau qui correspond au logiciel fonctionnant sur le matériel cible.
Clonage du cadre de superposition de l’arborescence des périphériques
L’étape suivante consiste à télécharger le cadre de superposition Toradex Device Tree. Ce dépôt contient l’infrastructure de construction utilisée pour compiler les superpositions Device Tree en utilisant le système de construction du noyau Linux.
Clonez le référentiel dans le répertoire de travail :
git clone git://git.toradex.com/device-tree-overlays.git
Ce dépôt fournit la structure du Makefile et l’intégration nécessaire pour construire les fichiers .dtbo en utilisant les sources du noyau clonées précédemment.
Une fois le référentiel cloné, un nouveau répertoire nommé device-tree-overlays apparaîtra dans l’espace de travail. Ce répertoire sera utilisé ultérieurement pour ajouter les sources de recouvrement Riverdi et compiler le recouvrement final.
Choisir la bonne branche du cadre de superposition
Après avoir cloné le dépôt device-tree-overlays, l’étape suivante consiste à sélectionner la branche qui correspond à la même version du noyau que celle utilisée précédemment.
Le cadre de superposition Device Tree doit correspondre à la branche du noyau utilisée dans le dépôt linux-toradex. Cela permet de s’assurer que le processus de construction de la superposition utilise les bons en-têtes de noyau et la bonne configuration de construction.
Tout d’abord, listez les branches disponibles relatives à la série de noyaux Linux 5.15 :
git branch -a | grep -E "5\.15|toradex_5\.15" | head -n 50
Cette commande filtre les branches disponibles et affiche celles associées au noyau Linux 5.15 utilisé par plusieurs versions de Toradex BSP.
Ensuite, consultez la branche correspondant à la version du noyau sélectionnée précédemment :
git checkout toradex_5.15-2.2.x-imx
L’utilisation de la même branche pour les sources du noyau et le cadre de recouvrement garantit que le système de construction reste compatible avec le BSP fonctionnant sur le module Verdin cible.
Configuration du chemin d’accès aux sources du noyau et clonage des sources de la superposition Riverdi
Avant de construire les superpositions Device Tree, le système de construction des superpositions doit savoir où se trouvent les sources du noyau Linux. Pour ce faire, vous devez définir la variable d’environnement STAGING_KERNEL_DIR, qui pointe vers le dépôt linux-toradex précédemment cloné.
Définissez la variable à l’aide de la commande suivante :
export STAGING_KERNEL_DIR=$HOME/work/linux-toradex
Pour que la configuration persiste entre les sessions du terminal, ajoutez-la au fichier de configuration de l’interpréteur de commandes :
echo 'export STAGING_KERNEL_DIR=$HOME/work/linux-toradex' >> ~/.bashrc source ~/.bashrc
Cette variable permet au cadre de construction de la superposition d’accéder aux en-têtes du noyau et aux scripts de construction requis par le système de construction du noyau Linux.
Clonage des sources de recouvrement Riverdi
Une fois le chemin du noyau configuré, l’étape suivante consiste à télécharger les sources de la superposition Riverdi utilisées dans ce guide.
Clonez le référentiel dans le répertoire de travail :
git clone https://github.com/riverdi/riverdi-toradex-DTS.git
Ce référentiel contient les fichiers sources de la superposition Device Tree utilisés pour configurer les écrans Riverdi avec les modules Toradex Verdin.
Ces sources de recouvrement seront intégrées dans le cadre de construction de recouvrement Toradex dans l’étape suivante du guide.
Vérification des branches du référentiel et localisation des sources superposées
Avant de poursuivre le processus de construction de la superposition, il est recommandé de vérifier que le dépôt linux-toradex et le framework device-tree-overlays utilisent la même branche du noyau.
Cela permet de s’assurer que le processus de construction de la superposition reste compatible avec les sources du noyau utilisées précédemment.
Vous pouvez vérifier la branche active dans chaque référentiel en utilisant :
git rev-parse --abbrev-ref HEAD
Les deux dépôts doivent indiquer le même nom de branche, par exemple :
toradex_5.15-2.2.x-imx
L’utilisation de la même branche dans les deux dépôts permet de s’assurer que le framework de superposition Device Tree utilise les bons en-têtes de noyau et la bonne configuration de construction.
Ensuite, naviguez vers le référentiel Riverdi cloné pour localiser les sources de superposition de l’arborescence des appareils :
cd ~/work/riverdi-toradex-DTS ls
Ce dépôt contient les fichiers source (.dts) et les fichiers d’inclusion (.dtsi) de Device Tree utilisés pour configurer les écrans Riverdi sur les plates-formes Toradex Verdin.
Les fichiers d’incrustation requis seront copiés dans le cadre de construction d’incrustation Toradex à l’étape suivante.
Construction de la superposition et préparation de l’arbre des sources du noyau
A ce stade, les sources de la superposition Riverdi sont présentes dans le répertoire de construction de la superposition et la superposition a été ajoutée à la liste dtb-y dans le Makefile. L’étape suivante consiste à compiler la superposition.
À partir du répertoire device-tree-overlays/overlays, lancez la compilation :
nettoyer faire
Si l’arbre des sources du noyau n’a pas encore été préparé, la compilation peut échouer avec une erreur similaire à :
La configuration du noyau n’est pas valide
include/generated/autoconf.h ou include/config/auto.conf manquent.
C’est normal car le cadre de superposition Toradex utilise le système de construction du noyau Linux (Kbuild). Kbuild nécessite une arborescence du noyau configurée et préparée pour générer les fichiers d’en-tête et les artefacts de configuration requis.
Pour résoudre ce problème, préparez l’arbre des sources du noyau :
- Naviguez jusqu’au dépôt du noyau.
cd ~/work/linux-toradex - Configurez la compilation pour la plateforme Verdin iMX8M Plus. Le SoC est un ARM 64 bits, utilisez donc arm64 et un compilateur croisé AArch64.
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu- - Installez la chaîne d’outils du compilateur croisé sur le système hôte :
sudo apt install -y gcc-aarch64-linux-gnu - Générer une configuration de noyau par défaut et préparer l’arborescence du noyau :
make defconfig
make oldconfig
make prepare
make scripts
Ces commandes génèrent les fichiers de configuration et les en-têtes manquants requis par Kbuild, y compris include/config/auto.conf et include/generated/autoconf.h.
Une fois l’arborescence du noyau préparée, retournez dans le répertoire de la superposition et exécutez à nouveau la compilation de la superposition :
cd ~/work/device-tree-overlays/overlays nettoyer faire
La superposition devrait maintenant se compiler avec succès et produire un fichier de sortie .dtbo.
Ajout des sources de recouvrement Riverdi au cadre de construction
Le cadre de construction de la superposition Toradex compile les superpositions situées dans le répertoire overlays. Par conséquent, les fichiers sources de l’arborescence des appareils Riverdi doivent être copiés dans ce répertoire avant que le processus de construction ne puisse commencer.
Naviguez jusqu’au répertoire de construction de la superposition :
cd ~/work/device-tree-overlays/overlays
Copiez le fichier source de la superposition Riverdi pour l’écran DSI 12 pouces :
cp ~/work/riverdi-toradex-DTS/verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dts .
Ensuite, copiez les fichiers d’inclusion d’affichage supplémentaires utilisés par la superposition :
cp ~/work/riverdi-toradex-DTS/display-*.dtsi
Ces fichiers .dtsi contiennent des données de configuration spécifiques au panneau, telles que les paramètres de synchronisation et les définitions de l’interface du panneau utilisées par le fichier d’incrustation principal.
Enregistrement de la surcouche dans le système de construction
Pour que la superposition soit compilée, elle doit être ajoutée au Makefile utilisé par le framework de superposition Toradex.
Ouvrez le fichier Makefile situé dans le répertoire overlays :
nano Makefile
Ajoutez une nouvelle entrée à la liste dtb-y :
cd ~/work/riverdi-toradex-DTS dtb-y += verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo
Cette ligne indique au système de compilation du noyau de compiler le fichier .dts correspondant en un binaire .dtbo au cours du processus de compilation.
Une fois cette entrée ajoutée, le recouvrement fait partie des cibles de construction et sera généré lors de l’exécution de la commande de construction du recouvrement.
Création de la superposition de l’arborescence des appareils
Après avoir préparé l’arbre des sources du noyau, la superposition peut être compilée avec succès.
Retournez au répertoire de construction de la superposition :
cd ~/work/device-tree-overlays/overlays
Nettoyez tous les artefacts de la construction précédente :
nettoyer
Lancez ensuite la construction de la superposition :
faire
Au cours du processus de construction, le système de construction du noyau Linux invoque le compilateur d’arborescence (dtc) et compile le fichier source de la superposition enregistrée dans un fichier binaire .dtbo.
Si la compilation se termine avec succès, la sortie de la compilation comprendra :
DTC verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo
Cela indique que le fichier source de l’arbre des périphériques a été compilé avec succès.
Le fichier .dtbo généré apparaît dans le même répertoire d’overlays et est maintenant prêt à être transféré vers le module Toradex Verdin cible.
Déploiement
Connexion au module Verdin
Après avoir construit avec succès la superposition de l’arbre des périphériques sur le système hôte, l’étape suivante consiste à la déployer sur le module Toradex Verdin.
Pour accéder à la console Linux du module, connectez-vous à l’appareil à l’aide d’un terminal série. Dans cet exemple, PuTTY est utilisé pour établir la connexion.
Configurez la connexion série avec les paramètres suivants :
- Type de connexion : Série
- Ligne série : Le port COM assigné à l’UART de débogage Verdin – vérifiez-le dans le gestionnaire de périphériques.
- Vitesse : 115200
Après l’ouverture de la connexion, le terminal affichera le journal de démarrage et donnera éventuellement accès à l’interpréteur de commandes Linux fonctionnant sur le module Verdin.
Cette console sera utilisée pour transférer le fichier .dtbo compilé et activer la superposition dans la configuration de démarrage.
Configuration de l’interface réseau sur le module Verdin
Avant de transférer le fichier de recouvrement compilé vers l’appareil cible, le module Verdin doit disposer d’une connectivité réseau avec l’hôte de développement.
Commencez par vérifier les interfaces réseau disponibles et leur configuration actuelle :
ip a
Cette commande affiche toutes les interfaces réseau présentes sur le système et leur état actuel.
Ensuite, attribuez une adresse IP statique à l’interface Ethernet :
ip addr add 192.168.10.2/24 dev eth0
Activez ensuite l’interface :
ip link set eth0 up
Une fois l’interface configurée, le module Verdin peut communiquer avec la machine hôte via le réseau local. Cette connexion sera utilisée dans l’étape suivante pour transférer le fichier .dtbo compilé.
Configuration d’une adresse IP statique sur l’ordinateur hôte
Pour permettre la communication entre l’hôte de développement et le module Verdin, les deux appareils doivent être situés dans le même sous-réseau.
Après avoir attribué l’adresse 192.168.10.2 au module Verdin, configurez l’interface Ethernet de l’ordinateur hôte avec une adresse IP statique.
Sous Windows, ouvrez les paramètres réseau avancés, puis accédez aux propriétés de l’adaptateur Ethernet et configurez manuellement les paramètres IPv4.
Définissez les paramètres suivants : (vous pouvez en définir d’autres, mais nous vous conseillons de suivre ces recommandations)
- Adresse IP : 192.168.10.1
- Masque de sous-réseau : 255.255.255.0
- Passerelle par défaut : laissez vide
Cette configuration place les deux appareils dans le même réseau local :
- Ordinateur hôte → 192.168.10.1
- Module Verdin → 192.168.10.2
Avec cette configuration en place, les deux systèmes peuvent communiquer directement par Ethernet et le fichier .dtbo compilé peut être transféré au module Verdin dans l’étape suivante.
Transfert de l’overlay vers le module Verdin
Une fois que l’ordinateur hôte et le module Verdin sont connectés via le réseau, la superposition de l’arborescence des appareils compilée peut être transférée vers l’appareil cible.
Dans cet exemple, le fichier est copié à l’aide de scp (Secure Copy Protocol) :
scp ~/work/device-tree-overlays/overlays/verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo \N-overlays/verdin-imx8mp_panel-cap-touch-12inch-dsi_overlay.dtbo [email protected]:/boot/overlays/
Cette commande copie le fichier .dtbo compilé depuis l’hôte de développement dans le répertoire /boot/overlays du module Verdin.
Lors de la première connexion SSH, le système hôte peut afficher une invite de sécurité demandant de confirmer l’authenticité du dispositif cible. Après acceptation de l’empreinte digitale, le transfert de fichiers se déroule normalement.
Le répertoire /boot/overlays est utilisé par la configuration de démarrage de Toradex pour stocker les binaires de superposition de l’arbre des périphériques qui peuvent être chargés lors du démarrage du système.
Résumé
Assurez-vous que la superposition correspond à la branche exacte du BSP et du noyau utilisée sur votre appareil cible – c’est de là que proviennent la plupart des problèmes de compilation. Une fois l’environnement correctement configuré, le flux de travail devient reproductible : compiler, déployer, activer et tester. A partir de là, l’adaptation des overlays à d’autres écrans Riverdi consiste principalement à ajuster les fichiers spécifiques aux panneaux.
DÉCOUVREZ NOTRE
Livre blanc
Réalisez l’interaction parfaite entre l’utilisateur et l’écran avec le bon circuit intégré pour capteur tactile. Vous avez déjà été confronté à des problèmes d’événements tactiles fantômes ou de certification ? Boostez votre R&D comme un pro grâce à notre livre blanc !



