Un arborescence 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 device tree blob (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 arborescence d'appareils aplatie au format binaire.
Une superposition de l'arborescence des appareils (DTO) permet de superposer un DTB central sur l'arborescence des appareils (un blob d'arborescence des appareils pour superposition (DTBO)). Un bootloader utilisant la DTO peut gérer la DT du système sur puce (SoC) et superposer dynamiquement une DT spécifique à l'appareil, en ajoutant des nœuds à l'arborescence et en modifiant les propriétés de l'arborescence existante.
Mises à jour de la version 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 un DT
Le chargement d'une DT dans le bootloader implique la création, la partitionnement et l'exécution.
Figure 1 : Implémentation type pour charger l'arborescence de l'appareil dans le bootloader.
Pour créer et flasher le DTB:
1a. Utilisez le DTC (
dtc
) pour compiler les fichiers DTS (.dts
) dans un fichier DTB (.dtb
). Le fichier DTB est au format de table de données aplatie. 1b. Flashez le fichier.dtb
dans un emplacement accessible au moment de l'exécution du bootloader (décrit ci-dessous).Pour partitionner, déterminez un emplacement de mémoire flash accessible au moment de l'exécution et fiable dans lequel placer
.dtb
. Exemples d'adresses :Figure 2. Placez .dtb dans une partition de démarrage en le
ajoutant à image.gz et en le transmettant en tant que
"kernel" à mkbootimg.Figure 3. Placez le fichier .dtb dans une partition unique
(par exemple, la partition dtb).Pour charger le DTB et démarrer le kernel:
- Chargez
.dtb
à partir du stockage dans la mémoire. - Démarrez le noyau à l'aide de l'adresse mémoire de la table de données chargée.
- Chargez
Et maintenant ?
Cette page décrit un workflow de bootloader typique pour le chargement d'un DT et fournit une liste de 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 de partition DTO et DTBO requis.