L'implémentation de superpositions d'arborescence de périphériques (DTO) implique de diviser l'arborescence de périphériques (DT), de la créer, de la partitionner et de l'exécuter. Une fois l'implémentation opérationnelle, vous devez également assurer 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 la table de données en deux parties:
- DT principal. La partie SoC uniquement et les configurations par défaut, fournies par le fournisseur de 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 DT superposée afin que la fusion de la DT principale et de la DT superposée aboutisse à une DT complète pour l'appareil. Pour en savoir plus sur le format et les règles des DTO, consultez la syntaxe DTO. Pour en savoir plus sur les DT multiples, consultez la section Utiliser plusieurs DT.
Créer des DT principales et superposées
Pour créer le DT principal:
- Complétez le fichier
.dts
DT principal dans un fichier.dtb
. - Flashez le fichier
.dtb
dans une partition accessible au moment de l'exécution du bootloader (décrite dans [Partition DTs](#partition)).
Pour créer le DT de superposition:
- Complétez le fichier DT
.dts
de superposition dans un fichier.dtbo
. Bien que ce format de fichier soit identique à celui du fichier.dtb
au format DT aplati, l'extension de fichier différente le distingue du DT principal. - Flashez le fichier
.dtbo
dans une partition accessible au moment de l'exécution du bootloader (décrite dans [Partition DTs](#partition)).
Pour en savoir plus sur la compilation avec DTC et la validation des résultats DTO sur l'hôte, consultez la section Compiler et valider.
Tables de partitionnement DT
Déterminez un emplacement de confiance accessible au moment de l'exécution du bootloader dans la mémoire flash pour placer .dtb
et .dtbo
.
Exemples d'emplacements pour le DT principal:
- 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 le DT de superposition:
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 le fichier .dtbo dans une partition unique, telle qu'une partition dtbo.
Remarque:La taille de la partition DT en superposition dépend de l'appareil et de la quantité de modifications nécessaires au-dessus du blob DT principal. En règle générale, 8 Mo suffisent amplement et permettent de laisser de la place pour l'avenir, si nécessaire.
Pour les appareils compatibles avec les mises à jour fluides (A/B), A/B les partitions DT principales et DT en superposition:
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 le DTO dans le bootloader.
- Chargez
.dtb
à partir du stockage dans la mémoire. - Chargez
.dtbo
à partir du stockage dans la mémoire. - Superposez
.dtb
à.dtbo
pour obtenir un DT fusionné. - Démarrer le noyau en fonction de l'adresse mémoire de la table de débogage fusionnée.
Maintenir la compatibilité
Le DTB principal (du fournisseur de SoC) est traité comme une surface d'API pour les DTBO. Après avoir séparé le DT en une partie commune au SoC et une partie spécifique à l'appareil, vous devez maintenir les deux parties mutuellement compatibles à l'avenir, y compris:
- Définition du DT dans le DT principal. Par exemple, nœuds, propriétés, libellés. Toute modification de définition dans la DT principale peut entraîner des modifications dans la DT superposée. Par exemple, pour corriger un nom de nœud dans le DT principal, définissez un libellé "alias" qui correspond au nom de nœud d'origine (pour éviter de modifier le DT de superposition).
- Superposition de l'emplacement du magasin DT. Par exemple, nom de la partition, format de stockage.
Assurer la sécurité
Le bootloader doit s'assurer que le DTB ou le DTBO est sécurisé, non modifié et non corrompu. Vous pouvez utiliser n'importe quelle solution pour sécuriser le DTB ou le DTBO, par exemple la signature de l'image de démarrage dans VBoot 1.0 ou le pied de page AVB HASH (VBoot 2.0).
- Si le DTB ou le 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 matériellement et se dirige vers le 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 figurer dans la chaîne de confiance d'AVB. (la partition DTBO peut partager une clé publique avec la partitionodm
).
Pour en savoir plus, consultez la section Démarrage validé.