Bonjour,
Je suis en train de développer un programme pour un système embarqué et ce n'est pas un Raspberry : mais vu que c'est une carte à base d'un micro Arm avec un linux, je pose ma question ici (ça me semble la meilleure section).
J'ai tout le code source pour compiler U-BOOT+KERNEL+APPLICATION d'une carte d'évaluation.
=> Jusque là, aucun soucis : j'arrive à générer le binaire et à l'injecter dans la carte d’évaluation : tout fonctionne correctement.
Maintenant, je cherche à adapter le code source pour qu'il puisse tourner sur une carte custom : elle est composée du même arm mais avec des périphériques externes un peu différents, c'est pourquoi il faut que je modifie le Device Tree en conséquence.
Actuellement, U-BOOT fonctionne et les modifications du fichier .dtsi sont bien prises en compte.
Par contre, le soucis est que lorsque le kernel+application se lancent, le device tree chargé est celui de la carte d’évaluation.
=> J'en déduis donc qu'U-BOOT n'utilise pas le même fichier .dtb que le kernel Linux.
D'après ce que j'ai compris, lorsque je cross-compile mon code pour générer la BSP, ça me génère dans un répertoire situé dans /opt : le kernel linux (linux-kernel.bin), le système de fichiers (rootfs.ext4) et le device tree (board_xxxx.dtb).
=> ce que je remarque : dans le fichier .dtb, je retrouve les noms des périphériques de ma carte custom (mais pas dans les autres fichiers).
Lorsque je compile l'application finale (ça me génère un fichier .gz contenant un fichier .ext4), seul le fichier linux-kernel.bin semble être utilisé (car pas d'erreur de compilation si je renomme les autres fichiers).
=> lorsque j'ouvre ce fichier avec Ext2eploxe (logiciel permettant de lire les .ext4), le dossier /proc est vide alors que lorsque le kernel linux est en fonctionnement, il contient le device tree... donc a partir de quel fichier le kernel linux crée/modifie ce répertoire durant l'initialisation ?
La question que je me pose donc est de savoir où est le fichier .dtb qui est utilisé pour l'application : il est intégré dans linux-kernel.bin ? (j'ai l'impression que non, car je ne retrouve pas les noms des périphérique à l'intérieur... à moins qu'ils soient encryptés ?)
Le fichier .dtb est enregistré où exactement dans l'arborescence linux ?... car si je fais sur ma carte custom un "find / -name *.dtb", je n'ai aucun résultat.
Merci d'avance,
Partager