====== Slitaz_cooking et MSP430 ======
Voici un récapitulatif des opérations nécessaires pour travailler avec les microcontrôlleurs [[wp>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:
* binutils-msp430,
* gcc-msp430,
* msp430-libc,
* msp430mcu.
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.;-)
===== Opérations préalables =====
Il faut télécharger les paquets suivants depuis le serveur debian:
* binutils-msp430,
* gcc-msp430,
* msp430-libc,
* msp430mcu.
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
===== binutils-msp430 =====
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
===== gcc-msp430 =====
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
===== msp430-libc =====
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
===== msp430mcu =====
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
===== mspdebug =====
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
===== Un peu de ménage =====
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
===== Un petit test =====
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:
* avoir installé tous les outils (binutils-msp430, gcc-msp430, msp430-libc, msp430mcu et mspdebug),
* être en possession du kit "ez430-2013". C'est une petite clef USB bien sympa.
* être en possession d'une prise USB de libre sur le pc.
Les étapes à suivre sont:
* faire un petit répertoire pour mettre tous les fichiers,
* rédiger le programme main.c,
* rédiger le Makefile,
* compiler le programme,
* flasher le programme du kit "ez430-2013".
=== Création du répertoire de travail ===
tux@slitaz4:~$ mkdir -p ./Documents/test_msp430/ez430_201x/blink_led
tux@slitaz4:~$ cd Documents/test_msp430/ez430_201x/blink_led
=== Rédaction du main.c ===
Avec l'éditeur de son choix, créer le fichier suivant et
le sauver en .
#include
#include
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;
}
}
=== Rédaction du Makefile ===
Avec l'éditeur de son choix, créer le fichier suivant et
le sauver en . 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)
=== Compilation du programme ===
Il suffit de lancer la commande "make" pour créer le fichier .
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
=== Flasher le programme dans le chip ===
Pour flasher le programme dans le chip, on utilise l'outils "mspdebug". Pour faire simple, il faut:
* se logguer en root,
* insérer le kit "ez430-2013" dans un port usb du pc,
* lancer "mspdebug",
* flasher le chip,
* quitter et apprécier. :-)
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
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 " 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#
=== ENJOY ===
Et maintenant, la led devrait clignoter. :-)