Revision 6 as of 2007-01-12 01:01:45

Clear message

TableOfContents(3)

Utilisation normale d'une maquette

Communication avec la carte

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é :

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

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 :

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

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

Compilation et débug

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 sur la maquette

Par le moyen de votre choix (cf. ci-dessus)...

Lancement de {{{gdbserver}}} sur la maquette

# gdbserver pc:9999 hello

Lancement du debuggueur sur le PC

Si la carte a pour nom arm7-15

PC$ arm_elf_gdb hello.gdb
> target remote arm7-15:9999

Si on n'a pas son nom, mais son adresse IP :

PC$ arm_elf_gdb hello.gdb
> target remote 137.194.66.12:9999

Et c'est parti.

Atention :

Utilisation avancée

Le noyau Linux est corrompu

On a effacé un fichier critique, la carte ne boote plus. Mais on ne veut pas la reflahser car il y a des fichiers dessus qu'on ne veut pas perdre... Le système de fichier normale est stocké en flash NAND. Il reste un système de fichier de sauvegarde en flash NOR. Boot sur le système de fichier de sauvegarde : à l'invite du BIOS, modifier la ligne de commande du noyau Linux {{{> setbp root=/dev/rom0 console=ttyS0,115200 devfs=mount mrun }}} Le noyau démarre, on obtient un shell. A partir de là, on peut monter le système de fichier corrompu : {{{mount -t yaffs /dev/mtdblock0 /mnt }}} et remettre en place tous les fichiers nécessaires...

Reflashage d'une carte

Il faut disposer de deux fichiers : une image du noyau Linux, et une image du système de fichiers. Ils sont disponibles en attachement à cette page.