Differences between revisions 1 and 3 (spanning 2 versions)
Revision 1 as of 2006-12-22 17:13:56
Size: 1991
Editor: liche
Comment:
Revision 3 as of 2007-01-12 00:39:18
Size: 4392
Editor: pptp3-104
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Utilisation minimaliste et cahotique de la maquette.
Line 3: Line 2:
Connecter la maquette par liaison serie avec le programme "minicom"
La configuration doit être:
= Utilisation normale d'une maquette =

Il y a deux moyens de communiquer avec une maquette : par le réseau ou par port série (RS232).

=== Port série ===
C'est le port utilisé par défaut :
 * par le bootloader, lors du boot de la carte
 * par Linux, qui y sort la console et un shell root

Côté PC, on utilisera un terminal sachant piloter les ports série :
 * sous Linux : {{{minicom}}} ou {{{cu}}}
 * sous Windows : {{{Teraterm Pro}}}

Par défaut le port série de la maquette est configuré en 115200 baud, 8 bits, pas de parité, 1 bit de stop, pas de contrôle de flux (autrement dit {{{115200 8N1 No}}} ).

Avec minicom, on pourra utiliser les réglages suivants :
Line 14: Line 27:
Connecter la maquette sur éthernet. === Port Ethernet ===
Line 16: Line 29:
Configurer le réseau sur la maquette :
{{{
# ifconfig eth0 137.194.66.1 netmask 255.255.252.0
}}}
/!\ Une seule addresse est disponible donc pour le moment une seule maquette peut utiliser cette configuration...
Le fonctionnement de l'Ethernet est différent selon qu'on est sous Linux ou dans le bootloader.

==== Dans le bootloader ====
Par défaut, le bootloader prend l'adresse IP {{{192.168.0.30}}}. Il est possible d'en choisir une autre au boot, par la commande {{{ipcfg}}}. Pour sauver cette adresse de façon permanente, on utilisera la commande {{{senv}}}.

==== Sous Linux ====
Lors du boot de Linux, l'adresse IP du bootloader est ignorée. Le noyau Linux demande une nouvelle adresse IP au serveur DHCP. Si le serveur met trop de temps à répondre, il en prend une par défaut, la même que celle que le serveur DHCP aurait normalement dû lui attribuer.

L'adresse IP obtenue par la carte (soit par DHCP, soit de façon autonome) est de type {{{137.194.66.xxx}}}. Le {{{xxx}}} dépend de l'adresse MAC de la carte et correspond au numéro de la carte (cf. autocollant sur le connecteur MMC).

Les cartes ne disposant pas d'EEPROM pour stocker leur adresse MAC, c'est le bootloader qui donne l'adresse MAC au noyau Linux (sur la ligne de commande du noyau) par le paramètre {{{mac}}}.
Line 23: Line 42:
== Transfert d'une application sur la carte ==

On peut transférer une application par le port série au moyen de la commande {{{lrz}}} :
 * taper {{{lrz}}} sur la carte,
 * puis utiliser les menus de minicom pour envoyer le fichier par protocole ZMODEM.

Si on dispose du réseau, il vaut mieux passer par lui, c'est beaucoup plus rapide ! Pour cela :
 * on peut monter son compte SAMBA par la commande {{{smbmount //serveur/partage /mnt -ousername=BLABLABLA}}}. Par exemple, pour utiliser le SAMBA de COMELEC : {{{smbmount //yggdrasil/polti /mnt -ousername=polti}}}.
 * on peut utiliser {{{wget}}} pour récupérer un fichier disponible sur une page web : {{{wget http://perso.enst.fr/~polti/mon_fichier.tgz}}}
 * on peut utiliser un client ftp : {{{ftp ftp.enst.fr}}}
 * enfin on peut aussi utiliser {{{nc}}}.

Lors d'un transfert par {{{ftp}}}, {{{wget}}} ou {{{nc}}}, penser à rendre l'application exécutable : {{{chmod a+x fichier}}}

== Compilation et débug ==

Utilisation normale d'une maquette

Il y a deux moyens de communiquer avec une maquette : par le réseau ou par port série (RS232).

Port série

C'est le port utilisé par défaut :

  • par le bootloader, lors du boot de la carte
  • par Linux, qui y sort la console et un shell root

Côté PC, on utilisera un terminal sachant piloter les ports série :

  • sous Linux : minicom ou cu

  • sous Windows : Teraterm Pro

Par défaut le port série de la maquette est configuré en 115200 baud, 8 bits, pas de parité, 1 bit de stop, pas de contrôle de flux (autrement dit 115200 8N1 No ).

Avec minicom, on pourra utiliser les réglages suivants : {{{# Machine-generated file - use "minicom -s" to change parameters. pu port /dev/ttyS0 pu baudrate 115200 pu bits 8 pu parity N pu stopbits 1 pu rtscts No }}}

Port Ethernet

Le fonctionnement de l'Ethernet est différent selon qu'on est sous Linux ou dans le bootloader.

Dans le bootloader

Par défaut, le bootloader prend l'adresse IP 192.168.0.30. Il est possible d'en choisir une autre au boot, par la commande ipcfg. Pour sauver cette adresse de façon permanente, on utilisera la commande senv.

Sous Linux

Lors du boot de Linux, l'adresse IP du bootloader est ignorée. Le noyau Linux demande une nouvelle adresse IP au serveur DHCP. Si le serveur met trop de temps à répondre, il en prend une par défaut, la même que celle que le serveur DHCP aurait normalement dû lui attribuer.

L'adresse IP obtenue par la carte (soit par DHCP, soit de façon autonome) est de type 137.194.66.xxx. Le xxx dépend de l'adresse MAC de la carte et correspond au numéro de la carte (cf. autocollant sur le connecteur MMC).

Les cartes ne disposant pas d'EEPROM pour stocker leur adresse MAC, c'est le bootloader qui donne l'adresse MAC au noyau Linux (sur la ligne de commande du noyau) par le paramètre mac.

Transfert d'une application sur la carte

On peut transférer une application par le port série au moyen de la commande lrz :

  • taper lrz sur la carte,

  • puis utiliser les menus de minicom pour envoyer le fichier par protocole ZMODEM.

Si on dispose du réseau, il vaut mieux passer par lui, c'est beaucoup plus rapide ! Pour cela :

  • on peut monter son compte SAMBA par la commande smbmount //serveur/partage /mnt -ousername=BLABLABLA. Par exemple, pour utiliser le SAMBA de COMELEC : smbmount //yggdrasil/polti /mnt -ousername=polti.

  • on peut utiliser wget pour récupérer un fichier disponible sur une page web : wget http://perso.enst.fr/~polti/mon_fichier.tgz

  • on peut utiliser un client ftp : ftp ftp.enst.fr

  • enfin on peut aussi utiliser nc.

Lors d'un transfert par ftp, wget ou nc, penser à rendre l'application exécutable : chmod a+x fichier

Compilation et débug

Télécharger une version "fonctionnelle" de gdbserver sur la maquette.

# cd /usr
# mkdir mybin
# cd mybin
# tftp 137.194.64.58
tftp> get arm/gdbserver
tftp> exit
# chmod +x gdbserver

Compilation d'un source en C sur le PC

PC$ arm-elf-gcc -Wall -g  -Wl,-elf2flt -Os -o hello hello.c -lc

Cela crée l'executable "hello" pour la maquette et la version "hello.gdb" pour le debug

Transfert de l'executable depuis le PC sur le serveur tftp de vega

PC$ tftp vega.enst.fr
tftp> put up/hello
tftp> exit

Récupération de l'executable par la maquette

# tftp 137.194.64.58
tftp> get up/hello
tftp> exit
# chmod +x hello

Lancement de gdbserver sur la maquette (il faut récupérer l'adresse ip du PC)

# /usr/mybin/gdbserver <mon-adresse-ip-de-mon-pc>:9999 hello

Lancement du debugger sur le PC

PC$ arm_elf_insight

Ensuite configurer arm_elf_insight pour

  • se connecter en remote IP sur 137.194.66.1, port 9999
  • charger l'éxécutable hello.gdb (image ELF avec les symboles de debuggage)

Et c'est parti. Atentiongdbserver sort à chaque fois que le programme débuggé est fini, il ne faut pas oubliez de mettre des breakpoint par défaut au début de main et à exit. Il faut toujours conserver les deux fenêtres pour pouvoir relancer gdbserver

ComElec: GroupeSen/EnSeignement/CycleOptionnelunifié/Elec240Archi/MaquetteArm (last edited 2007-02-20 12:37:06 by elfe)