Utilizzo di più DT

Molti fornitori di SoC e ODM supportano l'uso di più DT su un dispositivo, consentendo a un'immagine di alimentare più SKU/configurazioni. In questi casi, il bootloader identifica l'hardware e carica il DT corrispondente in fase di runtime:

Figura 1. Alberi di dispositivi multipli sovrapposti nel bootloader.

Nota: l'utilizzo di più DT non è obbligatorio.

Impostare

Per aggiungere il supporto per più DT al modello DTO, impostare un elenco di DT principali e un altro elenco di DT sovrapposte.

Figura 2. Implementazione DTO runtime per più DT.

Il bootloader dovrebbe essere in grado di:

  • Leggere l'ID SoC e selezionare la struttura del dispositivo principale corrispondente e
  • Leggere l'ID della scheda e selezionare di conseguenza il set di alberi dei dispositivi sovrapposti.

Durante il runtime deve essere selezionata solo una SEF principale da utilizzare. È possibile selezionare più SEF sovrapposte, ma devono essere compatibili con la SEF principale scelta. L'uso di più overlay può aiutare 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 della scheda (o eventualmente sondando le periferiche). Ad esempio, la scheda A potrebbe aver bisogno dei dispositivi aggiunti dagli overlay 1, 3 e 5 mentre la scheda B potrebbe aver bisogno dei dispositivi aggiunti dagli overlay 1, 4 e 5.

Partizionamento

Per eseguire la partizione, determinare una posizione affidabile e accessibile in fase di esecuzione del bootloader nella memoria flash per archiviare DTB e DTBO (il bootloader deve essere in grado di individuare questi file nel processo di corrispondenza). Tieni presente che DTB e DTBO non possono esistere nella stessa partizione. Se i tuoi DTB/DTBO si trovano nella partizione dtb / dtbo , utilizza la struttura della tabella e il formato dell'intestazione descritti in Formato della partizione DTB/DTBO .

In esecuzione nel bootloader

Correre:

  1. Identificare il SoC e caricare il file .dtb corrispondente dallo storage in memoria.
  2. Identificare la scheda e caricare il .dtbo corrispondente dallo storage in memoria.
  3. Sovrapponi il .dtb al .dtbo per creare un DT unito.
  4. Avviare il kernel dato l'indirizzo di memoria del DT unito.