Viele SoC-Anbieter und ODMs unterstützen die Verwendung mehrerer Device Trees (DTs) auf einem Gerät. sodass ein Image für mehrere Artikelnummern oder Konfigurationen verwendet werden kann. In solchen Fällen kann das Bootloader identifiziert die Hardware und lädt den entsprechenden DT zur Laufzeit:
Abbildung 1: Mehrere Device Tree Overlays (DTOs) im Bootloader.
Hinweis: Die Verwendung mehrerer DTs ist nicht obligatorisch.
Einrichten
Erstellen Sie eine Liste mit Haupt-DTs, um dem DTO-Modell Unterstützung für mehrere DTs hinzuzufügen. und eine weitere Liste mit Overlay-DTs.
Abbildung 2: Laufzeit-DTO-Implementierung für mehrere DTs.
Der Bootloader sollte Folgendes können:
- Lesen Sie die SoC-ID und wählen Sie den entsprechenden Haupt-DT aus.
- Lesen Sie die Board-ID und wählen Sie den entsprechenden Satz von Overlay-DTs aus.
Zur Laufzeit darf nur ein Haupt-DT ausgewählt werden. Mehrere Overlay-DTs ausgewählt sein, müssen aber mit dem gewählten Haupt-DT kompatibel sein. Mit Durch mehrere Overlays kann vermieden werden, dass ein Overlay pro Board innerhalb der DTBO-Datei gespeichert wird. Partition und aktivieren Sie den Bootloader, um die Teilmenge der erforderlichen Overlays zu ermitteln. basierend auf der Board-ID (oder ggf. durch Prüfen der Peripheriegeräte). Für Beispiel: Board A benötigt die von den Overlays 1, 3 und 5 hinzugefügten Geräte, während Board B benötigt möglicherweise die Geräte, die von den Overlays 1, 4 und 5 hinzugefügt wurden.
Partition
Zum Partitionieren einen vertrauenswürdigen, über die Laufzeit zugänglichen Bootloader bestimmen
in den Flash-Speicher ein, um die DTBs und DTBOs zu speichern (Bootloader muss
diese Dateien beim Abgleich.) DTBs und DTBOs können
in derselben Partition vorhanden sind. Wenn sich Ihre DTBs/DTBOs im
dtb
/dtbo
-Partition mit der Tabellenstruktur und -überschrift verwenden
im Format DTB und DTBO
Partitionsformat.
Im Bootloader ausführen
So führen Sie Folgendes aus:
- Ermitteln Sie das SoC und laden Sie die entsprechende .dtb-Datei aus in den Arbeitsspeicher ein.
- Identifizieren Sie das Board und laden Sie das entsprechende
.dtbo
von Speicher in Arbeitsspeicher. .dtb
mit.dtbo
überlagern, um zusammengeführt zu werden DT.- Startet den Kernel mit der Speicheradresse des zusammengeführten DT.