Installation de mspgcc pour microcontrolleur msp430 de Texas Instruments (TI)
Par ronan lepage, Dimanche 11 Septembre 2005 à 23:25 :: Technique :: #20 :: rss
L'installation de mspgcc pour microcontrolleur msp430 a été assez laborieuse et il a fallu recouper plusieurs source d'informations pour résoudre les problèmes d'installation et de fonctionement.
Matériel :
Côté logiciels, on sait que l'on va utiliser :
Matériel :
- PC sous Linux
- MSP430 development tool de TI : FET (Flash Emulation Tool) et JTAG
- un microcontrolleur MSP430F169
Côté logiciels, on sait que l'on va utiliser :
- GCC (compilateur)
- binutils (linker)
- gdb (debugger)
Après lecture du manuel mspgcc sur sourceforge (qui indique la procédure d'installation tout à la fin du manuel (!!! hum !!! )) ... en plus ça n'arrête pas de causer en assembleur ... grrr !
Tout d'abord l'essai d'un package compilé (.rpm) n'a pas réussi ... Alors, on s'attaque directement aux sources ...
Ce qui est fastidieux est de récupérer les sources depuis sourceforge et ailleurs ...
La procédure d'installation a fonctionnée pour binutils et gcc et la libc:
En revanche, ça a foiré pour gdb-5.1.1.tar.bz2 (me rappelle plus quel était le problème ;-P )
En cherchant de l'aide sur google, je suis tombé sur un script qui proposait une installation automatique
Cela semblait très intéressant (le script utilisait le client CVS (d'où installation de CVS), et récupérait les .tar par ftp), malheuresement, un fichier (msp-gdbproxy) n'était pas récupérable par ftp, et semblait difficilement accessible sur internet par ailleurs.
Je l'ai néanmoins trouvé ici et là
Malgré ce script, l'installation ne réussisait toujours pas : avec une mauvaise version de automake et de autoconf : pb de aclocal9 .
Finalement, je tombe sur LE Lien qui sauve :
(à noter également que la consultation du document en allemand permettra de résoudre un petit problème pour l'utilisation de gdbproxy)
une erreur cependant : la libHIL.so doit être installer dans /usr/lib et pas dans /usr/local/lib
Voilà l'installation, est réussie \o/ !!!
Pour que tout marche bien, on doit avoir accès à certains chemins : pour cela on met dans le .bash_profile
Il est également conseillé d'avoir un fichier .gdbinit contenant :
Pour finir un petit rappel de logiciels nécessaires :
Tout d'abord l'essai d'un package compilé (.rpm) n'a pas réussi ... Alors, on s'attaque directement aux sources ...
Ce qui est fastidieux est de récupérer les sources depuis sourceforge et ailleurs ...
La procédure d'installation a fonctionnée pour binutils et gcc et la libc:
$ tar --bzip2 -xf binutils-2.14.tar.bz2 $ cd binutils-2.14 $ ./configure --target=msp430 --prefix=/usr/local/msp430 $ make $ su $ make install ... $ tar --bzip2 -xf gcc-core-3.2.3.tar.bz2 $ cp -a gcc/gcc-3.3/* gcc-3.2.3 $ cd gcc-3.2.3 $ ./configure --target=msp430 --prefix=/usr/local/msp430 $ make $ su $ make install ... $ cd msp430-libc/src $ make $ su $ make install
En revanche, ça a foiré pour gdb-5.1.1.tar.bz2 (me rappelle plus quel était le problème ;-P )
En cherchant de l'aide sur google, je suis tombé sur un script qui proposait une installation automatique
Cela semblait très intéressant (le script utilisait le client CVS (d'où installation de CVS), et récupérait les .tar par ftp), malheuresement, un fichier (msp-gdbproxy) n'était pas récupérable par ftp, et semblait difficilement accessible sur internet par ailleurs.
Je l'ai néanmoins trouvé ici et là
Malgré ce script, l'installation ne réussisait toujours pas : avec une mauvaise version de automake et de autoconf : pb de aclocal9 .
Finalement, je tombe sur LE Lien qui sauve :
(à noter également que la consultation du document en allemand permettra de résoudre un petit problème pour l'utilisation de gdbproxy)
une erreur cependant : la libHIL.so doit être installer dans /usr/lib et pas dans /usr/local/lib
Installation on Unix/Linux/Cygwin # become root; you actually only need this for "make install" and when # you copy files to the target directory (/usr/local/msp430) su mkdir /tmp/mspgcc cd /tmp/mspgcc #binutils wget ftp://sources.redhat.com/pub/binutils/releases/binutils-2.14.tar.bz2 tar xjvf binutils-2.14.tar.bz2 cd binutils-2.14 ./configure --prefix=/usr/local/msp430 --target=msp430 make make install cd .. export PATH=/usr/local/msp430/bin:$PATH #gcc wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-3.2.3/gcc-core-3.2.3.tar.bz2 tar xjvf gcc-core-3.2.3.tar.bz2 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co gcc/gcc-3.3 cp -r gcc/gcc-3.3/* gcc-3.2.3/ cd gcc-3.2.3 ./configure --prefix=/usr/local/msp430 --target=msp430 make make install cd .. #msp430-libc cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co msp430-libc cd msp430-libc/src make make install cd ../.. #gdb wget gdb-6.0.tar.bz2 tar xjvf gdb-6.0.tar.bz2 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co gdb/gdb-current cp -r gdb/gdb-current/* gdb-6.0/ cd gdb-6.0 ./configure --prefix=/usr/local/msp430 --target=msp430 make make install cd .. #JTAG hardware access library cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co jtag cd jtag/hardware_access make mv libHIL.so /usr/local/lib #### ATTENTION : il faut mettre libHIL.so dans /usr/lib ldconfig cd ../.. #gdbproxy wget http://twtelecom.dl.sourceforge.net/sourceforge/mspgcc/msp430-gdbproxy chmod +x msp430-gdbproxy mv msp430-gdbproxy /usr/local/msp430/bin/ #pyJTAG cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co python cd ../python python setup.py install # You can use "python2.3", etc. instead. cd ../.. cd python # Note that this is a different "python" directory. python setup.py install # Use the exact same "python" command as before chmod 755 msp430-jtag.py # If you are using anything other than "python" (e.g. "python2.3") you will # need to edit "msp430-jtag.py" to change "python" in the top line # (e.g to "python2.3"). cp msp430-jtag.py /usr/local/msp430/bin
Voilà l'installation, est réussie \o/ !!!
Pour que tout marche bien, on doit avoir accès à certains chemins : pour cela on met dans le .bash_profile
PATH=$PATH:/usr/lib PATH=$PATH:/usr/local/lib PATH=$PATH:/usr/local/msp430 PATH=$PATH:/usr/msp430 PATH=$PATH:/usr/local/msp430/lib PATH=$PATH:/usr/local/msp430/msp430/include export PATH #puis faire : $ source .bash_profileon peut alors compiler le test (test1.c) qui fait clignoter la led toutes les secondes :
#includeon compile :void wait(void); //prototype for wait() int main(void) { P1DIR=0xFF; //port 1 = output P1OUT=0x01; //set bit 0 in port 1 for(;;) { //infinite loop P1OUT=~P1OUT; //invert port 1 wait(); //call delay function } } void wait(void) //delay function { volatile int i; //declare i as volatile int for(i=0;i<32000;i++); //repeat 32000 times }
msp430-gcc -mmcu=msp430x169 -g -Os -o test1.elf test1.cNous ne sommes pas encore au bout de nos peines, puisque l'étape suivante qui devait-être :
Starting gdbproxy The next step is starting gdbproxy, which is responsible for the communication between GDB and the FET: msp430-gdbproxy --port=2000 msp430 If your FET is properly connected to the parallel port, you should see a message like the following: info: msp430: Target device is a 'MSP430F169' (type 37) notice: msp430-gdbproxy: waiting on TCP port 2000donne :
open: No such file or directory error: msp430: Could not initialize device interface (1)La solution (trouvée dans la doc en allemand) est de taper en tant que root :
mknod /dev/parport0 c 99 0
Il est également conseillé d'avoir un fichier .gdbinit contenant :
set remoteaddresssize 64 set remotetimeout 999999 target remote localhost:2000On peut alor utiliser ddd :
ddd --debugger msp430-gdb test1.elf Now you should create a few buttons by adding the following lines to the text field in "Commands / Edit Buttons (Console Buttons)": target remote localhost:2000 // Connect monitor erase all // Erase load // Load monitor reset // ResetOn utilise les boutons Connect, Erase, Load puis ... Cont (continue) (!) (et pas Run) .... voilà, ça clignote \o/ !!!
Pour finir un petit rappel de logiciels nécessaires :
- cvs
- python
- ddd
Commentaires
Le Lundi 12 Septembre 2005 à 17:25, par so_penible_animation :: #
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.