Viele SoC-Anbieter und ODMs unterstützen die Verwendung mehrerer Gerätebäume (Device Trees, DTs) auf einem Gerät, sodass ein Image mehrere SKUs oder Konfigurationen unterstützen kann. In solchen Fällen identifiziert der Bootloader die Hardware und lädt die entsprechende DT zur Laufzeit:
Abbildung 1: Mehrere Gerätebaum-Overlays (Device Tree Overlays, DTOs) im Bootloader
Hinweis:Die Verwendung mehrerer DTs ist nicht zwingend erforderlich.
Einrichten
Wenn Sie dem DTO-Modell die Unterstützung mehrerer DTs hinzufügen möchten, richten Sie eine Liste mit Haupt-DTs und eine weitere Liste mit Overlay-DTs ein.
Abbildung 2: Laufzeit-DTO-Implementierung für mehrere Datentypen
Der Bootloader sollte Folgendes können:
- Lesen Sie die SoC-ID und wählen Sie den entsprechenden Haupt-Gerätebaum aus.
- Lies die ID des Boards und wähle die entsprechenden DTs für das Overlay aus.
Für die Laufzeit sollte nur ein Haupt-Gerätebaum ausgewählt werden. Es können mehrere Overlay-Datentypen ausgewählt werden, diese müssen jedoch mit dem ausgewählten Hauptdatentyp kompatibel sein. Durch die Verwendung mehrerer Overlays kann vermieden werden, dass in der DTBO-Partition ein Overlay pro Board gespeichert wird. Außerdem kann der Bootloader anhand der Board-ID (oder möglicherweise durch Prüfen der Peripheriegeräte) die Teilmenge der erforderlichen Overlays ermitteln. So benötigt beispielsweise Vorstand A möglicherweise die Geräte, die durch die Overlays 1, 3 und 5 hinzugefügt wurden, während Vorstand B die Geräte benötigt, die durch die Overlays 1, 4 und 5 hinzugefügt wurden.
Partition
Legen Sie für die Partitionierung einen für den Bootloader während der Laufzeit zugänglichen und vertrauenswürdigen Speicherort im Flash-Speicher fest, um die DTBs und DTBOs zu speichern. Der Bootloader muss diese Dateien beim Abgleich finden können. DTBs und DTBOs können nicht in derselben Partition vorhanden sein. Wenn sich Ihre DTBs/DTBOs in der Partition dtb
/dtbo
befinden, verwenden Sie die Tabellenstruktur und das Kopfzeilenformat, die im Abschnitt DTB- und DTBO-Partitionsformat beschrieben werden.
Im Bootloader ausführen
Gehe zum Ausführen so vor:
- Identifizieren Sie das SoC und laden Sie die entsprechende .dtb-Datei aus dem Speicher in den Arbeitsspeicher.
- Identifizieren Sie das Board und laden Sie die entsprechende
.dtbo
aus dem Speicher in den Arbeitsspeicher. - Erstelle für
.dtb
ein.dtbo
-Overlay, um diese in einem Gerätebaum zusammenzuführen. - Starte den Kernel mit der Adresse des Arbeitsspeichers, in dem sich der zusammengeführte Gerätebaum befindet.