Implementacja DTO obejmuje dzielenie drzewa urządzeń, budowanie, partycjonowanie i uruchamianie. Po utworzeniu działającej implementacji należy również zachować zgodność między dwoma identyfikatorami i określić strategię zapewnienia bezpieczeństwa każdej partycji identyfikatorów.
Dzielenie ID
Zacznij od podzielenia drzewa urządzeń na dwie (2) części:
- Główny ID . Część tylko SoC i domyślne konfiguracje dostarczone przez dostawcę SoC.
- Nakładka ID . Konfiguracje specyficzne dla urządzenia, dostarczone przez ODM/OEM.
Po podzieleniu drzew urządzeń należy zapewnić zgodność między głównym ID a nałożonym ID, aby połączenie głównego ID i nakładki ID dało kompletny ID urządzenia. Aby uzyskać szczegółowe informacje na temat formatu i reguł DTO, zobacz Składnia DTO . Aby uzyskać szczegółowe informacje na temat wielu drzew urządzeń, zobacz Wiele ID .
Budowanie głównych i nakładkowych DT
Aby zbudować główny ID:
- Skompiluj główny DT
.dts
do pliku.dtb
. - Zamień plik
.dtb
na partycję dostępną w środowisku uruchomieniowym programu rozruchowego (szczegóły poniżej).
Aby zbudować ID nakładki:
- Skompiluj nakładkę DT
.dts
do pliku.dtbo
. Chociaż ten format pliku jest taki sam jak plik.dtb
sformatowany jako spłaszczone drzewo urządzeń, inne rozszerzenie pliku odróżnia go od głównego DT. - Zamień plik
.dtbo
na partycję dostępną w środowisku uruchomieniowym programu rozruchowego (jak opisano poniżej).
Aby uzyskać szczegółowe informacje na temat kompilowania z DTC i weryfikowania wyników DTO na hoście, zobacz Kompilowanie i weryfikacja .
Identyfikatory partycjonowania
Określ zaufaną lokalizację dostępną dla środowiska uruchomieniowego programu rozruchowego w pamięci flash, aby umieścić .dtb
i .dtbo
.
Przykładowe lokalizacje dla głównego ID:
- Część partycji rozruchowej, dołączona do jądra (
image.gz
). - Oddzielne obiekty blob DT (
.dtb
) na dedykowanej partycji (dtb
).
Przykładowe lokalizacje dla nakładki ID:
Unikalna partycja |
---|

.dtbo
na unikalnej partycji, np. partycji dtbo
. Partycja ODM |
---|

.dtbo
na partycji odm
(zrób to tylko wtedy, gdy twój bootloader ma możliwość ładowania danych z systemu plików partycji odm
).Uwaga: Rozmiar partycji nakładki DT zależy od urządzenia i ilości zmian potrzebnych na głównym obiekcie blob DT. Zazwyczaj 8 MB jest więcej niż wystarczające i pozwala w razie potrzeby zwiększyć miejsce w przyszłości.
W przypadku urządzeń obsługujących aktualizacje bezproblemowe (A/B) , A/B główne partycje DT i nakładkowe partycje DT:
Przykład 1 |
---|

Przykład 2 |
---|

Działa w bootloaderze
Biegać:

- Załaduj
.dtb
z magazynu do pamięci. - Załaduj
.dtbo
z magazynu do pamięci. -
.dtb
.dtb na.dtbo
, aby był połączonym ID. - Uruchom jądro podając adres pamięci scalonego identyfikatora.
Utrzymanie kompatybilności
Główny DTB (od dostawcy SoC) jest traktowany jako powierzchnia API dla DTBO. Po rozdzieleniu drzewa urządzeń na część wspólną SoC i część specyficzną dla urządzenia, należy zachować zgodność tych dwóch części w przyszłości, w tym:
- Definicja ID w głównym ID (np. węzły, właściwości, etykiety) . Każda zmiana definicji w głównym ID może wywołać zmiany w nakładce ID. Na przykład, aby poprawić nazwę węzła w głównym ID, zdefiniuj etykietę „alias”, która odwzorowuje oryginalną nazwę węzła (aby uniknąć zmiany nakładki ID).
- Nakładka lokalizacji magazynu DT (np. nazwa partycji, format magazynu) .
Zapewnienie bezpieczeństwa
Bootloader musi zapewnić, że DTB/DTBO jest bezpieczny, niezmodyfikowany i nieuszkodzony. Możesz użyć dowolnego rozwiązania, aby zabezpieczyć DTB/DTBO, na przykład podpis obrazu rozruchowego w VBoot 1.0 lub AVB HASH stopce (VBoot 2.0).
- Jeśli DTB/DTBO znajduje się na unikalnej partycji, możesz dodać tę partycję do łańcucha zaufania AVB. Łańcuch zaufania zaczyna się od chronionego sprzętowo źródła zaufania i przechodzi do programu ładującego, który weryfikuje integralność i autentyczność partycji DTB/DTBO.
- Jeśli DTB/DTBO znajduje się w istniejącej partycji (takiej jak partycja
odm
), partycja ta powinna znajdować się w łańcuchu zaufania AVB. (Partycja DTBO może współdzielić klucz publiczny z partycjąodm
).
Aby uzyskać szczegółowe informacje, zobacz Zweryfikowany rozruch .