L'implémentation de superpositions d'arborescence d'appareils (DTO) implique de diviser l'arborescence d'appareils, de construire, le partitionnement et l'exécution. Une fois que vous disposez d'une implémentation fonctionnelle, vous devez également gérer la compatibilité entre les deux DT et déterminer une stratégie pour garantir la sécurité de chaque partition DT.
Diviser le DT
Commencez par diviser le transfert de données en deux parties:
- Main DT (Transfert de données principal). La partie SoC uniquement et les configurations par défaut, fournis par le fournisseur de SoC.
- Superposition de transfert de données. Les configurations spécifiques à l'appareil, fournies par ODM/OEM.
Après avoir divisé les DT, vous devez vous assurer de la compatibilité entre les DT et DT superposée, de sorte que la fusion de DT principale et de DT de superposition donne un résultat complet DT de l'appareil. Pour en savoir plus sur le format et les règles d'une DTO, consultez Syntaxe DTO. Pour en savoir plus sur plusieurs DT, voir Transfert de données multiples.
Création de tables de transfert principales et de superposition
Pour créer la DT principale:
- Compilez le fichier DT principal
.dts
dans un fichier.dtb
. - Flasher le fichier
.dtb
dans une partition accessible à l'environnement d'exécution du bootloader (détaillé dans la section [Partition DTs](#partition)).
Pour créer la DT superposée:
- Compilez le DT
.dts
de superposition dans un fichier.dtbo
. Alors que ce format de fichier est identique au fichier.dtb
formaté en tant que DT aplatie, l'extension de fichier différente la distingue de la DT principale. - Flasher le fichier
.dtbo
dans une partition accessible à l'environnement d'exécution du bootloader (détaillé dans la section [Partition DTs](#partition)).
Pour plus de détails sur la compilation avec le DTC et la vérification des résultats DTO sur l'hôte, voir Compilez et vérifiez.
DT de partition
Déterminer un emplacement fiable et accessible à l'exécution du bootloader dans Flash
pour placer .dtb
et .dtbo
.
Exemples d'emplacements pour le transfert de données principal:
- Partie de la partition de démarrage ajoutée au noyau (
image.gz
) - Séparer les blobs de transfert de données (
.dtb
) dans une partition dédiée (dtb
)
Exemples d'emplacements pour le transfert de données de superposition:
Figure 1 : Placez le fichier .dtbo dans une partition unique, telle qu’une partition dtbo.
Figure 2. Placez le fichier .dtbo dans une partition odm (faites-le uniquement si votre bootloader dispose la possibilité de charger des données à partir du système de fichiers d'une partition odm).
Remarque:La taille du fichier la partition DT superposée dépend de l'appareil et de la quantité de modifications nécessaires sur en haut du blob principal du transfert de données. En règle générale, 8 Mo sont plus que suffisant et permettent se développer à l'avenir si nécessaire.
Pour les appareils compatibles avec mises à jour automatiques (A/B), effectuez des tests A/B Partitions DT principale et DT superposée:
Figure 3. Partition A/B DTBO, exemple 1.
Figure 4. Partition A/B DTBO, exemple 2.
Exécuter dans le bootloader
Pour exécuter cette commande:
Figure 5. Implémentation d'exécution typique pour DTO dans le bootloader.
- Charger
.dtb
de l'espace de stockage dans la mémoire - Charger
.dtbo
de l'espace de stockage dans la mémoire - Superposez
.dtb
avec.dtbo
pour en faire un DT fusionné. - Démarrage du noyau en fonction de l'adresse mémoire du transfert de données fusionné.
Maintenir la compatibilité
Le DTB principal (du fournisseur de SoC) est traité comme une surface d'API pour les DTBO. Après séparer le DT en une partie commune SoC et une partie spécifique à l'appareil, vous devez veiller à ce que les deux parties soient compatibles à l'avenir, y compris:
- Définition DT dans la DT principale. Par exemple, les nœuds, les propriétés étiquettes. Tout changement de définition dans le transfert de données principal peut déclencher des modifications en superposition DT. Par exemple, pour corriger un nom de nœud dans le transfert de données principal, définissez un « alias » ajouter une étiquette correspond au nom d'origine du nœud (pour éviter le changement de DT superposé).
- Superposition de l'emplacement du magasin de transfert de données Par exemple, le nom de la partition, .
Assurer la sécurité
Le bootloader doit s'assurer que le DTB ou DTBO est sécurisé, non modifié et non corrompu. Vous pouvez utiliser n'importe quelle solution pour sécuriser DTB ou DTBO, par exemple, Image de démarrage signature dans VBoot 1.0 ou AVB Pied de page HASH (VBoot 2.0).
- Si DTB ou DTBO se trouve dans une partition unique, vous pouvez ajouter cette partition au de confiance d'AVB. La chaîne de confiance commence par une racine matérielle protégée et est transmis au bootloader, qui vérifie l'intégrité et l'authenticité de la partition DTB ou DTBO.
- Si DTB ou DTBO se trouve dans une partition existante (telle que
odm
partition), cette partition doit se trouver dans la chaîne de confiance d'AVB. (partition DTBO pourrait partager une clé publique avec la partitionodm
).
Pour en savoir plus, consultez la section Validation Démarrage.