Verwenden mehrerer DTs

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

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, erstellen Sie eine Liste mit Haupt-DTs 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 Hauptgerätebaum aus, und
  • Lesen Sie die Board-ID und wählen Sie den Satz von Overlay-Gerätebäumen entsprechend aus.

Zur Laufzeit sollte nur ein Haupt-BMK ausgewählt werden. Es können mehrere Overlay-DTs ausgewählt werden, aber sie müssen mit dem ausgewählten Haupt-DT kompatibel sein. Die Verwendung mehrerer Overlays kann dazu beitragen, das Speichern eines Overlays pro Board innerhalb der DTBO-Partition zu vermeiden, und es dem Bootloader ermöglichen, die Teilmenge der erforderlichen Overlays basierend auf der Board-ID (oder möglicherweise durch Prüfen der Peripheriegeräte) zu bestimmen. Zum Beispiel 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 Laufzeit zugänglichen und vertrauenswürdigen Speicherort im Flash-Speicher, auf den der Bootloader zugreifen kann, um die DTBs und DTBOs zu speichern (der Bootloader muss in der Lage sein, diese Dateien im Übereinstimmungsprozess zu finden). 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 Header-Format, die unter 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 Arbeitsspeicher.
  2. Identifizieren Sie die Platine und laden Sie die entsprechende .dtbo -Datei aus dem Speicher in den Arbeitsspeicher.
  3. Überlagern Sie die .dtb -Datei mit der .dtbo -Datei, um ein zusammengeführtes DT zu erhalten.
  4. Starten Sie den Kernel mit der Speicheradresse des zusammengeführten DT.