Assistance DTO

Device Tree Overlay (DTO) étend les implémentations Flattened Device Tree (FDT) existantes en permettant à l'espace utilisateur de modifier les données initiales de Devicetree dans le noyau au moment de l'exécution en chargeant des FDT de superposition supplémentaires qui modifient les données d'origine. Android ne nécessite pas de mises à jour d'exécution des blobs DT depuis l'espace utilisateur, mais recommande plutôt aux fournisseurs d'ajouter le correctif Devicetree dans le chargeur de démarrage à l'aide de libfdt ou libufdt .

Prise en charge d'Android DTO

La prise en charge d'Android pour les DTO varie selon la version d'Android :

  • Android 7.x et versions antérieures ne nécessitent pas la prise en charge de Devicetree et ne fournissent pas de recommandations sur la manière dont les fournisseurs transmettent les blobs DT au noyau ou sur l'endroit où ils les stockent.
  • Android 8.x recommande la prise en charge de DeviceTree pour séparer les parties du noyau spécifiques à la carte et uniquement au SoC.
  • Android 9 et versions ultérieures nécessitent la présence d’une partition DTBO (Device Tree Blob Overlay) et l’application d’au moins un DTO.

Exigences de partitionnement DTO

La plupart des appareils Android ajoutent le blob DT au noyau au moment de la construction et le chargeur de démarrage charge le blob à partir du noyau. Cependant, étant donné que les blobs DT sont considérés comme faisant partie du noyau du système sur puce (SoC), Android n'a pas d'exigences spécifiques quant à la manière de créer ou de stocker les blobs DT. Les appareils peuvent ajouter le blob DT au noyau ou stocker le blob dans une partition distincte ; la seule exigence est que le chargeur de démarrage sache comment et où charger le blob DT.

Pour prendre en charge DTO, les appareils doivent avoir :

  • Une partition DTBO par image de noyau pour une superposition DT spécifique à la carte et le chargeur de démarrage doit savoir où et comment charger le DTB spécifique au SoC. La taille de la partition dépend du nombre de modifications nécessaires pour effectuer le noyau SoC : choisissez une taille permettant d'augmenter pour les futures mises à jour ; généralement, une taille de partition de 8 Mo est plus que suffisante.
  • Partitions DTO mises à jour pour les périphériques A/B . Le noyau de récupération est le même que le noyau Android, mais la partition doit être configurée pour les périphériques A/B afin de pouvoir être mise à jour via des mises à jour en direct (OTA). La taille de la partition dépend du périphérique et du nombre de modifications apportées au blob DT du noyau SoC principal.

Exigences du chargeur de démarrage DTO

Pour prendre en charge DTO, le chargeur de démarrage doit :

  • Sachez comment et où (en tenant compte de l'emplacement de démarrage des périphériques A/B) charger le blob DT spécifique au SoC d'une manière spécifique au fournisseur (généralement extrait de la fin de l'image du noyau lorsque les blobs sont ajoutés au noyau).
  • Sachez comment et où charger le blob DT de superposition à partir d'une manière spécifique au fournisseur.
  • Corrigez le blob DT principal avec la superposition avant de transmettre l’arborescence des périphériques combinée au noyau.

Pour plus de détails sur l'ajout de la prise en charge de DTO dans le chargeur de démarrage, consultez Superpositions de l'arborescence des périphériques .