Un albero dei dispositivi (DT) è una struttura dati di nodi denominati e proprietà che descrivono l'hardware non rilevabile. I kernel, come il kernel Linux utilizzato in Android, utilizzano i DT per supportare un'ampia gamma di configurazioni hardware utilizzate dai dispositivi basati su Android. I fornitori di hardware forniscono i propri file Device Tree Source (DTS) , che vengono compilati nel file Device Tree Blob (DTB) utilizzando Device Tree Compiler . Questi file vengono quindi utilizzati dal bootloader. Il file DTB contiene un albero di dispositivi appiattito in formato binario.
Un Device Tree Overlay (DTO) consente di sovrapporre un DTB (Device Tree Blob) centrale all'albero dei dispositivi. Un bootloader che utilizza DTO può mantenere il DT 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 versione Android 9
In Android 9, il bootloader non deve modificare le proprietà definite negli overlay dell'albero dei dispositivi prima di passare il blob dell'albero dei dispositivi unificato al kernel.
Caricamento di un albero dei dispositivi
Il caricamento di un albero dei dispositivi nel bootloader comporta la creazione, il partizionamento e l'esecuzione.

Per creare ed eseguire il flashing del blob della struttura ad albero del dispositivo:
1a. Usare il compilatore dell'albero dei dispositivi (
dtc
>) per compilare l'origine dell'albero dei dispositivi (.dts
) in un BLOB dell'albero dei dispositivi (.dtb
). Il BLOB dell'albero dei dispositivi è formattato come albero dei dispositivi appiattito. 1b. Eseguire il flashing del file.dtb
in una posizione accessibile al runtime del bootloader (dettagliata di seguito).Per partizionare, determinare una posizione attendibile e accessibile al runtime del bootloader nella memoria flash in cui inserire
.dtb
. Posizioni di esempio:Partizione di avvio Figura 2. Inserisci .dtb
nella partizione di avvio aggiungendolo aimage.gz
e passando come "kernel
" amkbootimg
.Partizione Unica Figura 3. Inserire .dtb
in una partizione univoca (ad es. partizionedtb
).Per caricare il blob dell'albero dei dispositivi e avviare il kernel:
3a. Carica
.dtb
dalla memoria alla memoria. 3b. Avvia il kernel usando l'indirizzo di memoria del DT caricato.
Qual è il prossimo?
Questa pagina descrive in dettaglio un tipico flusso di lavoro del bootloader per il caricamento di un DT e fornisce un elenco di termini DT comuni. Altre pagine in questa sezione descrivono come implementare il supporto del bootloader , come compilare , verificare e ottimizzare il proprio DTO e come utilizzare più DT . È inoltre possibile ottenere dettagli sulla sintassi DTO e sulla formattazione della partizione DTO/DTBO richiesta.