A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Overlay della struttura del dispositivo
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Una struttura ad albero del dispositivo (DT) è una struttura di dati di proprietà e nodi denominati che descrive l'hardware non rilevabile. I kernel, come il kernel Linux usato in Android, utilizzano i DT per supportare un'ampia gamma di configurazioni hardware utilizzate dai dispositivi Android. I fornitori di hardware forniscono i propri file di origine dell'albero dei dispositivi (DTS), che vengono compilati nel file blob dell'albero dei dispositivi (DTB) utilizzando il compilatore dell'albero dei dispositivi. Questi file vengono poi utilizzati dal bootloader. Il file DTB contiene una struttura ad albero del dispositivo appiattita in formato binario.
Un overlay dell'albero dei dispositivi (DTO) consente di sovrapporre un DTB centrale all'albero dei dispositivi (un blob dell'albero dei dispositivi per l'overlay (DTBO)). Un bootloader che utilizza il DTO può gestire il DT del system-on-chip (SoC) e sovrapporre dinamicamente un DT specifico del dispositivo, aggiungendo nodi all'albero e apportando modifiche alle proprietà nell'albero esistente.
Aggiornamenti nella release di Android 9
In Android 9, il bootloader non deve modificare le proprietà definite nei DTO prima di passare il DTB unificato al kernel.
Caricare un DT
Il caricamento di un DT nel bootloader prevede la compilazione, la partizione e l'esecuzione.

Figura 1. Implementazione tipica per il caricamento dell'albero del dispositivo nel bootloader.
Per creare e eseguire il flashing del DTB:
1a. Utilizza DTC (dtc
) per compilare DTS (.dts
) in un DTB (.dtb
).
Il DTB è formattato come DT appiattito.
1b. Esegui il flashing del file .dtb
in una posizione accessibile in fase di runtime dal bootloader
(dettagliata di seguito).
Per creare la partizione, determina una posizione attendibile e accessibile in fase di runtime del bootloader nella memoria flash in cui inserire .dtb
. Esempi di località:

Figura 2. Inserisci .dtb in una partizione di avvio aggiungendolo a image.gz e passandolo come"kernel" a mkbootimg.
|

Figura 3. Inserisci il file .dtb in una partizione univoca (ad esempio la partizione dtb).
|
Per caricare il DTB e avviare il kernel:
- Carica
.dtb
dallo spazio di archiviazione nella memoria.
- Avvia il kernel utilizzando l'indirizzo di memoria del DT caricato.
Passaggi successivi
Questa pagina descrive un flusso di lavoro tipico del bootloader per il caricamento di un DT e fornisce un elenco di termini comuni dei DT. Le altre pagine di questa sezione descrivono come
implementare il supporto del bootloader, come
compilare, verificare e
ottimizzare il DTO e come
utilizzare più DT. Puoi anche trovare dettagli sulla sintassi DTO e sulla formattazione delle partizioni DTO e DTBO richieste.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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)."]]