home icon contact icon rss icon last FM icon facebook icon LinkedIn icon Delicious icon twitter icon

Micro SD et Linux embarqué

A l'INSIA, les élèves de troisième année de la section TRSE participent au concours eurobot. Vous pourrez trouver plus d'information sur le site du Projet ARES, page détaillant le parcours du projet au sein de l'INSIA.

Pour construire leur robot, l'équipe ARES a décidé d'utiliser une carte Armadeus APF9328. C'est une carte équipée d'un processeur ARM9 à 200MHz, de SDRAM, de FLASH, d'un port Ethernet 10/100Mbits et d'un FPGA. La carte est livrée avec U-Boot et Linux 2.6.1x préprogrammés.

Seulement, pour suivre le dévellopement de leur application embarquée, l'équipe souhaiterais pouvoir journaliser l'activité du programme. Le fichier résultant étant de très grosse taille, il faut pouvoir le stocker ailleurs que sur la carte Armadeus.

Deux solutions existent :

  • Syslog, journaliser à travers le réseau
  • utiliser une carte Micro SD et y stocker les fichiers de journalisation

Parce que le robot n'est pas toujours connecté à un réseau, la deuxième solution est choisie.

Et c'est là que j'intervient. Suite à quelques problèmes, Dawi m'a demandé d'ajouter le support de la micro SD dans le noyau linux présent sur la carte Armadeus et de développer la classe de journalisation.

J'ai donc lu quelques documentations sur le sujet (Carte Multimédia, Lunix sur l'APF, les MMC, ...), j'ai téléchargé les sources des applications Armadeus (avec le noyau linux : projet sourceforge).

Et sur la page concernant l'installation du module MMC, je lis :

Installation (obsolete now because driver is included in default Armadeus kernel)

Oki, sauf que là non. Je ne sais pas ce qui a été fait avant moi, mais le noyau n'accepte pas la carte SD, et aucun module mmc n'est présent. Je vais donc voir à la main.

# mount -t vfat -o sync /dev/mmcblk0p1 /mnt/mmc 
mount: Mounting /dev/mmcblk0p1 on /mnt/mmc failed: No such device

A oui. Etrange. Je vais charger les modules dans le noyau moi même, alors... Après un coup d'aptitude pour télécharger tout les paquets requis pour la compilation, j'ai donc fait un make menuconfig && make.

Pour ajouter la gestion des carte multimedia, je lance ensuite un make linux-menuconfig && make linux, en ajoutant le support en temps que module des driver mmc. La compilation se passe bien, et j'optient correctement mes trois modules : mmc_core.ko, imxmmc.ko et mmc_block.ko. Je les télécharge sur la carte APF, et j'essaye de les charger dans le noyau à coup de modprobe. Et il me dit qu'il ne trouve pas les modules. Curieux, ils sont pourtant bien dans /lib/module/2.6.23/ (version du noyau garantie par un uname -r). J'arrive bien à charger et décharger d'autres module présents au même endroit...

Ok, si ça ne fonctionne pas, j'essaye la méthode fichier de configuration. Je change le /etc/modprobe.conf, et recharge tout les modules. Encore une fois rien n'y fait. Je rebémare la carte et j'observe les messages système via un dmesg. Et là miracle : imx-mmc imx-mmc.0: card inserted. Après quelques essai en enlevant et remettant la carte SD, je vois que le système prend en compte et detecte qu'il y a des choses qui se passent. Seulement :

# mount -t vfat -o sync /dev/mmcblk0p1 /mnt/mmc 
mount: Mounting /dev/mmcblk0p1 on /mnt/mmc failed: No such device

Raté. Ca ne fonctionne toujours pas. Je commence à soupçonner la carte de ne pas être compatible, puisque ce monsieur à le même problème et on lui a conseillé de changer de carte...

Je verais ça demain, je n'ai pas de carte SD sous la main.

Artemys dit

le Dimanche 01 juin 2008 à 20h08

Passe faire un tour sur notre canal IRC: http://www.armadeus.com/wiki/index.php?title=Help:Contents