Overlay della struttura del dispositivo

Un albero dei dispositivi (DT) è una struttura di dati di nodi e proprietà denominati che descrivono 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 Android. I fornitori di hardware forniscono i propri file sorgente di Device Tree (DTS), che vengono compilati nel file blob di Device Tree (DTB) utilizzando il compilatore di Device Tree. Questi file vengono poi utilizzati dal bootloader. Il file DTB contiene un albero dei dispositivi compresso in formato binario.

Un overlay di Device Tree (DTO) consente di sovrapporre un DTB centrale al DT (un blob di Device Tree per l'overlay (DTBO)). Un bootloader che utilizza DTO può mantenere 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 comporta la creazione, il partizionamento e l'esecuzione.

Figura 1. Implementazione tipica per il caricamento del Device Tree nel bootloader.

  1. Per creare ed eseguire il flashing del DTB:

    1a. Utilizza DTC (dtc) per compilare DTS (.dts) in un DTB (.dtb). Il DTB è formattato come un DT appiattito. 1b. Esegui il flashing del file .dtb in una posizione accessibile in fase di esecuzione del bootloader (vedi i dettagli di seguito).

  2. Per partizionare, determina una posizione attendibile e accessibile in fase di runtime del bootloader nella memoria flash in cui inserire .dtb. Esempio di indirizzi:

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

    Figura 3. Inserisci .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 tipico flusso di lavoro del bootloader per il caricamento di un DT e fornisce un elenco di termini DT comuni. 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 informazioni dettagliate sulla sintassi DTO e sulla formattazione delle partizioni DTO e DTBO.