Implémentation des DTO

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 :

  1. Compilez les DT principaux .dts dans le fichier .dtb .
  2. 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 :

  1. 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.
  2. 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
Figure 1. Placez .dtbo dans une partition unique, par exemple une partition dtbo .
Partition ODM
Figure 2. Placez .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
Figure 3. Partition DTBO A/B, exemple 1.
Exemple 2
Figure 4. Partition DTBO A/B, exemple 2.

Exécuté dans le chargeur de démarrage

Courir:

Figure 5. Implémentation d'exécution typique pour la superposition de l'arborescence des périphériques dans le chargeur de démarrage.
  1. Chargez .dtb du stockage vers la mémoire.
  2. Chargez .dtbo du stockage vers la mémoire.
  3. Superposez .dtb avec .dtbo pour obtenir un DT fusionné.
  4. 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 partition odm ).

Pour plus de détails, reportez-vous à Démarrage vérifié .