Implementacja nakładek drzewa urządzeń obejmuje podział drzewa urządzeń (DT), partycjonowanie i uruchamianie. Po przygotowaniu działającego wdrożenia musisz też i określić strategię zapewnienia każdej partycji funkcji przenoszenia danych.
Podziel przenoszenie danych
Zacznij od podzielenia przenoszenia danych na dwie części:
- Główny przenoszenie danych. Część, która zawiera tylko układ SOC, a także konfiguracje domyślne, udostępniane przez dostawcę układu SOC.
- Nakładka przenoszenia danych. Konfiguracje konkretnych urządzeń dostarczane przez ODM/OEM.
Po podzieleniu przenoszenia danych należy zapewnić zgodność między głównymi z przeniesieniem przenoszenia danych i nakładaniem się przenoszenia danych, tak aby scalenie głównego przenoszenia danych z nałożonym plikiem przenoszenia danych było kompletne. Przenoszenie danych urządzenia. Szczegółowe informacje o formacie i regułach organizacji DTO znajdziesz w tych artykułach: Składnia DTO. Więcej informacji: wielu plików przenoszenia danych, patrz Wiele plików przenoszenia danych.
Tworzenie głównych i nakładanych przenoszenia danych
Aby utworzyć główny plik przenoszenia danych:
- Skompiluj główny plik przenoszenia danych
.dts
do pliku.dtb
. - Umieść plik
.dtb
na partycji dostępnej w czasie działania programu rozruchowego (szczegóły znajdziesz w sekcji [Tabele przenoszenia danych partycji](#partition)).
Aby utworzyć nakładkę przenoszenia danych:
- Skompiluj nakładkę
.dts
w pliku.dtbo
. Choć ten format pliku jest taki sam, jak plik.dtb
sformatowany jako jest spłaszczony, inne rozszerzenie pliku odróżnia go od z głównego obszaru przenoszenia. - Umieść plik
.dtbo
na partycji dostępnej w czasie działania programu rozruchowego (szczegóły znajdziesz w sekcji [Tabele przenoszenia danych partycji](#partition)).
Szczegółowe informacje o kompilowaniu z DTC i weryfikowaniu wyników DTO na hoście znajdziesz w artykule Skompiluj i zweryfikuj dane.
Tablice przenoszenia danych partycji
Określ zaufaną i dostępną w środowisku wykonawczym lokalizację we Flashu
wspomnienie do umieszczenia .dtb
i .dtbo
.
Przykładowe lokalizacje głównego pliku przenoszenia danych:
- Część partycji rozruchu dołączana do jądra (
image.gz
) - Oddzielne obiekty blob DT (
.dtb
) w dedykowanej partycji (dtb
)
Przykładowe lokalizacje nakładki DT:
Rysunek 1. Umieść plik .dtbo na niepowtarzalnej partycji, takiej jak dtbo.
Rysunek 2. Umieść plik .dtbo na partycji Odm (zrób to tylko wtedy, gdy program rozruchowy możliwość wczytywania danych z systemu plików partycji odm).
Uwaga: wartość parametru partycjonowanie nakładki DT zależy od urządzenia i liczby zmian wymaganych głównego bloba DT. Rozmiar 8 MB jest zwykle za duży i pozwala na jeśli zajdzie taka potrzeba.
Na urządzeniach, które obsługują bezproblemowych aktualizacji (A/B), głównych partycji przenoszenia danych i nakładek 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 dla DTO w programie rozruchowym.
- Wczytaj
.dtb
z pamięci. - Wczytaj
.dtbo
z pamięci. - Nałóż nakładkę
.dtb
z atrybutem.dtbo
, aby wyświetlić scalony plik przenoszenia danych. - Uruchom jądro z adresem pamięci scalonego pliku przenoszenia danych.
Zachowaj zgodność
Główny DTB (od dostawcy SoC) jest traktowany jako platforma API dla DTBO. Po dzieląc DT na część wspólną dla układu SOC i część związaną z określonym urządzeniem. musisz zadbać o to, aby w przyszłości te 2 części były zgodne, m.in.:
- Definicja pliku przenoszenia danych w głównym pliku przenoszenia danych. Na przykład węzły, właściwości etykiety. Każda zmiana definicji w głównym pliku przenoszenia danych może spowodować zmiany w nakładce PD. Aby na przykład poprawić nazwę węzła w głównym obszarze przenoszenia danych, zdefiniuj „alias” dodaj etykietę jest mapowana na pierwotną nazwę węzła (aby uniknąć zmiany nakładki DT).
- Lokalizacja sklepu w funkcji przenoszenia danych. Na przykład nazwa partycji, sklep .
Zadbaj o bezpieczeństwo
Program rozruchowy musi się upewnić, że plik DTB lub DTBO jest bezpieczny, niezmodyfikowany i nieuszkodzony. Możesz użyć dowolnego rozwiązania do zabezpieczenia DTB lub DTBO, np. Obraz rozruchowy podpis w VBoot 1.0 lub AVB Stopka HASH (VBoot 2.0).
- Jeśli DTB lub DTBO znajduje się w unikalnej partycji, możesz ją dodać do łańcucha zaufania AVB. Łańcuch zaufania rozpoczyna się od chronionego sprzętowo katalogu głównego zaufania i przechodzi do programu rozruchowego, który weryfikuje integralność i autentyczność. partycji DTB lub DTBO.
- Jeśli DTB lub DTBO znajduje się w istniejącej partycji (np.
odm
partycji), powinna ona znajdować się w łańcuchu zaufania AVB. (partycja DTBO może udostępniać klucz publiczny partycjiodm
).
Szczegółowe informacje znajdziesz w sekcji Zweryfikowano Rozruch.