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 des DT pour prendre en charge une large gamme de configurations matérielles utilisées par les appareils sous Android. Les fournisseurs de matériel fournissent leurs propres fichiers Device Tree Source (DTS) , qui sont compilés dans le fichier Device Tree Blob (DTB) à l'aide du Device Tree Compiler . Ces fichiers sont ensuite utilisés par le bootloader. Le fichier DTB contient une arborescence de périphériques aplatie au format binaire.
Une superposition d'arborescence d'appareils (DTO) permet de superposer un blob d'arborescence d'appareils central (DTB) sur l'arborescence d'appareils. Un chargeur de démarrage utilisant DTO peut maintenir 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 dans la version Android 9
Dans Android 9, le chargeur de démarrage ne doit pas modifier les propriétés définies dans les superpositions d'arborescence de périphériques avant de transmettre le blob d'arborescence de périphériques unifié au noyau.
Chargement d'une arborescence d'appareils
Le chargement d'une arborescence de périphériques dans le chargeur de démarrage implique la construction, le partitionnement et l'exécution.

Pour créer et flasher le 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
). Le blob d'arborescence de périphériques est formaté en tant qu'arborescence de périphériques aplatie. 1b..dtb
le fichier .dtb dans un emplacement accessible au moment de l'exécution du chargeur de démarrage (détaillé ci-dessous).Pour partitionner, déterminez un emplacement de confiance et accessible au moment de l'exécution du chargeur de démarrage dans la mémoire flash pour y placer
.dtb
. Exemples d'emplacements :Partition de démarrage Figure 2. Placez .dtb
dans la partition de démarrage en ajoutant àimage.gz
et en passant comme "kernel
" àmkbootimg
.Partition unique Figure 3. Placez .dtb
dans une partition unique (par exemple, partitiondtb
).Pour charger le blob de l'arborescence des périphériques et démarrer le noyau :
3a. Chargez
.dtb
du stockage dans la mémoire. 3b. Démarrez le noyau en utilisant l'adresse mémoire de la DT chargée.
Et après?
Cette page détaille un flux de travail de chargeur de démarrage typique pour charger une DT et fournit une liste des 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 de partition DTO/DTBO requis.