Pourquoi ne générez-vous pas de nouvelles dtb ?
DTB (Device tree blob/binary), est une base de données matérielle qui représente les composants matériels de la carte.
U-boot transmet la structure d'informations de la carte au noyau, qui est dérivée du fichier d'en-tête dans U-Boot.
DTB est compilé par le compilateur spécial qui produit le binaire sous la forme appropriée pour que U-Boot et Linux puissent le comprendre.
DTC (Device Tree Compiler) il traduit le fichier d'arborescence de périphériques en binaire lisible par machine que le noyau U-Boot et Linux peut comprendre.
La manière simple d'utiliser DTC.
$ dtc -O dtb -o arm_board.dtb -b 0 arm_board.dts
pour obtenir l'arborescence des appareils sous forme de texte à partir de la dtb.
dtc -I dtb -O dts arm_board.dtb
board.dts est un fichier binaire créé par la commande ci-dessus. -O
spécifie le format de sortie. -o
flag est le fichier de sortie. -b 0
spécifie le processeur de démarrage physique.
Alors faites
$ make ARCH=arm arm_board.dtb
Une autre approche pourrait être simplement d'utiliser make dtbs
cela appellera dtc. arch/arm/boot/dts/Makefile
répertorie les DTB qui doivent être générés au moment de la construction. C'est une autre façon de le compiler. make mettra cela à cet emplacement de l'arborescence du noyau /arch/arm/boot/dts
Jetez un œil à cet arbre d'appareils pour les nuls
Je veux juste mettre à jour ceci avec 2 ans d'expérience supplémentaire sur le sujet.
Les fichiers DTS du référentiel Linux sont un mélange de DTS et Directives du préprocesseur C (#include, #define, etc.). Ainsi, lorsque le DTB d'origine est compilé, le préprocesseur se lie aux fichiers référencés pour créer un fichier DTS pur. dtc
convertit le fichier DTS unique en un fichier DTB.
Ainsi, si vous souhaitez modifier un fichier DTS du noyau et le compiler, vous avez deux options :
- Exécutez simplement
make dtbs
qui gère automatiquement tout cela - Exécutez manuellement le préprocesseur (
cpp -nostdinc -I <include dir> -undef -x assembler-with-cpp ...
) puis compilez la sortie avecdtc
.