Superpositions d'arborescence de périphériques

Une arborescence de périphériques (DT) est une structure de données de nœuds nommés et de propriétés qui décrivent le matériel non détectable. Les noyaux, tels que le noyau Linux utilisé dans Android, utilisent les DT pour prendre en charge un large éventail de configurations matérielles utilisées par les appareils fonctionnant sous Android. Les fournisseurs de matériel fournissent leurs propres fichiers DTS (Device Tree Source) , qui sont compilés dans le fichier Device Tree Blob (DTB) à l'aide du compilateur Device Tree . Ces fichiers sont ensuite utilisés par le chargeur de démarrage. Le fichier DTB contient une arborescence de périphériques aplatie au format binaire.

Une superposition d'arborescence de périphériques (DTO) permet de superposer un blob d'arborescence de périphériques central (DTB) sur l'arborescence de périphériques. Un chargeur de démarrage utilisant DTO peut gérer le DT du système sur puce (SoC) et superposer dynamiquement un DT spécifique au périphérique, en ajoutant des nœuds à l'arborescence et en apportant des modifications aux propriétés de l'arborescence existante.

DTBO Blob de l’arborescence des périphériques pour la superposition

Mises à jour dans la version Android 9

Sous Android 9, le chargeur de démarrage ne doit pas modifier les propriétés définies dans les superpositions de l'arborescence des périphériques avant de transmettre le blob de l'arborescence des périphériques unifiée au noyau.

Charger une arborescence de périphériques

Le chargement d'une arborescence de périphériques dans le chargeur de démarrage implique la création, le partitionnement et l'exécution.

Figure 1. Implémentation typique pour le chargement de l'arborescence des périphériques dans le chargeur de démarrage.
  1. Pour créer et flasher l’objet blob de l’arborescence des appareils :

    1a. Utilisez le compilateur d'arborescence de périphériques ( dtc >) pour compiler la source de l'arborescence de périphériques ( .dts ) dans un blob d'arborescence de périphériques ( .dtb ). L’objet blob de l’arborescence des périphériques est formaté sous la forme d’une arborescence de périphériques aplatie. 1b. Flashez le fichier .dtb dans un emplacement accessible au moment de l'exécution du chargeur de démarrage (détaillé ci-dessous).

  2. Pour partitionner, 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 . Exemples d'emplacements :

    Partition de démarrage
    Figure 2. Placez .dtb dans la partition de démarrage en l'ajoutant à image.gz et en passant comme " kernel " à mkbootimg .
    Partition unique
    Figure 3. Placez .dtb dans une partition unique (par exemple une partition dtb ).
  3. Pour charger le blob de l'arborescence des périphériques et démarrer le noyau :

    • Chargez .dtb du stockage vers la mémoire.
    • Démarrez le noyau en utilisant l'adresse mémoire du DT chargé.

Et après?

Cette page détaille un flux de travail typique du chargeur de démarrage pour charger une DT et fournit une liste de termes courants de la DT. D'autres pages de cette section décrivent comment implémenter la prise en charge du chargeur de démarrage , comment compiler , vérifier et optimiser votre DTO et comment utiliser plusieurs DT . Vous pouvez également obtenir des détails sur la syntaxe DTO et le formatage requis des partitions DTO/DTBO .