Superpositions d'arborescence d'appareils

Une arborescence d'appareils est une structure de données composée de nœuds et de propriétés nommés. décrivent le matériel non visible. Noyaux, tels que le noyau Linux utilisé dans Android, utilisez les transferts de données pour prendre en charge un large éventail de configurations matérielles utilisées par les appareils Android. Les fournisseurs de matériel fournissent leur propre arborescence d'appareils. Les fichiers sources (DTS), compilés dans le fichier device tree blob (DTB) à l'aide du compilateur d'arborescence d'appareils. Ces fichiers sont ensuite utilisés par bootloader. Le fichier DTB contient une arborescence de périphériques aplatie au format binaire.

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

Mises à jour d'Android 9

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

Charger un transfert de données

Le chargement d'un transfert de données dans le bootloader implique la compilation, le partitionnement et l'exécution.

Figure 1 : Implémentation classique pour le chargement de l'arborescence d'appareils dans le bootloader.

  1. Pour créer et flasher le DTB:

    1a. Utilisez le DTC (dtc) pour compiler le DTS (.dts) en un DTB (.dtb). La DTB est formatée comme une DTB aplatie. 1b. Flasher le fichier .dtb dans un emplacement accessible à l'environnement d'exécution du bootloader (voir ci-dessous).

  2. Pour partitionner, déterminez un emplacement fiable et accessible à l'environnement d'exécution du bootloader dans la mémoire Flash pour placer .dtb. Exemples d'adresses :

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

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

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

    • Charger .dtb de l'espace de stockage dans la mémoire
    • Démarrez le noyau en utilisant l'adresse mémoire du transfert de données chargé.

Et maintenant ?

Cette page présente en détail un workflow typique du bootloader pour le chargement d'un transfert de données et fournit une liste de termes courants de transfert de données. D'autres pages de cette section expliquent comment Implémenter la compatibilité avec le bootloader, comment compiler, vérifier optimiser votre DTO utiliser plusieurs transferts de données. Vous pouvez ainsi que des détails sur la syntaxe DTO et obligatoire Formatage des partitions DTO et DTBO.