Superpositions de l'arborescence des appareils

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

Un overlay d'arborescence de périphériques (DTO) permet de superposer un DTB central sur le DT (un blob d'arborescence de périphériques pour l'overlay (DTBO)). Un bootloader utilisant DTO peut gérer le DT du système sur puce (SoC) et superposer dynamiquement un DT spécifique à l'appareil, en ajoutant des nœuds à l'arborescence et en modifiant les propriétés de l'arborescence existante.

Nouveautés d'Android 9

Dans Android 9, le bootloader ne doit pas modifier les propriétés définies dans les DTO avant de transmettre le DTB unifié au noyau.

Charger une DT

Le chargement d'un DT dans le bootloader implique la création, le partitionnement et l'exécution.

Figure 1 : Implémentation typique pour charger l'arborescence des périphériques dans le bootloader.

  1. Pour créer et flasher le DTB :

    1a. Utilisez DTC (dtc) pour compiler DTS (.dts) dans un DTB (.dtb). Le DTB est mis en forme en tant que DT aplati. 1b. Flashez le fichier .dtb dans un emplacement accessible au bootloader (voir ci-dessous).

  2. Pour partitionner, déterminez un emplacement fiable et accessible au bootloader dans la mémoire flash pour placer .dtb. Exemples d'adresses :

    Figure 2. Placez .dtb dans une partition de démarrage en ajoutant
    à image.gz et en transmettant
    "kernel" à mkbootimg.

    Figure 3. Placez .dtb dans une partition unique
    (par exemple, la partition dtb).

  3. Pour charger le DTB et démarrer le noyau :

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

Étapes suivantes

Cette page décrit un workflow de bootloader typique pour charger un DT et fournit une liste des termes DT courants. Les autres pages de cette section expliquent comment implémenter la prise en charge du bootloader, comment compiler, vérifier et optimiser votre DTO, et comment utiliser plusieurs DT. Vous pouvez également obtenir des informations sur la syntaxe DTO et le formatage requis des partitions DTO et DTBO.