Используйте несколько ОУ

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

Рисунок 1. Несколько наложений дерева устройств (DTO) в загрузчике.

Примечание. Использование нескольких ОУ не является обязательным.

Настраивать

Чтобы добавить поддержку нескольких ОУ в модель DTO, настройте список основных ОУ и еще один список наложенных ОУ.

Рисунок 2. Реализация DTO во время выполнения для нескольких DT.

Загрузчик должен уметь:

  • Считайте идентификатор SoC и выберите соответствующее основное ОУ.
  • Прочтите идентификатор платы и выберите соответствующий набор наложенных ОУ.

Для использования во время выполнения следует выбирать только одно главное ОУ. Можно выбрать несколько наложенных ОУ, но они должны быть совместимы с выбранным основным ОУ. Использование нескольких наложений может помочь избежать хранения одного наложения на каждую плату в разделе DTBO и позволить загрузчику определить подмножество необходимых наложений на основе идентификатора платы (или, возможно, путем проверки периферийных устройств). Например, плате A могут потребоваться устройства, добавленные наложениями 1, 3 и 5, а плате B могут потребоваться устройства, добавленные наложениями 1, 4 и 5.

Раздел

Для разделения определите доступное и надежное расположение загрузчика во флэш-памяти для хранения DTB и DTBO (загрузчик должен иметь возможность находить эти файлы в процессе сопоставления). Имейте в виду, что DTB и DTBO не могут существовать в одном разделе. Если ваши DTB/DTBO находятся в разделе dtb / dtbo , используйте структуру таблицы и формат заголовка, подробно описанные в разделе Формат раздела DTB и DTBO .

Запустить в загрузчике

Бежать:

  1. Определите SoC и загрузите соответствующий .dtb из хранилища в память.
  2. Определите плату и загрузите соответствующий .dtbo из хранилища в память.
  3. Наложите .dtb на .dtbo , чтобы получить объединенное DT.
  4. Запустите ядро ​​по адресу памяти объединенного DT.