Wdrażanie nakładek drzewa urządzenia (DTO) obejmuje dzielenie drzewa urządzenia (DT), tworzenie, partycjonowanie i uruchamianie. Po wdrożeniu działającego rozwiązania musisz też zachować zgodność między tymi dwoma DT i określić strategię zapewniania bezpieczeństwa każdej partycji DT.
Podziel DT
Zacznij od podzielenia DT na 2 części:
- Główny DT Część tylko z układem SoC i konfiguracje domyślne, dostarczone przez dostawcę układu SoC.
- Nakładka DT Konfiguracje dotyczące konkretnych urządzeń dostarczane przez ODM/OEM.
Po podzieleniu drzew urządzeń musisz zadbać o kompatybilność między głównym drzewem urządzeń a nakładką drzewa urządzeń, aby scalenie głównego drzewa urządzeń i nakładki drzewa urządzeń dało kompletne drzewo urządzeń dla urządzenia. Szczegółowe informacje o formacie i regułach DTO znajdziesz w artykule Składnia DTO. Więcej informacji o wielu DT znajdziesz w artykule Używanie wielu DT.
Tworzenie głównych i nakładkowych DT
Aby utworzyć główny DT:
- Skompiluj główny DT
.dtsdo pliku.dtb. - Wgraj plik
.dtbdo partycji dostępnej w czasie działania programu rozruchowego (szczegóły w sekcji [Partition DTs](#partition)).
Aby utworzyć nakładkę DT:
- Skompiluj nakładkę DT
.dtsdo pliku.dtbo. Ten format pliku jest taki sam jak plik.dtbsformatowany jako spłaszczony DT, ale inne rozszerzenie odróżnia go od głównego DT. - Wgraj plik
.dtbodo partycji dostępnej w czasie działania programu rozruchowego (szczegóły w sekcji [Partition DTs](#partition)).
Szczegółowe informacje o kompilowaniu za pomocą DTC i sprawdzaniu wyników nakładek drzewa urządzeń na hoście znajdziesz w sekcji Kompilowanie i sprawdzanie.
Partycje DT
Określ lokalizację w pamięci flash, do której program rozruchowy ma dostęp w czasie działania i która jest zaufana, aby umieścić w niej .dtb i .dtbo.
Przykładowe lokalizacje głównego DT:
- Część partycji rozruchowej dołączona do jądra (
image.gz) - Oddzielne obiekty DT (
.dtb) w wydzielonej partycji (dtb)
Przykładowe lokalizacje nakładki DT:

Rysunek 1. Umieść plik .dtbo na partycji odm (zrób to tylko wtedy, gdy program rozruchowy może wczytywać dane z systemu plików partycji odm).

Rysunek 2. Umieść plik .dtbo w unikalnej partycji, np. partycji dtbo.
Uwaga: rozmiar partycji DT nakładki zależy od urządzenia i liczby zmian, które należy wprowadzić w głównym pliku binarnym DT. Zwykle 8 MB to więcej niż wystarczająco, a w razie potrzeby w przyszłości można zwiększyć ten limit.
W przypadku urządzeń obsługujących płynne aktualizacje (A/B) przeprowadź test A/B głównych partycji DT i nakładki DT:

Rysunek 3. Partycja DTBO A/B, przykład 1.

Rysunek 4. Partycja DTBO A/B, przykład 2.
Uruchom w programie rozruchowym
Aby uruchomić:

Rysunek 5. Typowa implementacja środowiska wykonawczego nakładek drzewa urządzeń w programie rozruchowym.
- Wczytaj
.dtbz pamięci masowej do pamięci. - Wczytaj
.dtboz pamięci masowej do pamięci. - Nałóż
.dtbna.dtbo, aby uzyskać scalone drzewo urządzeń. - Uruchom jądro, podając adres pamięci scalonego DT.
Zachowanie zgodności
Główny DTB (od dostawcy SoC) jest traktowany jako interfejs API dla DTBO. Po rozdzieleniu DT na część wspólną dla układu SoC i część specyficzną dla urządzenia musisz w przyszłości zachować wzajemną zgodność tych dwóch części, w tym:
- Definicja DT w głównym DT. Na przykład węzły, właściwości, etykiety. Każda zmiana definicji w głównym DT może spowodować zmiany w nakładce DT. Aby na przykład poprawić nazwę węzła w głównym DT, zdefiniuj etykietę „alias”, która jest mapowana na oryginalną nazwę węzła (aby uniknąć zmiany nakładki DT).
- Nakładka z lokalizacją sklepu DT Na przykład nazwa partycji, format sklepu.
Zapewnianie bezpieczeństwa
Program rozruchowy musi zapewniać, że DTB lub DTBO jest bezpieczny, niezmieniony i nieuszkodzony. Do zabezpieczenia DTB lub DTBO możesz użyć dowolnego rozwiązania, np. podpisu obrazu rozruchowego w VBoot 1.0 lub stopki HASH AVB (VBoot 2.0).
- Jeśli DTB lub DTBO znajduje się w unikalnej partycji, możesz dodać tę partycję do łańcucha zaufania AVB. Łańcuch zaufania zaczyna się od chronionego sprzętowo głównego źródła zaufania i prowadzi do programu rozruchowego, który weryfikuje integralność i autentyczność partycji DTB lub DTBO.
- Jeśli DTB lub DTBO znajduje się na istniejącej partycji (np. na partycji
odm), powinna ona być częścią łańcucha zaufania AVB. (Partycja DTBO może udostępniać klucz publiczny partycjiodm).
Więcej informacji znajdziesz w artykule Weryfikacja podczas uruchamiania.