Support für Device Tree Overlays

Device Tree Overlay (DTO) erweitert bestehende Flattened Device Tree (FDT) -Implementierungen, indem es dem Userspace ermöglicht, die anfänglichen Devicetree-Daten im Kernel zur Laufzeit zu ändern, indem zusätzliche Overlay-FDTs geladen werden, die die Originaldaten ändern. Android erfordert keine Laufzeitaktualisierungen von DT-Blobs aus dem Userspace, sondern empfiehlt stattdessen, dass Anbieter das Devicetree-Patching im Bootloader mithilfe von libfdt oder libufdt hinzufügen.

Android DTO-Unterstützung

Die Android-Unterstützung für DTOs variiert je nach Android-Version:

  • Android 7.x und früher erfordern keine Devicetree-Unterstützung und bieten keine Empfehlungen dazu, wie Anbieter DT-Blobs an den Kernel übergeben oder wo sie sie speichern.
  • Android 8.x empfiehlt Devicetree-Unterstützung, um die Board-spezifischen und SoC-only-Teile des Kernels getrennt zu halten.
  • Für Android 9 und höher muss eine DTBO-Partition (Device Tree Blob Overlay) vorhanden sein und mindestens ein DTO angewendet werden.

DTO-Partitionierungsanforderungen

Die meisten Android-Geräte hängen den DT-Blob zur Erstellungszeit an den Kernel an und der Bootloader lädt den Blob aus dem Kernel. Da DT-Blobs jedoch als Teil des SoC-Kernels (System-on-Chip) betrachtet werden, gelten für Android keine besonderen Anforderungen für die Erstellung oder Speicherung von DT-Blobs. Geräte können den DT-Blob an den Kernel anhängen oder den Blob in einer separaten Partition speichern; Die einzige Voraussetzung ist, dass der Bootloader weiß, wie und woher er den DT-Blob laden soll.

Um DTO zu unterstützen, sollten Geräte über Folgendes verfügen:

  • Eine DTBO-Partition pro Kernel-Image für ein Board-spezifisches DT-Overlay und der Bootloader muss wissen, wo und wie das SoC-spezifische DTB geladen werden soll. Die Partitionsgröße hängt von der Anzahl der Änderungen ab, die zur Erstellung des SoC-Kernels erforderlich sind. Wählen Sie eine Größe mit Spielraum für zukünftige Updates. Normalerweise ist eine Partitionsgröße von 8 MB mehr als ausreichend.
  • DTO-Partitionen für A/B-Geräte aktualisiert . Der Wiederherstellungskernel ist derselbe wie der Android-Kernel, die Partition muss jedoch für A/B-Geräte eingerichtet werden, damit sie über Over-the-Air-Updates (OTA) aktualisiert werden kann. Die Partitionsgröße hängt vom Gerät und der Anzahl der Änderungen am Haupt-SoC-Kernel-DT-Blob ab.

Anforderungen an den DTO-Bootloader

Um DTO zu unterstützen, sollte der Bootloader:

  • Wissen, wie und wo (unter Berücksichtigung des Boot-Steckplatzes für A/B-Geräte) der SoC-spezifische DT-Blob auf herstellerspezifische Weise geladen werden kann (normalerweise vom Ende des Kernel-Images extrahiert, wenn Blobs an den Kernel angehängt werden).
  • Erfahren Sie, wie und woher Sie das Overlay-DT-Blob auf herstellerspezifische Weise laden können.
  • Patchen Sie den Haupt-DT-Blob mit dem Overlay, bevor Sie den kombinierten Gerätebaum an den Kernel übergeben.

Weitere Informationen zum Hinzufügen von Unterstützung für DTO im Bootloader finden Sie unter Gerätebaum-Overlays .