Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Внедрение DTO

Реализация DTO включает разделение дерева устройств, построение, разбиение на разделы и выполнение. После того, как у вас есть рабочая реализация, вы также должны поддерживать совместимость между двумя DT и определять стратегию обеспечения безопасности каждого раздела DT.

Деление ДТ

Начните с разделения дерева устройств на две (2) части:

  • Основное ДТ . Часть только для SoC и конфигурации по умолчанию, предоставленные поставщиком SoC.
  • Наложение DT . Конфигурации для конкретных устройств, предоставляемые ODM / OEM.

После разделения деревьев устройств необходимо обеспечить совместимость между основным ОУ и оверлейным ОУ, чтобы объединение основного ОУ и оверлейного ОУ привело к созданию полного ОУ для устройства. Подробнее о формате и правилах DTO см. В разделе Синтаксис DTO . Дополнительные сведения о нескольких деревьях устройств см. В разделе Несколько DT .

Построение основных и накладываемых ОУ

Чтобы построить основное ОУ:

  1. Скомпилируйте основной DT .dts в .dtb файл.
  2. .dtb файл .dtb в раздел загрузчика, доступный во время выполнения (подробно описано ниже).

Чтобы построить оверлейное ОУ:

  1. Скомпилируйте оверлей DT .dts в файл .dtbo . Хотя этот формат файла такой же, как файл .dtb отформатированный как .dtb дерево устройств, другое расширение файла отличает его от основного DT.
  2. .dtbo файл .dtbo в раздел загрузчика, доступный во время выполнения (как описано ниже).

Дополнительные сведения о компиляции с помощью DTC и проверке результатов DTO на хосте см. В разделе « Компиляция и проверка» .

Разбиение ДЦ

Определите доступное во время выполнения и .dtbo место загрузчика во флеш-памяти для размещения .dtb и .dtbo .

Пример расположения основного ОУ:

  • Часть загрузочного раздела, добавленная к ядру ( image.gz ).
  • Отдельные капли DT ( .dtb ) в выделенном разделе ( dtb ).

Пример расположения ОУ наложения:

Уникальный раздел
Рисунок 1. Поместите .dtbo в уникальный раздел, например раздел dtbo .
Раздел ODM
Рисунок 2. Поместите .dtbo в раздел odm (сделайте это, только если ваш загрузчик имеет возможность загружать данные из файловой системы раздела odm ).

Примечание . Размер оверлейного раздела DT зависит от устройства и количества изменений, необходимых для основного большого двоичного объекта DT. Как правило, 8 МБ более чем достаточно, и при необходимости можно увеличить объем памяти в будущем.

Для устройств, поддерживающих бесшовное (A / B) обновление , разделы A / B основного DT и оверлейного DT:

Пример 1
Рисунок 3. Раздел DTBO A / B, пример 1.
Пример 2
Рисунок 4. Раздел DTBO A / B, пример 2.

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

Бежать:

Рисунок 5. Типичная реализация во время выполнения для наложения дерева устройств в загрузчике.
  1. Загрузите .dtb из хранилища в память.
  2. Загрузите .dtbo из хранилища в память.
  3. .dtb .dtbo на .dtbo чтобы .dtbo объединенное DT.
  4. Запустить ядро ​​по адресу памяти объединенного DT.

Поддержание совместимости

Основной DTB (от поставщика SoC) рассматривается как поверхность API для DTBO. После разделения дерева устройств на общую часть SoC и часть, относящуюся к конкретному устройству, вы должны сохранить обе части взаимно совместимыми в будущем, в том числе:

  • Определение ОУ в основном ОУ (например, узлы, свойства, метки) . Любое изменение определения в основном ОУ может вызвать изменения в оверлейном ОУ. Например, чтобы исправить имя узла в главном ОУ, определите метку «псевдоним», которая отображается на исходное имя узла (чтобы избежать изменения оверлейного ОУ).
  • Наложение местоположения хранилища DT (например, имя раздела, формат хранилища) .

Обеспечение безопасности

Загрузчик должен гарантировать, что DTB / DTBO безопасен, не изменен и не поврежден. Вы можете использовать любое решение для защиты DTB / DTBO, например, подпись загрузочного образа в VBoot 1.0 или нижний колонтитул AVB HASH (VBoot 2.0).

  • Если DTB / DTBO находится в уникальном разделе, вы можете добавить этот раздел в цепочку доверия AVB. Цепочка доверия начинается с защищенного оборудованием корня доверия и идет к загрузчику, который проверяет целостность и подлинность раздела DTB / DTBO.
  • Если DTB / DTBO находится в существующем разделе (таком как раздел odm ), этот раздел должен быть в цепочке доверия AVB. (Раздел DTBO может совместно использовать открытый ключ с разделом odm ).

Для получения дополнительной информации см. Проверенная загрузка .