Une arborescence d'appareils est une structure de données constituée de nœuds nommés et de propriétés décrivant le matériel non visible. 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 de source d'arborescence d'appareil (DTS), qui sont compilés dans le fichier DTB (device tree blob) à l'aide du compilateur d'arborescence d'appareil. 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 de périphérique (DTO) permet de superposer un DTB central sur le DT (blob d'arborescence d'appareil pour la superposition (DTBO)). Un bootloader utilisant DTO peut gérer le DT du système sur puce (SoC) et superposer de manière dynamique un 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 kernel.
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 formaté en tant que DT aplati. 1b. Flashez le fichier.dtb
dans un emplacement accessible à l'environnement d'exécution du bootloader (voir 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. Pour placer .dtb dans une partition de démarrage,
ajoutez-le à image.gz et transmettez-le 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, 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.