Nakładki na drzewo urządzeń

Drzewo urządzeń (DT) to struktura danych zawierająca nazwane węzły i właściwości opisujące niewykrywalny sprzęt. Jądra, takie jak jądro Linuksa używane w systemie Android, wykorzystują identyfikatory ID do obsługi szerokiej gamy konfiguracji sprzętowych używanych przez urządzenia z systemem Android. Dostawcy sprzętu dostarczają własne pliki źródłowe drzewa urządzeń (DTS) , które są kompilowane do pliku Blob drzewa urządzeń (DTB) za pomocą kompilatora drzewa urządzeń . Pliki te są następnie wykorzystywane przez program ładujący. Plik DTB zawiera spłaszczone drzewo urządzeń w formacie binarnym.

Nakładka drzewa urządzeń (DTO) umożliwia nałożenie centralnego obiektu blob drzewa urządzeń (DTB) na drzewo urządzeń. Program ładujący korzystający z DTO może utrzymywać identyfikator system-on-chip (SoC) i dynamicznie nakładać identyfikator specyficzny dla urządzenia, dodając węzły do ​​drzewa i wprowadzając zmiany we właściwościach istniejącego drzewa.

DTBO Obiekt blob drzewa urządzeń dla nakładki

Aktualizacje w wersji Androida 9

W systemie Android 9 program ładujący nie może modyfikować właściwości zdefiniowanych w nakładkach drzewa urządzeń przed przekazaniem obiektu BLOB ujednoliconego drzewa urządzeń do jądra.

Załaduj drzewo urządzeń

Ładowanie drzewa urządzeń do programu ładującego obejmuje budowanie, partycjonowanie i uruchamianie.

Rysunek 1. Typowa implementacja ładowania drzewa urządzeń w bootloaderze.
  1. Aby utworzyć i flashować obiekt blob drzewa urządzeń:

    1a. Użyj kompilatora drzewa urządzeń ( dtc >), aby skompilować źródło drzewa urządzeń ( .dts ) do obiektu blob drzewa urządzeń ( .dtb ). Obiekt blob drzewa urządzeń jest sformatowany jako spłaszczone drzewo urządzeń. 1b. Wgraj plik .dtb do lokalizacji dostępnej w czasie wykonywania programu ładującego (szczegóły poniżej).

  2. Aby dokonać partycji, określ dostępną i zaufaną lokalizację w pamięci flash programu ładującego, w której chcesz umieścić .dtb . Przykładowe lokalizacje:

    Partycja rozruchowa
    Rysunek 2. Umieść .dtb na partycji rozruchowej, dołączając go do image.gz i przekazując jako „ kernel ” do mkbootimg .
    Unikalna partycja
    Rysunek 3. Umieść plik .dtb na unikalnej partycji (np. partycji dtb ).
  3. Aby załadować obiekt blob drzewa urządzeń i uruchomić jądro:

    • Załaduj .dtb z pamięci do pamięci.
    • Uruchom jądro używając adresu pamięci załadowanego ID.

Co dalej?

Na tej stronie szczegółowo opisano typowy przepływ pracy programu ładującego przy ładowaniu identyfikatora i przedstawiono listę typowych terminów dotyczących identyfikatora. Inne strony w tej sekcji opisują, jak zaimplementować obsługę bootloadera , jak skompilować , zweryfikować i zoptymalizować DTO oraz jak używać wielu DT . Możesz także uzyskać szczegółowe informacje na temat składni DTO i wymaganego formatowania partycji DTO/DTBO .