Overlay struttura ad albero dei dispositivi

Una struttura ad albero del dispositivo (DT) è una struttura di dati di proprietà e nodi denominati che descrive l'hardware non rilevabile. I kernel, ad esempio 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 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 quindi usati 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 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 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 della struttura ad albero dei dispositivi nel bootloader.

  1. 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 esecuzione del bootloader (dettagliata di seguito).

  2. 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).

  3. 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 obbligatoria.