web-dev-qa-db-fra.com

Qu'est-ce qu'un fichier dtb u-Boot et comment puis-je l'utiliser (BeagleBoard xM)?

J'essaie de créer un Linux personnalisé pour un BeagleBoard xM (Rev. C). Je fais beaucoup de C/C++ mais je suis débutant dans la construction et l’installation de Linux à partir de zéro.

J'ai utilisé le dispositif de construction du projet Yocto ( https://www.yoctoproject.org/ ) qui semblait prometteur - il a construit des fichiers pour le démarrage de u-Boot chargeur, noyau Linux et système de fichiers racine.

Cette page donne des instructions pour configurer la carte micro SD avec les fichiers générés par Yocto. Cependant, les fichiers d’image incluent un fichier ".dtb" qui n’est pas mentionné dans les instructions de configuration.

Ce fichier a-t-il quelque chose à voir avec le matériel de la carte? Divers sites mentionnent le chargement de fichiers DTD (peut-être dans le fichier uEnv.txt?), Mais je n’ai trouvé aucune information détaillée.

J'ai utilisé les instructions ci-dessus pour configurer la partition de démarrage avec MLO et u-boot.img, et je me suis un peu amusé avec le fichier uEnv.txt. J'ai également mis en place une deuxième partition avec le système de fichiers racine.

Je pouvais démarrer et me connecter (via la console du port série), mais cela ressemblait à la plupart du matériel de la carte - par exemple. vidéo et tous les périphériques USB, y compris Ethernet - ne fonctionnaient pas. Cela pourrait-il être dû au fait que je n'utilisais pas le fichier .dtb?

Quelqu'un peut-il expliquer le dtb et comment l'utiliser sur un tableau Beagle? Merci!

12
Jeremy

Répondant à ma propre question, après avoir compris ce que je devais rechercher. Un fichier "dtb" contient un objet blob (ou binaire) de l’arborescence de l’équipement (Belle description ici ). C'est la nouvelle façon de transmettre des informations matérielles sur la carte au noyau Linux.

Il peut être chargé en mémoire et transmis au noyau par u-Boot.

Voici les commandes u-Boot que j'ai utilisées:

setenv bootargs 'console=tty0 console=ttyO2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext4 rw'
fatload mmc 0:1 0x80300000 zImage
fatload mmc 0:1 0x815f0000 beagle-xm.dtb
bootz 0x80300000 - 0x815f0000

zImage étant le noyau et beagle-xm.dtb étant le blob de l'arborescence des périphériques. J'ai automatisé le processus de démarrage en configurant une variable "uenvcmd = ..." dans le fichier uEnv.txt (avec ce qui précède), mais c'est un peu moche et il y a probablement de meilleures façons.

Notez que cela démarre et indique que l’arborescence de périphériques a été chargée correctement. Cependant, je n'ai toujours ni périphérique USB ni vidéo (pour autant que je sache). Cependant, je soupçonne que cela peut être un problème différent.

12
Jeremy

J'utilise Ubuntu 14.04 sur le beaglebone black, ma configuration est peut-être un peu différente, mais voici comment j'ai chargé un dtb personnalisé:

Dans le fichier uEnv.txt, ajoutez une ligne avec: dtb=name-of-desired.dtb

Les emplacements recherchés doivent être tels que spécifiés ici . Pour moi, c'était /boot/dtbs/linux-kernel/ où linux-kernel est le nom de la version chargée.

2
Damian Manda

Notez qu'il existe 2 dtb. La dtb u-boot et la dtb du noyau. Ils sont 2 choses différentes. La carte U-Boot dts/dtb n'est pas toujours utilisée, ni obligatoire, mais vous pouvez utiliser le dtb "u-boot" pour l'incorporer à u-boot ou pour le concaténer.

0
Angelo Dureghello