Wsparcie DTO

Nakładka drzewa urządzeń (DTO) rozszerza istniejące implementacje spłaszczonego drzewa urządzeń (FDT) , umożliwiając przestrzeni użytkownika modyfikację początkowych danych drzewa urządzeń w jądrze w czasie wykonywania poprzez ładowanie dodatkowych nakładek FDT, które zmieniają oryginalne dane. Android nie wymaga aktualizacji obiektów blob DT w czasie wykonywania z przestrzeni użytkownika, zamiast tego zaleca dostawcom dodanie łatki do drzewa urządzeń w programie ładującym za pomocą libfdt lub libufdt .

Obsługa DTO w systemie Android

Obsługa Androida dla DTO różni się w zależności od wersji Androida:

  • Android 7.x i starsze wersje nie wymagają obsługi drzewa urządzeń i nie udostępniają zaleceń dotyczących sposobu, w jaki dostawcy przekazują obiekty blob DT do jądra ani miejsca ich przechowywania.
  • Android 8.x zaleca obsługę drzewa urządzeń, aby oddzielić części jądra przeznaczone dla płyty głównej i tylko dla SoC.
  • Android 9 i nowsze wymagają obecności partycji DTBO (Device Tree Blob Overlay Overlay) i zastosowania co najmniej jednego DTO.

Wymagania dotyczące partycjonowania DTO

Większość urządzeń z Androidem dołącza obiekt blob DT do jądra w czasie kompilacji, a program ładujący ładuje obiekt blob z jądra. Ponieważ jednak obiekty blob DT są uważane za część jądra systemu na chipie (SoC), system Android nie ma konkretnych wymagań dotyczących sposobu tworzenia lub przechowywania obiektów blob DT. Urządzenia mogą dołączać obiekt blob DT do jądra lub przechowywać obiekt blob na osobnej partycji; jedynym wymaganiem jest to, aby program ładujący wiedział, jak i skąd załadować obiekt blob DT.

Aby obsługiwać DTO, urządzenia powinny mieć:

  • Jedna partycja DTBO na obraz jądra dla nakładki DT specyficznej dla płyty, a program ładujący musi wiedzieć, gdzie i jak załadować DTB specyficzny dla SoC. Rozmiar partycji zależy od liczby zmian potrzebnych do utworzenia jądra SoC — wybierz rozmiar z możliwością powiększenia w celu przyszłych aktualizacji; zazwyczaj rozmiar partycji 8 MB jest więcej niż wystarczający.
  • Zaktualizowano partycje DTO dla urządzeń A/B . Jądro odzyskiwania jest takie samo jak jądro Androida, ale partycja musi być skonfigurowana dla urządzeń A/B, aby można było ją aktualizować za pomocą aktualizacji OTA. Rozmiar partycji zależy od urządzenia i liczby zmian w głównym blobie DT jądra SoC.

Wymagania dotyczące programu ładującego DTO

Aby obsługiwać DTO, bootloader powinien:

  • Wiedz, jak i gdzie (biorąc pod uwagę gniazdo rozruchowe dla urządzeń A/B), aby załadować obiekt blob DT specyficzny dla SoC w sposób specyficzny dla dostawcy (zwykle wyodrębniany z końca obrazu jądra, gdy obiekty blob są dołączane do jądra).
  • Dowiedz się, jak i gdzie załadować obiekt blob nakładki DT w sposób specyficzny dla dostawcy.
  • Załataj główny obiekt blob DT za pomocą nakładki przed przekazaniem połączonego drzewa urządzeń do jądra.

Aby uzyskać więcej informacji na temat dodawania obsługi DTO w programie ładującym, zobacz Nakładki drzewa urządzeń .