La mise en œuvre de DTO implique la division de l'arborescence des périphériques, la création, le partitionnement et l'exécution. 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 garantir la sécurité de chaque partition DT.
Diviser le DT
Commencez par diviser l’arborescence des appareils en deux (2) parties :
- DT principale . La partie SoC uniquement et les configurations par défaut, fournies par le fournisseur SoC.
- Superposition DT . Les configurations spécifiques à l'appareil, fournies par ODM/OEM.
Après avoir divisé les arborescences d'appareils, vous devez garantir 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 plus de détails sur le format et les règles DTO, consultez Syntaxe DTO . Pour plus de détails sur plusieurs arborescences de périphériques, voir Plusieurs DT .
Création de DT principales et superposées
Pour construire la DT principale :
- Compilez les DT principaux
.dts
dans le fichier.dtb
. - Flashez le fichier
.dtb
dans une partition accessible au moment de l'exécution du chargeur de démarrage (détaillée ci-dessous).
Pour construire la superposition DT :
- Compilez la superposition DT
.dts
dans le fichier.dtbo
. Bien que ce format de fichier soit identique au fichier.dtb
formaté sous forme d'arborescence de périphériques aplatie, l'extension de fichier différente le distingue de la DT principale. - Flashez le fichier
.dtbo
dans une partition accessible au moment de l'exécution du chargeur de démarrage (comme détaillé ci-dessous).
Pour plus de détails sur la compilation avec DTC et la vérification des résultats DTO sur l'hôte, consultez Compilation et vérification .
Partitionnement des DT
Déterminez un emplacement fiable et accessible au moment de l’exécution du chargeur de démarrage 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
). - Séparez les blobs DT (
.dtb
) dans une partition dédiée (dtb
).
Exemples d'emplacements pour la DDC superposée :
Partition unique |
---|
Partition ODM |
---|
.dtbo
dans la partition odm
(faites-le uniquement si votre chargeur de démarrage a la capacité de charger des données à partir du système de fichiers de la partition odm
).Remarque : La taille de la partition DT de superposition dépend du périphérique et de la quantité de modifications nécessaires au-dessus du blob DT principal. En règle générale, 8 Mo sont plus que suffisants et permettent d'évoluer à l'avenir si nécessaire.
Pour les appareils prenant en charge les mises à jour transparentes (A/B) , A/B les partitions principales DT et superpositions DT :
Exemple 1 |
---|
Exemple 2 |
---|
Exécuté dans le chargeur de démarrage
Courir:
- Chargez
.dtb
du stockage vers la mémoire. - Chargez
.dtbo
du stockage vers la mémoire. - Superposez
.dtb
avec.dtbo
pour obtenir un DT fusionné. - Démarrez le noyau en fonction de l'adresse mémoire du DT fusionné.
Maintenir la compatibilité
Le DTB principal (du fournisseur SoC) est traité comme une surface API pour les DTBO. Après avoir séparé l'arborescence des appareils en une partie commune au SoC et une partie spécifique à l'appareil, vous devez conserver les deux parties mutuellement compatibles à l'avenir, notamment :
- Définition de la DT dans la DT principale (par exemple, nœuds, propriétés, étiquettes) . Tout changement de définition dans le DT principal peut déclencher des changements dans le DT de superposition. Par exemple, pour corriger un nom de nœud dans la DT principale, définissez une étiquette « alias » qui correspond au nom de nœud d'origine (pour éviter le changement de superposition DT).
- Superposer l'emplacement du magasin DT (par exemple, nom de la partition, format du magasin) .
Assurer la sécurité
Le chargeur de démarrage doit garantir que le DTB/DTBO est sécurisé, non modifié et non corrompu. Vous pouvez utiliser n'importe quelle solution pour sécuriser DTB/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 DTB/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 va au chargeur de démarrage, qui vérifie l'intégrité et l'authenticité de la partition DTB/DTBO.
- Si DTB/DTBO se trouve dans une partition existante (telle que la partition
odm
), cette partition doit être dans la chaîne de confiance d'AVB. (La partition DTBO pourrait partager une clé publique avec la partitionodm
).
Pour plus de détails, reportez-vous à Démarrage vérifié .