Size: 7983
Comment: Encore
|
Size: 7976
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
Line 6: | Line 5: |
= Utilisation normale d'une maquette = |
= Utilisation normale d'une carte = |
Line 9: | Line 7: |
Il y a deux moyens de communiquer avec une maquette : par le réseau ou par port série (RS232). |
Il y a deux moyens de communiquer avec une maquette : par le réseau ou par port série (RS232). |
Line 13: | Line 10: |
C'est le port utilisé : | C'est le port utilisé : |
Line 16: | Line 14: |
Line 18: | Line 15: |
Line 20: | Line 18: |
Line 23: | Line 20: |
Avec minicom, on pourra utiliser les réglages suivants : {{{# Machine-generated file - use "minicom -s" to change parameters. |
Avec minicom, on pourra utiliser les réglages suivants : {{{ # Machine-generated file - use "minicom -s" to change parameters. |
Line 32: | Line 31: |
Line 34: | Line 32: |
Line 47: | Line 44: |
Line 49: | Line 45: |
Line 51: | Line 46: |
* taper {{{lrz}}} sur la carte, | * taper {{{lrz}}} sur la carte, |
Line 53: | Line 49: |
Line 55: | Line 50: |
Line 60: | Line 56: |
Line 64: | Line 59: |
Line 69: | Line 63: |
Cela crée l'executable {{{hello}}} pour la maquette et la version {{{hello.gdb}}} pour le debug | Cela crée l'executable {{{hello}}} pour la maquette et la version {{{hello.gdb}}} pour le debug |
Line 78: | Line 72: |
Line 82: | Line 74: |
Line 86: | Line 79: |
Line 88: | Line 80: |
Line 92: | Line 85: |
Et c'est parti. Atention : |
Et c'est parti. Atention : |
Line 99: | Line 92: |
Line 102: | Line 93: |
Line 104: | Line 94: |
On a effacé un fichier critique, la carte ne boote plus. Mais on ne veut pas la reflasher 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. |
On a effacé un fichier critique, la carte ne boote plus. Mais on ne veut pas la reflasher 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. |
Line 109: | Line 97: |
{{{> setbp | {{{ > setbp |
Line 114: | Line 104: |
{{{# mount -t yaffs /dev/mtdblock0 /mnt | {{{ # mount -t yaffs /dev/mtdblock0 /mnt |
Line 119: | Line 111: |
Il faut disposer de deux fichiers : une image du noyau Linux, et une image du système de fichiers. |
Il faut disposer de deux fichiers : une image du noyau Linux, et une image du système de fichiers. |
Line 123: | Line 115: |
Line 125: | Line 116: |
Sur le PC : {{{PC$ bunzip2 romfs.tar.bz2 }}} |
Sur le PC : {{{ PC$ bunzip2 romfs.tar.bz2 }}} |
Line 131: | Line 123: |
{{{> ipcfg 137.194.66.32 }}} |
{{{ > ipcfg 137.194.66.32 }}} |
Line 135: | Line 128: |
Sur la carte, taper {{{> netload }}} Sur le PC : {{{PC$ tftp 137.194.66.32 -m binary -c put image.rom }}} |
Sur la carte, taper {{{ > netload }}} Sur le PC : {{{ PC$ tftp 137.194.66.32 -m binary -c put image.rom }}} |
Line 143: | Line 139: |
{{{> prog 10000 }}} |
{{{ > prog 10000 }}} |
Line 148: | Line 145: |
Line 152: | Line 150: |
Line 154: | Line 151: |
{{{> mrun }}} |
{{{ > mrun }}} |
Line 159: | Line 157: |
{{{# ifconfig eth0 137.194.66.32 | {{{ # ifconfig eth0 137.194.66.32 |
Line 163: | Line 163: |
Line 165: | Line 164: |
{{{PC$ ftp 137.194.66.32 | {{{ PC$ ftp 137.194.66.32 |
Line 169: | Line 170: |
Line 171: | Line 171: |
{{{# cd /mnt | {{{ # cd /mnt |
Line 174: | Line 176: |
Line 176: | Line 177: |
{{{# vi /mnt/etc/rc | {{{ # vi /mnt/etc/rc |
Line 182: | Line 185: |
Line 185: | Line 187: |
Line 188: | Line 191: |
Line 192: | Line 194: |
{{{> setbp | {{{ > setbp |
Line 196: | Line 200: |
Utilisation normale d'une carte
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é :
- par le bootloader, lors du boot de la carte
- par Linux, qui y sort par défaut 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 le client ftp de la carte : ftp ftp.enst.fr
on peut utiliser le serveur ftp de la carte : ftp arm7-12
enfin on peut aussi utiliser nc.
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 :
gdbserver 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
- en cas de crash d'une application, il est fort probable que la mémoire a été corrompue. Il vaut mieux rebooter la carte.
Utilisation avancée
Le système de fichiers est corrompu, la carte ne boote plus !
On a effacé un fichier critique, la carte ne boote plus. Mais on ne veut pas la reflasher 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.
- Image du noyau 2.4.24-ENST : attachment:image.rom
- Image du système de fichiers 1.0-ENST : attachment:romfs.tar.bz2
Décompression du système de fichiers
Sur le PC :
PC$ bunzip2 romfs.tar.bz2
Boot et configuration de la carte
Maintenir appuyé le bouton 2 tout en rebootant. On passe en mode bootloader. Choisir une adresse IP (au besoin en demander une à Frédéric ou Alexis) et configurer le bootloader pour utilser cette adresse IP :
> ipcfg 137.194.66.32
Flashage du noyau
Sur la carte, taper
> netload
Sur le PC :
PC$ tftp 137.194.66.32 -m binary -c put image.rom
Une fois que le fichier est transmis, le flasher en flash NOR (attention de ne pas se tromper d'adresse !!!)
> prog 10000
Démarrage de la carte avec le nouveau noyau
Changer la ligne de commande du noyau (si la carte est neuve, elle devrait être correcte)
> setbp root=/dev/rom0 console=ttyS0,155200 devfs=mount
Démarrer la carte avec le nouveau noyau et le système de fichier de sauvegarde :
> mrun
Flashage du nouveau file system
Au prompt Linux, configurer l'adresse IP, puis effacer la flash NAND et la monter :
# ifconfig eth0 137.194.66.32 # eraseall /dev/mtd0 # mount -t yaffs /dev/mtdblock0 /mnt
Transférer dessus le nouveau système de fichier :
PC$ ftp 137.194.66.32 cd /mnt put romfs.tar
Décompresser le nouveau filesystem dans /mnt :
# cd /mnt # tar xvf romfs.tar
Configurer les fichiers de configuration par défaut :
# vi /mnt/etc/rc // changer le nom de la carte à la ligne "hostname", puis sauver et fermer vi # vi /mnt/share/udhcpc/sample.leasefail // changer l'adresse IP par défaut en 137.194.66.xxx avec xxx=numéro de la carte // puis sauver et quitter vi
Modification des paramètres du noyau
Rebooter, et passer en mode bootloader. Il faut maintenant choisir une adresse MAC. On procède comme suit :
- on prend le numéro de la carte
- on le lit, comme s'il était écrit en hexadécimal
- on le ré-écrit en décimal
Par exemple, pour la carte 10, son adresse MAC sera 16. Pour la carte 19, son adresse MAC sera 25. Pour la carte 2, son adresse MAC sera 2.
Une fois l'adresse MAC choisie, modifier la ligne de commande du noyau, en remplaçant xxx ci-dessous par l'adresse MAC choisie, puis la sauver en flash :
> setbp root=/dev/mtdblock0 console=ttyS0,115200 devfs=mount mac=xxx > senv
C'est fini, on peut éteindre et rallumer la carte. Elle devrait booter correctement sur le nouveau noyau et le nouveau file system.