Voici un récapitulatif des opérations nécessaires pour travailler avec les microcontrôlleurs MSP430 de Texas Instrument sous Slitaz.
Les outils issus du projet mspgcc http://sourceforge.net/projects/mspgcc/ permettent de compiler (gcc), assembler (as) et linker (ld) du code pour les MSP430:
Alors que mspdebug permet de flasher les MSP430. Il est développé par Daniel Beer (http://mspdebug.sourceforge.net/).
Comme je n'ai pas été capable de compiler depuis les sources , je me suis restreint à utiliser les packets disponibles chez Debian. Il devient alors super facile de procéder à l'installation.
Il faut télécharger les paquets suivants depuis le serveur debian:
Par exemple pour gcc-msp430 on ira sur la page suivante: http://packages.debian.org/en/sid/i386/gcc-msp430/download
Après téléchargement, on doit avoir:
tux@slitaz:~/Downloads$ ls binutils-msp430_2.21~msp20110716-1_i386.deb gcc-msp430_4.5.3~mspgcc-20110716-1_i386.deb msp430-libc_20110612-2_i386.deb msp430mcu_20110613-3_all.deb tux@slitaz:~/Downloads$
Il y a également quelques paquets Slitaz à installer (en root):
tux@slitaz:~/Downloads$ su password root@slitaz:~# tazpkg get-install slitaz-toolchain root@slitaz:~# tazpkg get-install usbutils root@slitaz:~# tazpkg get-install libusb root@slitaz:~# tazpkg get-install libusb-dev
On converti le paquet debian en tazpkg (en root):
root@slitaz:/home/tux/Downloads# tazpkg convert binutils-msp430_2.21~msp20110716-1_i386.deb
On l'installe:
root@slitaz:/home/tux/Downloads# tazpkg install binutils-msp430-2.21~msp20110716-1.tazpkg
On converti le paquet debian en tazpkg (en root):
root@slitaz:/home/tux/Downloads# tazpkg convert gcc-msp430_4.5.3~mspgcc-20110716-1_i386.deb
On l'installe:
root@slitaz:/home/tux/Downloads# tazpkg install gcc-msp430-4.5.3~mspgcc-20110716-1.tazpkg
On converti le paquet debian en tazpkg (en root):
root@slitaz:/home/tux/Downloads# tazpkg convert msp430-libc_20110612-2_i386.deb
On l'installe:
root@slitaz:/home/tux/Downloads# tazpkg install msp430-libc-20110612-2.tazpkg
On converti le packet debian en tazpkg (en root):
root@slitaz:/home/tux/Downloads# tazpkg convert msp430mcu_20110613-3_all.deb
On l'installe:
root@slitaz:/home/tux/Downloads# tazpkg install msp430mcu-20110613-3.tazpkg
On prépare la compilation (en utilisateur tux):
tux@slitaz:~/Downloads$ tar xvfz mspdebug-0.17.tar.gz tux@slitaz:~/Downloads$ cd mspdebug-0.17/ tux@slitaz:~/Downloads/mspdebug-0.17$ make WITHOUT_READLINE=1
On installe en root:
tux@slitaz:~/Downloads/mspdebug-0.17$ su Password: root@slitaz:~# cd /home/tux/Downloads/mspdebug-0.17/ root@slitaz:/home/tux/Downloads/mspdebug-0.17# make install mkdir -p /usr/local/bin mkdir -p /usr/local/share/man/man1 /usr/bin/install -m 0755 mspdebug /usr/local/bin/mspdebug /usr/bin/install -m 0644 mspdebug.man \ /usr/local/share/man/man1/mspdebug.1 root@slitaz:/home/tux/Downloads/mspdebug-0.17# exit
Maintenant que tout est installé, on peut éventuellement se débarasser des fichiers suivants:
tux@slitaz:~/Downloads$ rm -f *deb tux@slitaz:~/Downloads$ rm -f *tazpkg tux@slitaz:~/Downloads$ rm -f mspdebug-0.17 tux@slitaz:~/Downloads$ rm -f mspdebug-0.17.tar.gz
Le test que je propose est le suivant: Faire clignoter la led disponible sur le kit “ez430-2013” disponible pour 20$ chez Texas.
Pour cela, il faut:
Les étapes à suivre sont:
tux@slitaz4:~$ mkdir -p ./Documents/test_msp430/ez430_201x/blink_led tux@slitaz4:~$ cd Documents/test_msp430/ez430_201x/blink_led
Avec l'éditeur de son choix, créer le fichier suivant et le sauver en <main.c>.
#include <msp430.h> #include <legacymsp430.h> void main(void) { volatile unsigned int i = 0; /*on utiliser pas le watchdog*/ WDTCTL = WDTPW + WDTHOLD; /*on configure la pin P1.0 en output. C'est ici que la led est connectée.*/ P1DIR |= 0x01; while(1) { /*on attend un peu pour voir le clignotement, sinon trop rapide.*/ for(i = 65500; i > 0; i--) nop(); /*on inverse l'état de la sortie.*/ P1OUT ^= 0x01; } }
Avec l'éditeur de son choix, créer le fichier suivant et le sauver en <Makefile>. Il faut gaffe à bien mettre des tabulations (et non pas des espaces).
C=msp430-gcc CFLAGS=-Os -Wall -g -mmcu=msp430f2012 OBJS=main.o all: $(OBJS) $(CC) $(CFLAGS) -o main.elf $(OBJS) %.o: %.c $(CC) $(CFLAGS) -c $< clean: rm -fr main.elf $(OBJS)
Il suffit de lancer la commande “make” pour créer le fichier <main.elf>.
tux@slitaz4:~/Documents/test_msp430/ez430_201x/blink_led$ make msp430-gcc -Os -Wall -g -mmcu=msp430f2012 -o main.elf main.o
Voici les fichiers qui devraient être dans notre répertoire de travail:
tux@slitaz4:~/Documents/test_msp430/ez430_201x/blink_led$ ls main.c main.elf main.o Makefile
Pour flasher le programme dans le chip, on utilise l'outils “mspdebug”. Pour faire simple, il faut:
Voici le récapitulatif:
root@slitaz4:/home/tux/Documents/test_msp430/ez430_201x/blink_led# mspdebug uif MSPDebug version 0.21 - debugging tool for MSP430 MCUs Copyright (C) 2009-2012 Daniel Beer <dlbeer@gmail.com> This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ti3410: warning: can't detach kernel driver: No such file or directory TI3410 device is in boot config, setting active Initializing FET... FET protocol version is 10002000 Set Vcc: 3000 mV Configured for Spy-Bi-Wire Device: MSP430F20x2 Number of breakpoints: 2 fet: FET returned NAK warning: device does not support power profiling Chip ID data: f2 01 02 Available commands: = erase isearch opt run setwatch_w alias exit load power save_raw simio break fill load_raw prog set step cgraph gdb locka read setbreak sym delbreak help md regs setwatch verify dis hexout mw reset setwatch_r verify_raw Available options: color gdb_loop iradix fet_block_size gdbc_xfer_size quiet Type "help <topic>" for more information. Press Ctrl+D to quit. (mspdebug) prog main.elf Erasing... Programming... Writing 116 bytes at f800 [section: .text]... Writing 32 bytes at ffe0 [section: .vectors]... Done, 148 bytes total (mspdebug) exit root@slitaz4:/home/tux/Documents/test_msp430/ez430_201x/blink_led#
Et maintenant, la led devrait clignoter.