L'implémentation des superpositions d'arborescence de périphériques (DTO) implique de diviser l'arborescence de périphériques (DT), de la compiler, de la partitionner et de l'exécuter. Une fois que vous disposez d'une implémentation fonctionnelle, vous devez également maintenir la compatibilité entre les deux DT et déterminer une stratégie pour assurer la sécurité de chaque partition DT.
Diviser la DT
Commencez par diviser la DT en deux parties :
- DT principale : partie réservée au SoC et configurations par défaut, fournies par le fournisseur du SoC.
- Superposition DT : configurations spécifiques à l'appareil, fournies par l'ODM/OEM.
Après avoir divisé les DT, vous devez vous assurer de la compatibilité entre la DT principale et la DTO afin que la fusion de la DT principale et de la DTO génère une DT complète pour l'appareil. Pour en savoir plus sur le format et les règles des DTO, consultez la syntaxe des DTO. Pour en savoir plus sur les DT multiples, consultez Utiliser plusieurs DT.
Compiler les DT principales et les DTO
Pour compiler la DT principale :
- Compilez la DT principale
.dtsdans un fichier.dtb. - Flashez le fichier
.dtbdans une partition accessible au moment de l'exécution du bootloader (détaillé dans [Partitionner les DT](#partition)).
Pour compiler la DTO :
- Compilez la DTO
.dtsdans un fichier.dtbo. Bien que ce format de fichier soit le même que celui du fichier.dtbmis en forme en tant que DT aplatie, l'extension de fichier différente le distingue de la DT principale. - Flashez le fichier
.dtbodans une partition accessible au moment de l'exécution du bootloader (détaillé dans [Partitionner les DT](#partition)).
Pour en savoir plus sur la compilation avec DTC et la validation des résultats des DTO sur l'hôte, consultez Compiler et valider.
Partitionner les DT
Déterminez un emplacement accessible au moment de l’exécution du bootloader et de confiance dans la mémoire flash
pour placer .dtb et .dtbo.
Exemples d'emplacements pour la DT principale :
- Partie de la partition de démarrage, ajoutée au noyau (
image.gz) - Blobs DT distincts (
.dtb) dans une partition dédiée (dtb)
Exemples d'emplacements pour la DTO :

Figure 1. Placez .dtbo dans une partition odm (ne le faites que si votre bootloader est capable de charger des données à partir du système de fichiers d'une partition odm).

Figure 2. Placez .dtbo dans une partition unique, telle qu'une partition dtbo.
Remarque : La taille de la partition DTO dépend de l'appareil et du nombre de modifications nécessaires en plus du blob DT principal. En règle générale, 8 Mo sont plus que suffisants et permettent de se développer à l'avenir si nécessaire.
Pour les appareils qui acceptent les mises à jour aisées (A/B), A/B les partitions DT principales et les partitions DTO :

Figure 3. Partition DTBO A/B, exemple 1.

Figure 4. Partition DTBO A/B, exemple 2.
Exécuter dans le bootloader
Pour exécuter :

Figure 5. Implémentation d'exécution typique pour les DTO dans le bootloader.
- Chargez
.dtbdu stockage dans la mémoire. - Chargez
.dtbodu stockage dans la mémoire. - Superposez
.dtbavec.dtbopour obtenir une DT fusionnée. - Démarrez le noyau en indiquant l'adresse mémoire de la DT fusionnée.
Maintenir la compatibilité
La DTB principale (du fournisseur du SoC) est traitée comme une surface d'API pour les DTBO. Après avoir séparé la DT en une partie commune au SoC et une partie spécifique à l'appareil, vous devez maintenir la compatibilité mutuelle des deux parties à l'avenir, y compris :
- Définition de la DT dans la DT principale : par exemple, les nœuds, les propriétés et les libellés. Toute modification de la définition dans la DT principale peut entraîner des modifications dans la DTO. Par exemple, pour corriger un nom de nœud dans la DT principale, définissez un libellé "alias" qui correspond au nom de nœud d'origine (pour éviter la modification de la DTO).
- Superposition de l'emplacement du magasin DT. par exemple, le nom de la partition et le format de stockage.
Assurer la sécurité
Le bootloader doit s'assurer que la DTB ou la DTBO est sécurisée, non modifiée et non corrompue. Vous pouvez utiliser n'importe quelle solution pour sécuriser la DTB ou la DTBO, par exemple, la signature d'image de démarrage dans VBoot 1.0 ou le pied de page AVB HASH (VBoot 2.0).
- Si la DTB ou la DTBO se trouve dans une partition unique, vous pouvez ajouter cette partition à la chaîne de confiance d'AVB. La chaîne de confiance commence à partir d'une racine de confiance protégée par le matériel et se poursuit jusqu'au bootloader, qui vérifie l'intégrité et l'authenticité de la partition DTB ou DTBO.
- Si la DTB ou la DTBO se trouve dans une partition existante (telle que la partition
odm), cette partition doit se trouver dans la chaîne de confiance d'AVB. (La partition DTBO peut partager une clé publique avec la partitionodm).
Pour en savoir plus, consultez Démarrage validé.