J'essaie de construire un Linux personnalisé pour un BeagleBoard xM (Rev. C). Je fais beaucoup de C / C ++ mais je suis un débutant dans la construction et l'installation de Linux à partir de zéro.
J'ai utilisé l'appliance de construction Yocto Project ( https://www.yoctoproject.org/ ) qui semblait prometteuse - il a construit des fichiers pour le chargeur de démarrage u-Boot, le noyau Linux et le 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 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 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 j'ai un peu dérangé avec le uEnv.txt. J'ai également mis en place une deuxième partition avec le système de fichiers racine.
J'ai pu démarrer et me connecter (via la console du port série), mais il semblait que la plupart du matériel de la carte - par exemple, la vidéo et tous les périphériques USB, y compris Ethernet - ne fonctionnaient pas. Serait-ce parce que je n'utilisais pas le fichier .dtb?
Quelqu'un peut-il expliquer la dtb et comment l'utiliser sur une planche beagle? Merci!
la source
Réponses:
Répondre à ma propre question, après avoir trouvé quoi rechercher. Un fichier "dtb" contient un Device Tree Blob (ou Binaire) (belle description ici ). C'est la nouvelle (er) 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:
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 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 qu'il a chargé l'arborescence des périphériques OK. 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.
la source
J'utilise Ubuntu 14.04 sur le beaglebone noir, donc ma configuration peut être un peu différente, mais voici comment j'ai chargé une dtb personnalisée:
Dans 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'est
/boot/dtbs/linux-kernel/
là que linux-kernel est le nom de la version chargée.la source
Notez qu'il y a 2 dtb. La dtb u-boot et la dtb du noyau. Ce sont 2 choses différentes. La carte U-boot dts / dtb n'est pas toujours utilisée, pas obligatoire, btw dans u-boot vous pouvez utiliser la dtb "u-boot" en l'intégrant dans u-boot ou en la concaténant en u-boot.
la source