Molti fornitori di SoC e ODM supportano l'uso di più alberi di dispositivi (DT) su un dispositivo, consentendo a un'immagine di supportare più SKU o configurazioni. In questi casi, il bootloader identifica l'hardware e carica il DT corrispondente in fase di esecuzione:
Figura 1. Più overlay dell'albero del dispositivo (DTO) nel bootloader.
Nota:l'utilizzo di più DT non è obbligatorio.
Configura
Per aggiungere il supporto di più DT al modello DTO, configura un elenco di DT principali e un altro elenco di DT in overlay.
Figura 2. Implementazione di DTO di runtime per più DT.
Il bootloader deve essere in grado di:
- Leggi l'ID SoC e seleziona il DT principale corrispondente.
- Leggi l'ID scheda e seleziona di conseguenza l'insieme di DT in overlay.
È necessario selezionare un solo DT principale da utilizzare in fase di runtime. È possibile selezionare più DT in overlay, ma devono essere compatibili con il DT principale scelto. L'utilizzo di più overlay può contribuire a evitare di memorizzare un overlay per scheda all'interno della partizione DTBO e consentire al bootloader di determinare il sottoinsieme di overlay richiesti in base all'ID scheda (o eventualmente mediante il rilevamento delle periferiche). Ad esempio, la scheda A potrebbe richiedere i dispositivi aggiunti dagli overlay 1, 3 e 5, mentre la scheda B potrebbe richiedere i dispositivi aggiunti dagli overlay 1, 4 e 5.
Partizione
Per eseguire la partizione, determina una posizione attendibile e accessibile in fase di runtime del bootloader nella memoria flash per memorizzare i DTB e i DTBO (il bootloader deve essere in grado di individuare questi file nella procedura di corrispondenza). Tieni presente che i DBT e i DTBO non possono essere presenti nella stessa partizione. Se i tuoi DTB/DTBO si trovano nella tabella
dtb
/dtbo
, utilizza la struttura della tabella e il formato della tabella
descritti in Formato della tabella
DTB e DTBO.
Esegui nel bootloader
Per eseguire:
- Identifica il SoC e carica il file .dtb corrispondente dalla memoria archiviazione nella memoria.
- Identifica la scheda e carica il corrispondente
.dtbo
dalla memoria di archiviazione nella memoria. - Sovrapponi
.dtb
a.dtbo
per ottenere un tabella di dati unita. - Avvia il kernel in base all'indirizzo di memoria del DT unito.