Многие поставщики SoC и ODM поддерживают использование нескольких деревьев устройств (DT) на одном устройстве, что позволяет одному образу работать с несколькими SKU или конфигурациями. В таких случаях загрузчик определяет оборудование и загружает соответствующий DT во время выполнения:

Рисунок 1. Несколько наложений дерева устройств (DTO) в загрузчике операционной системы.
Примечание. Использовать несколько ДУ необязательно.
Настроить
Чтобы добавить в модель DTO поддержку нескольких DT, настройте список основных DT и список наложенных DT.

Рисунок 2. Реализация DTO во время выполнения для нескольких ДУ.
Загрузчик должен уметь:
- Прочитайте идентификатор SoC и выберите соответствующее основное ДУ.
- Прочитайте идентификатор платы и выберите соответствующий набор наложений DT.
Во время выполнения можно использовать только один основной DT. Можно выбрать несколько накладываемых ДУ, но они должны быть совместимы с основным ДУ. Использование нескольких оверлеев позволяет избежать хранения одного оверлея на плату в разделе DTBO и позволяет загрузчику определять подмножество необходимых оверлеев на основе идентификатора платы (или, возможно, путем зондирования периферийных устройств). Например, для платы A могут потребоваться устройства, добавленные оверлеями 1, 3 и 5, а для платы B – устройства, добавленные оверлеями 1, 4 и 5.
Раздел
Чтобы создать раздел, определите местоположение в памяти устройства, доступное для загрузчика и надежное, чтобы хранить DTB и DTBO (загрузчик должен иметь возможность найти эти файлы в процессе сопоставления). Обратите внимание, что DTB и DTBO не могут находиться в одном разделе. Если ваши DTB/DTBO находятся в разделе dtb/dtbo, используйте структуру таблицы и формат заголовка, описанные в разделе Формат раздела DTB и DTBO.
Запуск в загрузчике
Чтобы запустить:
- Определите SoC и загрузите соответствующий файл .dtb из хранилища в память.
- Определите плату и загрузите соответствующий
.dtboиз хранилища в память. - Наложите
.dtbна.dtbo, чтобы получить объединенное ДУ. - Запустите ядро, указав адрес памяти объединенного дерева устройств.