Académique Documents
Professionnel Documents
Culture Documents
TP 0 : Prise en main
Pour la mise en place de CLinux nous avons besoin de deux systmes. Le premier est le systme qui nous sert de poste de travail. Il sagit dun PC sous distribution Linux (Fedora) classique qui sert dhte. Le second est la carte dvaluation sur laquelle nous allons implanter CLinux. Elle est munie dun processeur ColdFire EVB5407C3. Il y a deux connectivits permettant la communication entre ces deux architectures : Une liaison srie standard. Une liaison Ethernet. Les deux postes sont relis un routeur. Ladresse IP du PC est 192.196.4.6, celle de la carte 192.196.4.106 et celle du routeur 192.196.4.0. Lapplication minicom permet de communiquer directement avec la carte en effectuant une lecture/criture sur le port srie ou par la communication Ethernet. Il est possible grce elle de tlcharger un fichier binaire par le rseau Ethernet en utilisant la commande :
dn i image.bin
On peut aussi tlcharger par le rseau Ethernet un fichier S-Record avec la commande:
dn s srec.out -o 20000
Le point dentre des excutables prcdemment charg se trouve en mmoire ladresse 20000. Pour les excuter, il suffit de taper :
go 20000
Le format S-Record de Motorola est un encodage en caractres ASCII dun fichier binaire excutable par un processeur compatible.
TP 1 : Prise en main
Nous allons maintenant tlcharger et utiliser le systme CLinux sur la carte dvaluation. Pour cela on utilise la commande :
dn image0.bin
Elle copie le binaire du noyau CLinux dans la mmoire par lintermdiaire de la liaison Ethernet. On lance ensuite le programme avec :
go 20000
On a alors accs une console lmentaire sous CLinux. La puissance de la cible est de 149,4 BogoMIPS. La taille du noyau (kernel code) est de 416 ko. Nous sommes connects sous lutilisateur superuser. Avec la commande ps on peut observer les diffrents processus qui tournent : - Le serveur web boa - Le daemon inetd - Le serveur hcp dhcpcd - sh - nfsiod - kflushd - init La commande free nous permet de savoir tout moment la taille de lespace mmoire libre sur la cible. Nous allons maintenant configurer le rseau pour pouvoir communiquer depuis la machine cible avec la machine hte. On commence par dfinir ladresse IP, le netmask ainsi que ladresse de broadcast :
ifconfig eth0 192.168.4.106 netmask 255.255.255.0 broadcast 192.168.4.255
On vrifie ensuite que la connexion entre la machine cible et la machine hte est effective en effectuant un ping :
ping 192.168.4.6
Ce test tant russi, nous allons maintenant tester le serveur WWW embarqu sur la cible. Pour cela on lance un navigateur web sur le PC hte et on se rend ladresse http://192.148.4.106. Ce lien fonctionne et lon a accs la page hberge sur le serveur WWW de la carte. Par contre les scripts CGI ne sont pas disponibles. Le package permettant la mise en place du serveur WWW est le package boa.
On choisit alors notre noyau (noyau 2.4.x) ainsi que la carte cible (Motorola M5407C3). On ajoute aussi le package dungeon du menu Games (jeu daventure en mode texte) pour quil soit accessible sur notre carte cible. On sauvegarde les dpendances :
make dep
Puis on compile :
make
Le fichier image.bin ainsi gnr se trouve dans le rpertoire images. On gnre le fichier SRecord du noyau laide de la commande :
m68k -elf -objcopy --input -target=binary --output -target=srec images/image.bin images/image.srec
On envoie maintenant, par le port srie, le fichier ainsi crer sur la cible en revenant sur minicom et en faisant Ctrl+A, Z puis S et en choisissant le fichier image.srec. Cette opration prend un temps consquent, dmontrant lintrt dune connexion Ethernet, nettement plus rapide. On vrifie maintenant que le package dungeon est bien install en le lanant grce la commande dungeon. Il nous est alors possible de jouer au jeu On a ainsi pu voir quil est trs facile de configurer son noyau pour y inclure les applications que lon veut afin dobtenir les fonctionnalits dsires et de supprimer les packages inutiles afin de rduire lempreinte mmoire du noyau.
Il pourrait savrer intressant de mettre en uvre le montage NFS sur notre cible. Le montage NFS permet daccder aux dossiers dune machine distante comme sils sagissaient de rpertoires locaux. Pour cela il nous faut de nouveau gnrer notre noyau en incluant ce dernier. On doit donc de nouveau choisir notre configuration. On choisit maintenant le noyau 2.0.x et lon slectionne mount/umount dans uCLinux application Configuration puis lon gnre le noyau. On tlcharge et on excute le noyau sur la cible. On configure ensuite le rseau (cf. TP1) puis on effectue le montage NFS en utilisant comme rpertoire de montage /mnt :
mount -t nfs 192.168.4.6:/home/uclinux /mnt
Il nous est dsormais possible daccder aux fichiers prsents dans le dossier /home/uclinux de la machine hte depuis la machine cible comme sil sagissait de fichiers locaux. Cela nous permet de profiter de la capacit de stockage et de la puissance de la machine hte tout en restant dans notre environnement cible. Il est donc par exemple possible de crer et de compiler un programme depuis notre machine hte pour notre machine cible (compilation croise) dans le rpertoire /home/uclinux afin que celui-ci soit excutable directement par la machine cible. La compilation sera plus rapide (puisque la machine hte est plus puissante) et il ny aura pas transfrer lexcutable ou les sources chaque nouvelle version pour tester.
Puis on configure le noyau. On valide lajout de lapplication hello (ainsi que le NFS). Lors de la compilation, on peut voir que le fichier hello.c est lui aussi bien compil. Puis on envoie le noyau sur la cible par le rseau. Pour tester que lapplication fonctionne bien, on peut dabord taper la commande hello. Le message Hello World ! saffiche bien. Il est aussi possible de tester lapplication en copiant lexcutable hello du dossier uCLinuxdist/user/ dans le dossier /home/uclinux. On se place alors dans le dossier /mnt de la cible o lon a accs lexcutable hello (grce au NFS) puis on lexcute avec la commande ./hello. On constate ici aussi que cela fonctionne. Nous avons donc pu voir dans ce TP deux techniques diffrentes pour excuter des programmes sur notre cible. La premire, en lincluant dans luserland, permet davoir accs facilement notre application ds le tlchargement du noyau. Elle est donc trs utile dans le cas dapplications finies que lon souhaite voir implantes sur notre cible par dfaut avec le noyau. La deuxime faon, par le NFS, est trs utile pour le debuggage. En effet, on peut compiler le fichier depuis le PC hte et profiter ainsi de sa puissance (cross-compilation) et on vite aussi de transfrer les fichiers de lhte vers la cible. On gagne donc beaucoup en vitesse.
TP 5 : Dveloppement dune application serveur embarque sous CLinux et dune application cliente Linux pour le contrle de la carte cible
Ce TP nous propose dajouter lapplication myserver luserland comme nous venons de le faire dans le TP prcdent (rcupration des sources, modification des fichiers uClinux-dist/user/Makefile, uClinux-dist/config/config.in puis configuration et compilation du noyau). On charge ensuite notre noyau sur la cible et on configure le rseau (cf. TP 1). Puis on lance notre application sur le numro de port 2000 :
myserver 2000
Puis depuis le PC hte, on compile le fichier source du client myclient0.c puis on lexcute en lui prcisant ladresse de notre carte cible ainsi que le port 2000 :
./a.out uc6 2000
Il est alors possible de piloter les leds de la carte cible en envoyant des requtes laide du client TCP. Cette mthode de connectivit IP est trs pratique car trs simple mettre en place. Cependant elle nest pas trs sre car il suffit de connatre ladresse de la cible ainsi que le port sur lequel est lanc le serveur pour y avoir accs.
Puis, pour envoyer un mail depuis la cible vers la machine hte il nous suffit de taper :
mail from root@localhost to uclinux@kiwi6
Pour rcuprer ce mail, il faut, sur le PC hte, taper mail. On constate alors que lutilisateur uclinux a bien reu un nouveau mail provenant de la carte cible. Cette mthode de connectivit semble plus sre que la prcdente car le destinataire est cibl par son adresse IP. Cependant, il est toujours possible dintercepter ce mail en utilisant ladresse IP de la cible. De plus ces fonctionnalits sont limites. Par contre, le protocole SMTP tant trs utilis, elle savre trs pratique pour effectuer un retour dinformations depuis la carte cible
Puis, pour contrler les leds, depuis le PC hte, il faut se connecter au serveur web en utilisant un navigateur web, dans notre cas, nous utiliserons Netscape. Puis on se connecte ladresse de notre carte sur le port 80 (port utilis par le serveur web). Le script CGI se trouve dans le
rpertoire cgi-bin et se nomme enseirb. On lui passe les arguments en suivant le nom du script dun ? puis de largument (1 ou 0 pour ce script). Ainsi, pour allumer la led, il faut donc taper dans la barre dadresse du navigateur :
http://192.168.4.106:80/cgi-bin/enseirb?1
Cette mthode de connectivit est trs puissante car elle permet de contrler trs facilement la carte cible distance. Cependant, il est impossible de savoir si la carte ragit correctement nos demandes. De plus, cette mthode nest pas forcment trs scurise. Dans notre exemple, nimporte qui connaissant ladresse de la cible et le port utilis peut prendre le contrle des leds.
En utilisant loutil netstat, on observe que cet agent se trouve sur le port dcoute 161. Il est possible deffectuer diffrents contrles pour connatre ltat de la carte. La commande suivante nous permet parcourir la MIB :
snmptranslate -Tp
On peut aussi connatre ltat des 8 leds qui se trouvent sur la carte en tapant cette commande :
snmpset v 1 c tst localhost enseirb.leds 0.0
Lagent SNMP permet donc, non seulement de donner des instructions la carte cible distance, mais aussi de rcuprer des informations sur son tat. Cest donc un mode de connectivit particulirement adapt lembarqu.
Puis, on modifie le fichier uClinux-dist/user/ucdsnmp/mysnmpd.conf pour quil corresponde aux adresses IP de la cible et de lhte. Une fois cela fait, on compile et on tlcharge le noyau sur la cible. Il est alors possible, de la mme faon que dans le TP 9, de commander les leds et de connatre leur tat depuis le PC hte. On se rend donc bien compte de lintrt de la connectivit IP par SNMP qui permet un contrle efficace distance dun systme embarqu.