Verwendung mehrerer DTs

Viele SoC-Anbieter und ODMs unterstützen die Verwendung mehrerer DTs auf einem Gerät, sodass ein Image mehrere SKUs/Konfigurationen unterstützen kann. In solchen Fällen identifiziert der Bootloader die Hardware und lädt zur Laufzeit den entsprechenden DT:

Abbildung 1. Überlagerung mehrerer Gerätebäume im Bootloader.

Hinweis: Die Verwendung mehrerer DTs ist nicht zwingend erforderlich.

Einrichten

Um dem DTO-Modell Unterstützung für mehrere DTs hinzuzufügen, richten Sie eine Liste mit Haupt-DTs und eine weitere Liste mit Overlay-DTs ein.

Abbildung 2. Laufzeit-DTO-Implementierung für mehrere DTs.

Der Bootloader sollte in der Lage sein:

  • Lesen Sie die SoC-ID und wählen Sie den entsprechenden Hauptgerätebaum aus
  • Lesen Sie die Board-ID und wählen Sie den Satz der Overlay-Gerätebäume entsprechend aus.

Für die Verwendung zur Laufzeit sollte nur ein Haupt-DT ausgewählt werden. Es können mehrere Overlay-DTs ausgewählt werden, diese müssen jedoch mit dem gewählten Haupt-DT kompatibel sein. Die Verwendung mehrerer Overlays kann dazu beitragen, die Speicherung eines Overlays pro Board innerhalb der DTBO-Partition zu vermeiden und es dem Bootloader zu ermöglichen, die Teilmenge der erforderlichen Overlays anhand der Board-ID (oder möglicherweise durch Sondierung der Peripheriegeräte) zu bestimmen. Beispielsweise benötigt Platine A möglicherweise die durch die Overlays 1, 3 und 5 hinzugefügten Geräte, während Platine B möglicherweise die durch die Overlays 1, 4 und 5 hinzugefügten Geräte benötigt.

Partitionierung

Bestimmen Sie zum Partitionieren einen zur Bootloader-Laufzeit zugänglichen und vertrauenswürdigen Speicherort im Flash-Speicher zum Speichern der DTBs und DTBOs (der Bootloader muss diese Dateien im Abgleichsprozess finden können). Beachten Sie, dass DTBs und DTBOs nicht in derselben Partition vorhanden sein können. Wenn sich Ihre DTBs/DTBOs in der dtb / dtbo Partition befinden, verwenden Sie die Tabellenstruktur und das Headerformat, die im DTB/DTBO-Partitionsformat beschrieben sind.

Läuft im Bootloader

Laufen:

  1. Identifizieren Sie den SoC und laden Sie die entsprechende .dtb-Datei aus dem Speicher in den Speicher.
  2. Identifizieren Sie die Platine und laden Sie die entsprechende .dtbo aus dem Speicher in den Speicher.
  3. Überlagern Sie die .dtb mit der .dtbo , um ein zusammengeführtes DT zu erhalten.
  4. Starten Sie den Kernel mit der Speicheradresse des zusammengeführten DT.