Proč nevygenerujete nové dtb?
DTB (Device tree blob/binary) je hardwarová databáze, která představuje hardwarové komponenty desky.
U-boot předá jádru informační strukturu desky, která je odvozena z hlavičkového souboru v U-Bootu.
DTB je kompilován speciálním kompilátorem, který vytváří binární soubor ve správné formě, aby mu U-Boot a Linux porozuměli.
DTC (Device Tree Compiler) překládá soubor stromu zařízení do strojově čitelného binárního souboru, kterému U-Boot a jádro Linuxu rozumí.
Přímý způsob použití DTC.
$ dtc -O dtb -o arm_board.dtb -b 0 arm_board.dts
získat strom zařízení v textu z dtb.
dtc -I dtb -O dts arm_board.dtb
board.dts je binárně vytvořen výše uvedeným příkazem. -O
určuje výstupní formát. -o
flag je výstupní soubor. -b 0
určuje fyzický spouštěcí CPU.
Pak udělejte
$ make ARCH=arm arm_board.dtb
Dalším přístupem může být použití make dtbs
toto zavolá dtc. arch/arm/boot/dts/Makefile
uvádí, které DTB by měly být generovány v době sestavení. Další způsob, jak jej zkompilovat. make to vloží do tohoto umístění stromu jádra /arch/arm/boot/dts
Podívejte se na tento strom zařízení pro figuríny
Chci to aktualizovat o 2 roky více zkušeností na toto téma.
Soubory DTS v úložišti Linuxu jsou směsí DTS a Direktivy preprocesoru C (#include, #define atd.). Když je tedy zkompilován původní DTB, preprocesor se spojí s odkazovanými soubory a vytvoří čistý soubor DTS. dtc
převede jeden soubor DTS na soubor DTB.
Pokud tedy chcete upravit soubor DTS jádra a zkompilovat jej, máte dvě možnosti:
- Stačí spustit
make dtbs
který toto vše automaticky zvládá - Ručně spusťte preprocesor (
cpp -nostdinc -I <include dir> -undef -x assembler-with-cpp ...
) a poté zkompilujte výstup sdtc
.