Skyduino:~#
Articles
Autre, C/C++, programmation, tutoriel

[Tutoriel] Compilation d’une toolchain msp430 pour windows + exemple blink sur une carte launchpad

Bonjours tout le monde !

Aujourd’hui je vous ai préparé un article qui vient en complément de mon article précédant sur la carte launchpad MSP430 de TI.
Dans mon test de la launchpad je vous avez dis qu’il était possible d’utiliser des logiciels 100% open source pour compiler / débugger sur plateforme msp430.
Et bien dans cet article je vais vous expliquer comment faire 😉

Comme je l’avais dit précédemment, le choix : toolchain opensource en ligne de commande VS logiciel de développement « tout prét » proprio est une question de gout, perso je ne supporte pas les IDE comme IAR ou CCS fournit avec une licence limité (et par conséquent plus ou moins utilisable).
C’est pourquoi je vais vous montrer dans cet article comment compiler et utiliser votre propre toolchain msp430 opensource 😉

Tout d’abord il faut télécharger et installer plein de petites choses :

1) MinGw : http://sourceforge.net/projects/mingw/files/Installer/

MinGw permet d’avoir sous windows une console « unix like » ainsi que les utilitaires linux de base pour compiler un programme.
Pour installer MinGw il suffit de télécharger / exécuter l’installateur mingw-get-inst et de faire suivant, suivant, suivant, … rien de bien compliqué 😉

2) MspGCC : http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=MSPGCC_Wiki

MspGCC est une version modifié du compilateur libre GCC.
C’est mspgcc qui va nous permettre de compiler / linker nos programmes en c/c++ pour ensuite les utiliser sur la launchpad.

MspGcc est fourni en version pré-compilé pour windows ici :
http://sourceforge.net/projects/mspgcc/files/Windows/mingw32/

Pour installer MspGCC il suffit de copier le contenu du zip dans le dossier d’installation de MinGw.
Ps: Choisir « oui » quand windows demande si il faut fusionner des dossier de même nom, ou remplacer des fichiers déjà existant 😉

3) MspDebug : http://mspdebug.sourceforge.net/

La compilation de MspDebug est l’étape la plus complexe.
MspDebug permet d’utiliser le débuggeur / programmateur intégré de la launchpad, sous windows / mac / linux, mais celui ci n’est fourni que sous la forme de code source.
Il n’existe pas de version précompilé pour windows … Mais c’est pas grave on va compiler mspdebug nous même comme des grands 🙂

Tout d’abord il faut télécharger les sources de mspdebug ainsi que les différentes dépendances :
Sources (fichier .tar.gz, 7-Zip est nécessaire pour ouvrir ce genre d’archive) : http://sourceforge.net/projects/mspdebug/files/
Dépendances : http://mspdebug.sourceforge.net/faq.html#compile_windows
Drivers usb (pour windows XP, sous vista/seven les drivers sont installé via windows update) : http://mspdebug.sourceforge.net/misc/MSP430_Debug-Interface.zip

Une fois le tout téléchargé il faut installer les dépendances (et uniquement les dépendances, pas le code source de mspdebug) dans l’installation MinGw.
Pour cela, il suffit de faire comme avec MspGCC, en copiant le contenu des zip dans le dossier d’installation de MinGw.

Remarque importante : Dans la librairie libusb, dans le sous dossier « include » se trouve un fichier lusb0_usb.h qu’il faut renommer en usb.h.
Ne pas oublier de renommer ce fichier sinon la compilation ne réussira pas !

Ensuite il faut ouvrir une console et ce rendre dans le dossier contenant les sources de mspdebug (les commandes cd et ls (ou dir) seront vos amis ;)) et lancer un « make » pour compiler les sources.

Si tout ce passe bien vous devriez avoir un fichier mspdebug.exe dans le dossier contenant les sources.
Il suffit alors de le copier dans C:\MinGw\bin (dossier bin de l’installation MinGw, le C:\MinGw peut varier selon comment vous avez choisi d’installer MinGw) pour pouvoir l’utiliser plus tard avec mingw.

Ne reste plus qu’as ouvrir une console MinGw et créer notre 1er programme pour la launchpad 🙂

Remarque: Par défaut la console ce lance dans le dossier « home » de l’utilisateur courant, celui ci est en réalité situé dans le dossier msys\1.0\home de l’installation MinGw 😉

Let’s blink !

Voici le code que je vais utiliser pour mon blink :

#include <msp430g2231.h> // Inclusion du fichier de définition pour le msp430g2231 (mcu de base fourni avec la launchpad)

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD; // Arrête le watchdog, si il reste allumé il fera bugger la boucle infini présente plus bas
  P1DIR |= BIT0;   // Place P1.0 (led rouge n°1) en sortie
  P1OUT &= ~BIT0;  // Éteint la led sur P1.0

  for (;;) // Boucle infini
  {
    P1OUT ^= BIT0; // "Toggle" l'état de la led, 0 -> 1, 1 -> 0
    __delay_cycles(100000);   // Délai software de 10000 cycles (soit 1s @1MHz)
  }
} 

Pour compiler ce code on va utiliser la commande suivante :
msp430-gcc -Wall -Os blink.c -o blink.out

Le détail de la commande :
msp430-gcc -> la commande pour appeler le compilateur gcc pour msp430
-Wall -> Active l’affichage de TOUT les warnings / erreurs (trés pratique)
-Os -> Optimise le code assembleur du programme final
blink.c -> fichier source en entrée
-o blink.out -> fichier binaire en sortie

Au passage on va regarder la taille du programme en sortie.
msp430-size blink.out

Le détail de la commande :
msp430-size -> la commande pour appeler l’outil de mesure d’utilisation de flash / ram
blink.out -> fichier binaire en sortie de mspgcc

Ici 134 octets de flash sont utilisé et 0 octets de ram, c’est peu mais il faut ce rappeler que les msp430g fourni avec la launchpad n’ont que 2Ko de flash, c’est donc déja 7% de la taille maximum, pour tout juste 12 lignes de code !
Il est clair que pour une « grosse » application il n’y a pas d’autre choix que d’utiliser le langage assembleur, ou de changer le msp430g fourni de base par un autre plus « gros ».

Une fois le .out généré il faut le transformer en .hex qui pourra être utilisé avec mspdebug pour programmer la launchpad.
Pour ce faire :
msp430-objcopy -O ihex blink.out blink.hex

Le détail de la commande :
msp430-objcopy -> la commande pour appeler l’outil de génération / copie de fichier formaté
-O ihex -> spécifie que le fichier en sortie sera au format intel hex (ihex)
blink.out -> fichier binaire en sortie de mspgcc
blink.hex -> fichier .hex

Ensuite il va nous falloir programmer la launchpad avec le fichier .hex que nous venons de générer, pour cela nous allons utiliser mspdebug.

Mspdebug comporte un certain nombre de drivers, celui qui va nous intéresser c’est « rf2500 », il s’agit du driver usb pour le débuggeur intégré à la launchpad.

(Note: Je vais utiliser le mode de simulation (sim) pour la suite, je n’est pas la carte sous la main pour le moment)

On lance donc mspdebug rf2500, celui ci ce connecte à la launchpad via l’usb et nous renvoi une console de debug en retour.

Pour programmer :
erase
prog blink.hex
reset

Ensuite pour permettre l’exécution du programme :
run
^c

Et voila !
Vous avez désormais une toolchain msp430 fonctionnelle, et une carte launchpad qui clignote, à vous les joies du développement sur plateforme MSP430 🙂

Discussion

9 réflexions sur “[Tutoriel] Compilation d’une toolchain msp430 pour windows + exemple blink sur une carte launchpad

  1. sinon pour les linuxiens ya ça http://www.virtualabs.fr/Decouverte-du-TI-Launchpad (entre autre)

    Publié par JbLb | 28 février 2012, 11 h 34 min
    • Je ri intérieurement … Dans ton lien la personne compare le MSP430G2231 à une carte arduino … il n’as pas du bien lire le détails hardware des MSP430G22xx x)

      Et puis dire qu’il faut absolument l’ide arduino pour coder en arduino, c’est faux …
      Bon par contre les performances réduite, là je suis d’accord.

      Publié par skywodd | 28 février 2012, 19 h 56 min
      • c’est pas pour ces points là que je passait le liens, parce que effectivement la comparaison est plutot douteuse !! , mais bien pour toolchaine sous linux, c’est pratique quand on n’as plus de window sur le poste de travail

        Publié par JbLb | 1 mars 2012, 15 h 59 min
  2. @JbLb: J’avais bien compris, c’est juste que je m’attendais pas à lire ce genre de comparaison / détails 😉

    La partie compilation de la toolchain quand à elle est trés bien faite, rien à dire.

    Publié par skywodd | 1 mars 2012, 18 h 17 min
  3. Merci pour l’article, c’est clair et ça va m’éviter pas mal de recherche ^^

    Publié par rul23s | 6 avril 2012, 20 h 29 min
  4. Merci pour ce tuto 🙂
    question: faut-il installer les pilotes usb normaux quand même?
    (je les ai pas installés et je n’arrive pas à communiquer avec le launchpad)
    es-ce que du code developpé sous eclipse ubuntu serait directement compatible ou il faudrait des adaptations?
    merci encore!!!

    Publié par Weev | 20 juillet 2012, 9 h 47 min
    • >> question: faut-il installer les pilotes usb normaux quand même?

      Je me rappelle plus si j’avais mis d’autres drivers que ceux de MSPdebug …
      Essaye avec les drivers que tu as, tu n’as rien as perdre.
      Au pire gestionnaire de périph -> launchpad -> désinstaller le driver -> tu rebranche

      >> es-ce que du code developpé sous eclipse ubuntu serait directement compatible ou il faudrait des adaptations?

      Normalement le code en lui même compile quelque soit la plateforme vu que c’est le même compilateur.

      Publié par skywodd | 20 juillet 2012, 14 h 29 min
  5. Bonjour,
    ton tutoriel est très bien fait, mais malheureusement sur les liens que tu donnes pour mspdebug, je n’ai trouvé aucunes des dépendances sitées, impossible de faire la compil pour mspdebug

    Publié par 2000_ Mic | 22 décembre 2016, 0 h 04 min

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.