Mehrere DTs verwenden

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:

  1. Identifizieren Sie das SoC und laden Sie die entsprechende .dtb-Datei aus dem Speicher in den Arbeitsspeicher.
  2. Identifizieren Sie das Board und laden Sie die entsprechende .dtbo aus dem Speicher in den Arbeitsspeicher.
  3. Erstelle für .dtb ein .dtbo-Overlay, um diese in einem Gerätebaum zusammenzuführen.
  4. Starte den Kernel mit der Adresse des Arbeitsspeichers, in dem sich der zusammengeführte Gerätebaum befindet.