Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Nakładki drzewa urządzeń
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Drzewo urządzenia (DT) to struktura danych złożona z nazwanych węzłów i właściwości, które opisują sprzęt niewykrywalny. Rdzenie, takie jak jądro Linuksa używane w Androidzie, korzystają z DT, aby obsługiwać szeroki zakres konfiguracji sprzętowych używanych przez urządzenia z Androidem. Dostawcy sprzętu dostarczają własne pliki źródłowe katalogu urządzenia (DTS), które są kompilowane do pliku blob katalogu urządzenia (DTB) za pomocą kompilatora katalogu urządzenia. Te pliki są następnie używane przez bootloader. Plik DTB zawiera spłaszczoną strukturę drzewa urządzeń w formacie binarnym.
Nakładka drzewa urządzenia (DTO) umożliwia nałożenie centralnego pliku DTB na plik DT (plik blob drzewa urządzenia). Bootloader korzystający z DTO może utrzymywać DT systemu na chipie (SoC) i dynamicznie nakładać DT specyficzny dla urządzenia, dodając węzły do drzewa oraz wprowadzając zmiany w właściwościach w dotychczasowym drzewie.
Aktualizacje w wersji Androida 9
W Androidzie 9 bootloader nie może modyfikować właściwości zdefiniowanych w obiektach DTO przed przekazaniem ujednoliconego DTB do jądra.
Wczytywanie DT
Wczytywanie DT w programie rozruchowym obejmuje kompilację, partycjonowanie i uruchamianie.

Rysunek 1. Typowe wdrożenie wczytywania drzewa urządzenia w programie rozruchowym.
Aby utworzyć i przeflashować DTB:
1a. Użyj narzędzia DTC (dtc
), aby skompilować DTS (.dts
) w pliku DTB (.dtb
). Plik DTB jest sformatowany jako spłaszczone drzewo urządzeń.
1b. Wgraj plik .dtb
do lokalizacji dostępnej dla bootloadera w czasie wykonywania (szczegóły poniżej).
Aby utworzyć partycję, określ zaufane miejsce w pamięci flash, do którego bootloader ma dostęp w czasie działania, i umieścić w nim .dtb
. Przykładowe lokalizacje:

Rysunek 2. Umieść plik .dtb na partycji rozruchowej, dołączając go do pliku image.gz i przekazując jako „jądro” do mkbootimg.
|

Rysunek 3. Umieść plik .dtb w osobnej partycji (np. partycji dtb).
|
Aby załadować DTB i uruchomić jądro:
- Wczytaj
.dtb
z pamięci masowej do pamięci.
- Uruchom jądro, używając adresu pamięci załadowanego DT.
Co dalej?
Ta strona zawiera szczegółowy opis typowego procesu ładowania DT przez bootloader oraz listę typowych terminów dotyczących DT. Na innych stronach w tej sekcji znajdziesz informacje o tym, jak wdrożyć obsługę bootloadera, skompilować, zweryfikować i zoptymalizować DTO oraz jak używać wielu DTO. Możesz też uzyskać szczegółowe informacje o składni DTO oraz wymaganym formatowaniu partycji DTO i DTBO.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[],null,["# Device tree overlays\n\n\u003cbr /\u003e\n\nA *device tree (DT)* is a data structure of named nodes and properties that\ndescribe non-discoverable hardware. Kernels, such as the Linux kernel\nused in Android, use DTs to support a wide range of hardware configurations used\nby Android-powered devices. Hardware vendors supply their own *device tree\nsource (DTS)* files, which are compiled into the *device tree blob (DTB)* file\nusing the *device tree compiler* . These files are then used by the\nbootloader. The DTB file contains a binary-formatted *flattened device tree*.\n\nA [*device tree overlay (DTO)*](https://lkml.org/lkml/2012/11/5/615)\nenables a central DTB to be overlaid on the DT (a *device tree blob\nfor overlay (DTBO)*). A bootloader using DTO can maintain the system-on-chip\n(SoC) DT and dynamically overlay a device-specific DT, adding nodes to the tree\nand making changes to properties in the existing tree.\n\nUpdates in Android 9 release\n----------------------------\n\nIn Android 9, the bootloader must not modify the\nproperties defined in the DTOs before passing the unified DTB to the kernel.\n\nLoad a DT\n---------\n\nLoading a DT in bootloader involves building, partitioning, and running.\n\n**Figure 1.** Typical implementation for loading device tree in bootloader.\n\n1. To create and flash the DTB:\n\n 1a. Use the DTC (`dtc`) to compile DTS (`.dts`) into a DTB (`.dtb`).\n The DTB is formatted as a flattened DT.\n 1b. Flash the `.dtb` file into a bootloader runtime-accessible location\n (detailed below).\n2. To partition, determine a bootloader runtime-accessible and trusted location\n in flash memory to put `.dtb`. Example locations:\n\n \u003cbr /\u003e\n\n |-----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|\n | **Figure 2.** Put .dtb in a boot partition by appending to image.gz and passing as \"kernel\" to mkbootimg. | **Figure 3.** Put .dtb in a unique partition (for example, dtb partition). |\n\n \u003cbr /\u003e\n\n3. To load the DTB and start the kernel:\n\n - Load `.dtb` from storage into memory.\n - Start kernel using the memory address of the loaded DT.\n\nWhat's next?\n------------\n\nThis page details a typical bootloader workflow for loading a DT and provides\na list of common DT terms. Other pages in this section describe how to\n[implement bootloader support](/docs/core/architecture/dto/implement), how to\n[compile](/docs/core/architecture/dto/compile), verify, and\n[optimize your DTO](/docs/core/architecture/dto/optimize), and how to\n[use multiple DTs](/docs/core/architecture/dto/multiple). You can\nalso get details on [DTO syntax](/docs/core/architecture/dto/syntax) and\nrequired\n[DTO and DTBO partition formatting](/docs/core/architecture/dto/partitions)."]]