DTB-Bilder

Android-Implementierungen können ein DTB-Bild (Device Tree Blob) zur Verwendung durch dem Bootloader. Der Speicherort des DTB-Bilds (und die Optionen zur Angabe DTB-Bildparameter) unterscheiden sich bei den einzelnen Android-Versionen.

DTB-Bildformat

Ab Android 10 muss das DTB-Image eine der folgenden Formate verwenden:

  • DT-Blobs, die nacheinander verkettet sind. Der Bootloader verwendet den totalsize in jedem FDT-Header, um das entsprechende Blob zu lesen und zu parsen.

  • DTB/DTBO-Partitionen: Der Bootloader kann den Parameter korrektes DT-Blob, indem Sie die Struktur dt_table_entry untersuchen (enthält id, rev und custom), die Informationen zur Identifizierung der Hardware für den Eintrag. Weitere Informationen: DTB/DTBO Partitionen.

DTB-Image in das Boot-Image aufnehmen

Geräte mit Android 10 können das DTB-Image in das Boot-Image. Android muss nun keine Skripts mehr unterstützen, das DTB-Image auf image.gz im Kernel und ermöglicht die Verwendung von Vendor Test Suite-Test (VTS), um DTB zu verifizieren (und zu standardisieren) Placement.

Außerdem ist es bei Nicht-A/B-Geräten sicherer, die DTB als Teil des und nicht in einer separaten Partition, um Probleme zu vermeiden, OTAs unterbrochen. Wenn während eines OTA-Updates ein Problem auftritt, nachdem die DTB-Partition (aber bevor das vollständige Update abgeschlossen wird), versucht das Gerät, Wiederherstellungsmodus, um das OTA-Update abzuschließen; Da die DTB-Partition allerdings bereits aktualisiert wurde, könnte eine Diskrepanz mit dem Wiederherstellungsabbild (das wurde noch nicht aktualisiert). Das DTB-Image als Teil des Boot-Image-Formats verhindern Sie solche Probleme, indem Sie das Wiederherstellungsabbild selbstausreichend machen, nicht von einer anderen Partition abhängig ist).

Struktur des Boot-Images

Geräte mit Android 10 können ein DTB-Image enthalten und verwenden dabei die folgende Boot-Image-Struktur.

Bereich für Boot-Image Anzahl der Seiten
Bootheader (1 Seite) 1
Kernel (l-Seiten) l = (kernel_size + page_size - 1) / page_size
Ramdisk (M-Seiten) m = (ramdisk_size + page_size - 1) / page_size
Bootloader der zweiten Phase (n Seiten) n = (second_size + page_size - 1) / page_size
Wiederherstellung DTBO (o Seiten) o = (recovery_dtbo_size + page_size - 1) / page_size
DTB (Seiten) p = (dtb_size + page_size - 1) / page_size

DTB-Image-Pfad

Für Geräte mit Android 10 können Sie die mkbootimg.py-Tool und die folgenden Argumente, um den Pfad zum DTB anzugeben Bild.

Argumentation Beschreibung
dtb Pfad zum DTB-Image, das in die Boot-/Wiederherstellungs-Images enthalten sein soll.
dtb_offset Wenn es dem Argument base hinzugefügt wird, wird die physische Last angegeben. und die Adresse für die endgültige Gerätestruktur. Wenn beispielsweise base Argument ist 0x10000000 und das Argument dtb_offset ist 0x01000000, die dtb_addr_field im Boot-Image wird als 0x11000000 ausgefüllt.

Die Board-Konfigurationsvariable BOARD_PREBUILT_DTBIMAGE_DIR muss verwendet werden, um anzugeben Pfad zum DTB-Image. Wenn mehrere Dateien mit der Endung *.dtb im Verzeichnis BOARD_PREBUILT_DTBIMAGE_DIR, dem Android-Build-System verkettet die Dateien, um das endgültige DTB-Image zu erstellen, das im Boot-Image verwendet wird. Erstellung.

Um das Argument dtb an mkbootimg.py mit dem DTB-Bild aus dem Verzeichnis durch BOARD_PREBUILT_DTBIMAGE_DIR, die Board-Konfigurationsvariable BOARD_INCLUDE_DTB_IN_BOOTIMG muss auf true festgelegt sein. Beispiel:

BOARD_INCLUDE_DTB_IN_BOOTIMG := true

Sie können das Argument dtb_offset an das Board BOARD_MKBOOTIMG_ARGS anhängen. Konfigurationsvariable mit den anderen Offsets und der Kopfzeilenversion. Beispiel:

BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --dtb_offset $(BOARD_DTB_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)

Bootloader-Unterstützung

Damit VTS auf Geräten mit Android ausgeführt werden kann 10, muss der Bootloader das aktualisierte Boot-Image unterstützen Außerdem muss der Kernel-Befehlszeilenparameter androidboot.dtb_idx hinzugefügt werden, Index der ausgewählten Gerätestruktur (DT) Sie können nur eine Option angeben (1) Index. Beispielsweise gibt der Parameter androidboot.dtb_idx=N N als nullbasierter Index der Gerätestruktur, die vom Bootloader aus der Gruppe von Im Boot-Image vorhandene DTBs.