GNU/Linux >> Tutoriels Linux >  >> Linux

Comment modifier le fichier DTB du noyau

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 :

  1. Exécutez simplement make dtbs qui gère automatiquement tout cela
  2. Exécutez manuellement le préprocesseur (cpp -nostdinc -I <include dir> -undef -x assembler-with-cpp ... ) puis compilez la sortie avec dtc .

Linux
  1. Manière de modifier un fichier sur place ?

  2. Comment rétrograder le noyau sur 12.10 ?

  3. Comment renommer un fichier sous Linux ?

  4. Comment rendre le fichier clairsemé?

  5. Comment grep \n dans le fichier

Comment créer un fichier sous Linux

Comment créer un fichier Tar Gz

Comment décompresser (ouvrir) le fichier Gz

Comment créer un lien symbolique vers un fichier sous Linux

Comment faire écho dans le fichier

Comment fonctionne /proc/* ?