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 .