Поддержка DTO

Наложение дерева устройств (DTO) расширяет существующие реализации сглаженного дерева устройств (FDT) , позволяя пользовательскому пространству изменять исходные данные дерева устройств в ядре во время выполнения путем загрузки дополнительных наложенных FDT, которые изменяют исходные данные. Android не требует обновлений DT-объектов во время выполнения из пользовательского пространства, но вместо этого рекомендует поставщикам добавлять исправления дерева устройств в загрузчик с помощью libfdt или libufdt .

Поддержка Android DTO

Поддержка DTO в Android зависит от версии Android:

  • Android 7.x и более ранние версии не требуют поддержки дерева устройств и не предоставляют рекомендаций о том, как поставщики передают большие двоичные объекты DT в ядро ​​или где они их хранят.
  • В Android 8.x рекомендуется поддержка дерева устройств, чтобы разделить части ядра, специфичные для платы, и части ядра, предназначенные только для SoC.
  • Android 9 и более поздних версий требуют присутствия раздела наложения BLOB-объектов дерева устройств (DTBO) и применения хотя бы одного DTO.

Требования к разделению DTO

Большинство устройств Android добавляют большой двоичный объект DT в ядро ​​во время сборки, и загрузчик загружает этот большой двоичный объект из ядра. Однако, поскольку большие двоичные объекты DT считаются частью ядра системы на кристалле (SoC), Android не предъявляет особых требований к созданию или хранению больших двоичных объектов DT. Устройства могут добавлять большой двоичный объект DT в ядро ​​или хранить его в отдельном разделе; единственное требование состоит в том, чтобы загрузчик знал, как и откуда загружать большой двоичный объект DT.

Для поддержки DTO устройства должны иметь:

  • Один раздел DTBO на каждый образ ядра для наложения DT для конкретной платы, и загрузчик должен знать, где и как загружать DTB для конкретной SoC. Размер раздела зависит от количества изменений, необходимых для создания ядра SoC — выберите размер, в котором есть место для будущих обновлений; обычно размера раздела в 8 МБ более чем достаточно.
  • Разделы DTO обновлены для устройств A/B . Ядро восстановления такое же, как и ядро ​​Android, но раздел должен быть настроен для устройств A/B, чтобы его можно было обновлять посредством обновлений по беспроводной сети (OTA). Размер раздела зависит от устройства и количества изменений поверх основного объекта DT ядра SoC.

Требования к загрузчику DTO

Для поддержки DTO загрузчик должен:

  • Знайте, как и где (с учетом загрузочного слота для устройств A/B) загрузить специфичный для SoC большой двоичный объект DT способом, зависящим от поставщика (обычно извлекается из конца образа ядра, когда большие двоичные объекты добавляются к ядру).
  • Узнайте, как и откуда загрузить оверлейный большой двоичный объект DT в зависимости от поставщика.
  • Исправьте основной объект DT с наложением перед передачей объединенного дерева устройств ядру.

Дополнительные сведения о добавлении поддержки DTO в загрузчик см. в разделе «Наложения дерева устройств» .