Mostrando entradas con la etiqueta mspdebug. Mostrar todas las entradas
Mostrando entradas con la etiqueta mspdebug. Mostrar todas las entradas

sábado, 2 de agosto de 2014

MSP430 toolchain in Ubuntu 14.04 with Eclipse Luna, installation & setup brief


This is a lean compilation of the previous 4 articles.
The instructions are intended to install mspgcc4.7 devel version, mspdebug 0.22, and Eclipse CDT Luna on Ubuntu 14.04 amd64 from source, and to configure msp430 and mspdebug to work from Eclipse.
Good luck!!!

mspgcc


Will be installed in /usr/local/msp430

cd ~
mkdir mspgcc_install
cd mspgcc_install

#Dependencies
sudo apt-get install patch ncurses-dev build-essential bison flex zlib1g-dev sed automake gawk mawk libusb-1.0.0 libusb-1.0.0-dev dos2unix srecord


#Downloads:

wget http://sourceforge.net/projects/mspgcc/files/mspgcc/DEVEL-4.7.x/mspgcc-20120911.tar.bz2
wget http://sourceforge.net/projects/mspgcc/files/msp430mcu/msp430mcu-20130321.tar.bz2
wget http://sourceforge.net/projects/mspgcc/files/msp430-libc/msp430-libc-20120716.tar.bz2
wget http://ftpmirror.gnu.org/binutils/binutils-2.22.tar.bz2
wget http://ftp.gnu.org/pub/gnu/gcc/gcc-4.7.0/gcc-4.7.0.tar.bz2
wget http://ftp.gnu.org/pub/gnu/gdb/gdb-7.2a.tar.bz2

wget http://sourceforge.net/p/mspgcc/bugs/_discuss/thread/fd929b9e/db43/attachment/0001-SF-357-Shift-operations-may-produce-incorrect-result.patch
wget http://sourceforge.net/p/mspgcc/bugs/352/attachment/0001-SF-352-Bad-code-generated-pushing-a20-from-stack.patch

#GDB patch download
wget -O gdb.patch https://sourceware.org/git/?p=gdb.git;a=patch;h=7f62f13c2b535c6a23035407f1c8a36ad7993dec

#Uninstall texinfo 5.x and install oldversion 4.x
wget http://ftp.br.debian.org/debian/pool/main/t/texinfo/texinfo_4.13a.dfsg.1-10_amd64.deb
sudo dpkg -r texinfo
sudo dpkg -i texinfo_4.13a.dfsg.1-10_amd64.deb

#Extract

tar xvfj mspgcc-20120911.tar.bz2
tar xvfj binutils-2.22.tar.bz2 
tar xvfj gcc-4.7.0.tar.bz2  
tar xvfj gdb-7.2a.tar.bz2
tar xvfj msp430mcu-20130321.tar.bz2 
tar xvfj msp430-libc-20120716.tar.bz2 


#Create build folders
mkdir build
cd build
mkdir binutils 
mkdir gcc
mkdir gdb
cd ..

#Binutils install

cd binutils-2.22
patch -p1<../mspgcc-20120911/msp430-binutils-2.22-20120911.patch
cd ../build/binutils 
../../binutils-2.22/configure --target=msp430 --prefix=/usr/local/msp430 2>&1 | tee co
make 2>&1 | tee mo
sudo make install 2>&1 | tee moi


#gcc
cd ../../gcc-4.7.0
patch -p1 < ../mspgcc-20120911/msp430-gcc-4.7.0-20120911.patch
patch -p1< ../0001-SF-352-Bad-code-generated-pushing-a20-from-stack.patch
patch -p1< ../0001-SF-357-Shift-operations-may-produce-incorrect-result.patch

./contrib/download_prerequisites
#ira-int.h replace
cd gcc
rm ira-int.h
wget -O ira-int.h https://gcc.gnu.org/viewcvs/gcc/branches/gcc-4_7-branch/gcc/ira-int.h?revision=191605&view=co&pathrev=191605

cd ../../build/gcc 
../../gcc-4.7.0/configure --target=msp430 --enable-languages=c,c++ --prefix=/usr/local/msp430 2>&1 | tee co
make 2>&1 | tee mo
#The previous command take a while (tens of minutes), continue to install mspdebug or Eclipse Luna if you don't want to wait.
sudo make install 2>&1 | tee moi

#If you are error-free at this point, congratulations!!! you can continue.
#Otherwise, sorry, you are on your own... the 43oh.com guys can help!!!

#Update PATH
export PATH=/usr/local/msp430/bin/:$PATH
sudo sed -e '/^PATH/s/"$/:\/usr\/local\/msp430\/bin"/g' -i /etc/environment

#Check msp430-gcc, must return 4.7.0 20120322
msp430-gcc --version

#Install gdb
cd ../../gdb-7.2
patch -p1 < ../mspgcc-20120911/msp430-gdb-7.2a-20111205.patch
patch -p1< ../gdb.patch
cd ../build/gdb
../../gdb-7.2/configure --target=msp430 --prefix=/usr/local/msp430 2>&1 | tee co 
make 2>&1 | tee mo
sudo make install 2>&1 | tee moi 
#If error verify you have old version texinfo package 

#Check gdb installation:
msp430-gdb --version
#Must return 7.2


#msp430mcu and msp430-libc
cd ../../msp430mcu-20130321/
sudo MSP430MCU_ROOT=`pwd` ./scripts/install.sh /usr/local/msp430 | tee so

cd ../msp430-libc-20120716/src/
make 2>&1 | tee mo
sudo PATH=$PATH make PREFIX=/usr/local/msp430 install 2>&1 | tee moi
cd ../..

#If needed, remove old version of texinfo and install the new one
sudo dpkg -r texinfo
sudo apt-get install texinfo

mspdebug


sudo apt-get install libusb-dev libusb-1.0.0 libusb-1.0.0-dev
#Optional, see compilation variant below:
sudo apt-get install libreadline6-dev

wget http://downloads.sourceforge.net/project/mspdebug/mspdebug-0.22.tar.gz
tar xvfz mspdebug-0.22.tar.gz
cd mspdebug-0.22
#if libreadline:
make 2>&1 | tee mo
#else:
make WITHOUT_READLINE=1 2>&1 | tee mo


#If make complains like:
#util/usbutil.h:22:17: fatal error: usb.h: No such file or directory
#it's because libusb-dev package is not installed (it's not the same than libusb-1.0.0-dev), see dependencies above

sudo make install 2>&1 | tee moi
cd ..

#udev rules, new file 61-TI-MSP430.rules in /etc/udev/rules.d
sudo bash -c "echo 'ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0660", GROUP="plugdev" #ez430 tools: Launchpad v1.5 and v1.4, Chronos watch, FRAM Exp. Board' > /etc/udev/rules.d/61-TI-MSP430.rules"

sudo bash -c "echo 'ATTRS{idVendor}=="2047", ATTRS{idProduct}=="0010", MODE="0660", GROUP="plugdev" #msp-fet430uif' >> /etc/udev/rules.d/61-TI-MSP430.rules"

sudo addgroup yourUserName plugdev
sudo service udev restart  

#OPTIONAL TILIB v3 installation, for msp-fet430uif debugger, or newer microcontrollers/boards (see http://forum.43oh.com/topic/5706-use-mspdebug-to-upgrade-msp430fr5969/) ignore if you don't need it.
sudo apt-get install libudev-dev libfox-1.6-0 autotools-dev autoconf automake libtool libboost-all-dev
mkdir tilib
cd tilib
wget http://www.ti.com/lit/sw/slac460i/slac460i.zip

wget https://github.com/downloads/signal11/hidapi/hidapi-0.7.0.zip
unzip slac460.zip  
unzip hidapi-0.7.0.zip 
cd MSPDebugStack_OS_Package/ThirdParty/
mkdir lib
mkdir include

cd ../../hidapi-0.7.0/linux/

#Edit makefile of hidapi

sed -i 's/CFLAGS   ?= -Wall -g/CFLAGS   ?= -Wall -g -fPIC/g' Makefile
sed -i 's/CXXFLAGS ?= -Wall -g/CXXFLAGS ?= -Wall -g -fPIC/g' Makefile
sed -i 's/LIBS      = `pkg-config libusb-1.0 libudev --libs`/LIBS      = `pkg-config libusb-1.0 libudev --libs` -lpthread/g' Makefile


#Build hidapi, copy to MSPDebugStack_OS_Package, and build libmsp430.so

make 2>&1 | tee mo
cp hid-libusb.o ../../MSPDebugStack_OS_Package/ThirdParty/lib
cp ../hidapi/hidapi.h ../../MSPDebugStack_OS_Package/ThirdParty/include
cd ../../MSPDebugStack_OS_Package/
make 2>&1 | tee mo
#Copy .so library to system path
sudo cp libmsp430.so /usr/local/lib

#Plug in ms-fet430uif and do
mspdebug tilib --allow-fw-update 


Eclipse Luna

cd ~
mkdir eclipse_install
cd eclipse_install
#Last version is RC3 at this time. Check last version at http://www.eclipse.org/downloads/index-developer.php?Luna
wget -O eclipse-cpp-luna-RC3-linux-gtk-x86_64.tar.gz http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/luna/RC3/eclipse-cpp-luna-RC3-linux-gtk-x86_64.tar.gz
tar zxvf eclipse-cpp*
sudo su -c "chown -R root:root eclipse && mv eclipse /opt/eclipse"
sudo su -c "ln -s /opt/eclipse/eclipse /usr/local/bin/eclipse"

#Create unity launcher
cat > ./eclipse.desktop <<EOF
[Desktop Entry]
Version=4.4
Name=Eclipse Luna CDT
Comment= RC3 gtk x86_64
Exec=/opt/eclipse/eclipse
Icon=/opt/eclipse/icon.xpm
Terminal=false
Type=Application
Categories=Application;IDE;Development
EOF


chmod +x eclipse.desktop
sudo cp eclipse.desktop /usr/share/applications/

#Test if eclipse runs:
eclipse

JVM



#If the last command returns error, there is no JVM installed or the installed version is old, you have to install a JVM otherwise -unless you want to use specifically a separate JVM for eclipse - skip this.
#Can't use a command to download, you need to accept license agreement before:
#http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html



tar zxvf jdk* -C /tmp/
sudo su
if [ ! -d '/usr/lib/jvm' ]; then mkdir /usr/lib/jvm; fi
chown -R root:root /tmp/jdk1.8* && mv /tmp/jdk1.8* /usr/lib/jvm/

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8*/bin/java 1065
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8*/bin/javac 1065
update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.8*/bin/jar 1065
update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.8*/bin/javaws 1065
exit

#Optional, in case you have more than one JVM installed. Change the version name if needed
sudo sed -i '/-vmargs/i\-vm' /opt/eclipse/eclipse.ini
sudo sed -i '/-vmargs/i\/usr/lib/jvm/jdk1.8.0_11/bin/java' /opt/eclipse/eclipse.ini


Eclipse setup


That's all folks, any suggestions/corrections put it in the comments and I will be happy to address it.

martes, 22 de julio de 2014

msp430 toolchain en Ubuntu 14.04 - parte IV: proyecto Blinker

Finalmente!!!, ya estamos listos para usar nuestro flamantes eclipse, mspgcc, y mspdebug.

Actualización (con presentación queda más bonito):



Dejo para referencia la entrada original:


Dentro de eclipse tenemos que instalar el paquete que permite usar gdb con hardware:
Help-> Install New Software...


Verificar tener los siguientes repositorios instalados:
http://download.eclipse.org/tools/cdt/releases/8.4
http://download.eclipse.org/releases/luna
http://download.eclipse.org/eclipse/updates/4.4



Damos Ok, volvemos a la pantalla anterior, y en el campo Work with elegimos
CDT luna o All Available Sites
En el cuadro de busqueda escribir: gdb hardware
Y chequear el C/C++ GDB Hardware Debugging  debajo de CDT Optional Features.


Continuar con la instalación, (next, aceptar licencia, etc).

Configuración del compilador

File-> New -> C Project
Project name: Blinker
Project type: Empty Project
Toolchains: cross gcc


Next, Next,


Finish

File -> New -> Source File
Source file: main.c
Finish 


Copiar y pegar en la página de código:

#include <msp430.h>

int main(void)
{
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= BIT0;
    while(1)
    {
        P1OUT ^= BIT0;
        __delay_cycles(1000000);
        __nop();

    }

    return 0;
}


En la ventana Project Explorer click derecho sobre Blinker -> Properties
Ir a C/C++ Build -> Settings
En el otro marco: pestaña Tool Settings -> Cross Settings
Path: /usr/local/msp430


Dentro de Cross GCC compiler agregar definición de símbolo __MSP430G2452__ (micro que tengo puesto en el Launchpad en este momento, si esa puesto el msp430g2553 -> __MSP430G2553__ ). Este paso no es estrictamente necesario (alcanza con los flags de compilación que se definen a continuación), pero viene bien para que el índice reconozca los nombres de registro, bits, etc (P1OUT, BIT0, WDTCTL...):



 En Miscellaneous agregar el flag: -mmcu=msp430g2452


Idem anterior en Cross GCC Linker-> Miscellaneous.
Los flags -Wl, -Map=memory.map hacen que el linker genere un mapa de memoria. Para este proyecto no tiene sentido, pero es útil para proyectos reales donde queremos saber segmentos de memoria, librerías incluídas, direcciones de funciones y variables, etc.


Idem en Cross GCC Assembler -> General


Opcionalmente, en la pestaña Build Steps podemos usar Post-build Steps para ejecutar algún programa o script. En este caso hacemos que al terminar de compilar nos muestre el uso de memoria del proyecto:
Command -> msp430-size ${ProjName}
Description: Uso de memoria


Listo, damos al botón de Ok y menu Project -> Build Project.
En la consola nos debería salir que salió todo bien:


Configuración mspdebug

En la ventana Project Explorer->click derecho sobre Blinker -> Debug As -> Debug Configurations
Seleccionar GDB Hardware Debugging y click sobre el ícono nuevo arriba a la izquierda:


Dejamos la pestaña Main sin modificar.
Pestaña Debugger: poner en GDB Command: msp430-gdb y en cuadro Port Number: 2000 (es el que utiliza por default el mspdebug)


Pestaña de Startup:
Esto ya es una cuestión de gustos. Personalmente no quiero que al iniciar una sesión de depuración se grabe un programa nuevo, por eso desmarco la casilla Load Image. Muchas veces corto la depuración o se cuelga y necesito empezar desde el principio con el mismo programa que estaba grabado antes (es decir, sin cambios de código entre sesiones de depuración).
Cuando tengo que cargar un programa o imagen nueva lo hago desde el mspdebug. No presionar el botón Debug todavía nos falta ejecutar mspdebug.


Enchufar el launchpad, abrimos un terminal (Ctrl-Alt-T) y ejecutamos:
mspdebug rf2500


Ya dentro de mspdebug:
prog Blinker
gdb

Listo, ahora mspdebug deja un servidor gdb abierto en el puerto 2000. Volvemos a eclipse y ahora sí hacemos click sobre el botón Debug, nos aparece esta ventana:


Opcional: eclipse se queja de que no encuentra el código fuente crt0.s
Si hay interes en depurar el código de inicialización (que es el encargado de inicializar constantes en RAM, la pila, librerías estandar, y demás código que utiliza C para funcionar), el archivo crt0.s se encuentra en la carpeta de instalación:
~/Install/mspgcc/gcc-4.7.0/libgcc/config/msp430/crt0.S
Si no interesa ver ese código, podemos hacer caso omiso.
Así queda la configuración si incluimos crt0.S:

 
Ir a la pestaña de código main.c, pararse con el cursor en la línea siguiente a
WDTCTL = WDTPW + WDTHOLD;
en este caso la línea:
P1DIR |= BIT0;
Y presionar CTRL + R. Con esto ejecutamos código hasta el cursor.
¿Por qué la línea siguiente?, porque con esa instrucción detenemos el watchdog, caso contrario si no la ejecutamos rápido el watchdog va a resetear el micro y vuelta al principio. Ignorar la flecha roja:


En este punto ya podemos depurar paso a paso, insertar breakpoints, ver valores de variables, etc.
Una vez terminada la sesión de depuración, presionamos sobre el cuadrado rojo arriba a la izquierda, y volvemos a la vista de programación clickeando en el botón C/C++ arriba a la derecha:

 
 
En la ventana de terminal ya nos aparece el prompt (mspdebug) listo para aceptar comandos:



Normalmente solo uso los comandos:
prog para cargar una nueva imagen,
gdb para aceptar la conexión de eclipse,
reset cuando reinicio una sesión de depuración con eclipse,
y claro, exit para salir del mspdebug.

No desenchufar el Launchpad hasta haber salido del mspdebug.

Al depurar con eclipse puede pasar que el programa se cuelgue, y no tengamos respuesta al ejecutar paso a paso, ni podamos ejecutar comandos en el terminal con mspdebug. En tal caso terminar la sesión de depuración en eclipse, y en el terminal mspdebug presionar Ctrl-C para interrupir la ejecución de código.
Conviene reiniciar mspdebug con el comando reset y luego empezar a depurar desde el principio.

Listo, ojalá sirva para ahorrarles dolores de cabeza (con que le pase a una persona ya alcanza) y puedan tener un comienzo más feliz con los msp430 utilizando herramientas libres.

Proxima entrada:
Las instrucciones paso a paso libres de palabrerío, para no tener que leer los 4 artículos para tener todo funcionando.

domingo, 20 de julio de 2014

msp430 toolchain en Ubuntu 14.04 - parte II: mspdebug

Actualización: hice un resumen para ejecutar todo desde la consola utilizando comandos, si quieren ahorrarse el palabrerío: mspdebug

Con mspdebug vamos a poder programar y depurar prácticamente cualquier herramienta de desarrollo y microcontrolador msp430. El reloj Chronos (ez430), launchpad, fet target boards, placas de Olimex, programador/depurador FET etc, etc.
Antes del proyecto mspgcc había otro proyecto llamado mspgcc4 que trabajaba con un programa gdb-proxy.

Pero el mspdebug realiza las funciones del gdb-proxy, además de la interfaz con el depurador o el microcontrolador.

El sitio es:
http://mspdebug.sourceforge.net/
La última versión se encuentra en:
http://sourceforge.net/projects/mspdebug/files/

La última versión a la fecha es la 0.22:
http://sourceforge.net/projects/mspdebug/files/mspdebug-0.22.tar.gz/download
Descomprimir, make, sudo make install y listo.
Puede ser necesario compilar con
make WITHOUT_READLINE=1
si no está instalado el paquete libreadline-dev (verificar con synaptic).
make 2>&1 | tee mo
sudo make install 2>&1 | tee moi

Agregado 2 de Julio de 2014:
Si sale error:
In file included from util/usbutil.c:22:0:
util/usbutil.h:22:17: fatal error: usb.h: No such file or directory

Es porque falta instalar el paquete libusb-dev (que no es lo mismo que libusb-1.0.0-dev !!!):
sudo apt-get install libusb-dev

Vamos a comprobar si mspdebug funciona:
Al enchufar el launchpad deberíamos poder comunicarnos con él ejecutando
sudo mspdebug rf2500
Nos va a aparecer algo como esto:

Desde allí ya podemos escribir/leer programas al msp430. Generalmente en este punto lo único que hago es ejecutar el comando gdb y comandarlo a través del eclipse.
Podemos salir con exit y ya podemos desenchufar el launchpad.

No queremos estar llamando a mspdebug con sudo todo el tiempo, por eso agregamos reglas a udev para que nuestro usuario de ubuntu tenga permisos de lectura y escritura.

udev


/etc/udev/rules.d$ sudo gedit 61-TI.rules

udev se encarga entre otras cosas de manejar lo que enchufamos al puerto usb y decidir los permisos de acceso que tiene nuestro usuario. Las reglas se aplican secuencialmente y una puede anular a la otra. El orden de aplicación de la regla viene dado por el número al principio del nombre de archivo. Elegí 61 arbitrariamente, he visto que algunos usan 40, otros 90... en fin; no deberíamos tener problema con ninguna de esas opciones.
El resto del nombre de archivo también es a elección.
Mi archivo contiene las siguientes líneas:
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0660", GROUP="plugdev" #Launchpad v1.5
ATTRS{idVendor}=="2047", ATTRS{idProduct}=="0010", MODE="0660", GROUP="plugdev" #msp-fet430uif


Para más información sobre udev hay buena información en hackaday:
http://hackaday.com/2010/08/11/how-to-launchpad-programming-with-linux/
http://hackaday.com/2009/09/18/how-to-write-udev-rules/

¿Y de donde obtengo idVendor y idProduct?.
Al enchufar el launchpad (o el FET, o el reloj Chronos...), podemos verlo con:
lsusb


En la línea resaltada aparece la entrada del launchpad, 0451 es el VID (vendor ID) y f432 el PID (product ID).
Si queremos ver información adicional del dispositivo (interfaces, endpoints...), podemos hacer
lsusb -s 004:003 -v

Agregamos una línea por herramienta de desarrollo.
Luego de eso debemos agregarnos al grupo groupdev:
sudo addgroup tu_nombre_de_usuario plugdev.

Y reiniciamos el servicio udev:
sudo service udev restart

TILIB v3

Guía:
https://rtime.felk.cvut.cz/hw/index.php/MSP430F5529_Launchpad#MSP430.DLLv3

Si queremos usar la librería tilib que provee TI para depurar:
http://processors.wiki.ti.com/index.php/MSP_Debug_Stack
Debemos bajar el archivo slac460 (actualmente versión "i"):
http://processors.wiki.ti.com/index.php/MSPDS_Open_Source_Package
http://www-s.ti.com/sc/techzip/slac460.zip

Descomprimir e ir a la carpeta MSPDebugStack_OS_Package.
Según README-BUILD es necesario bajar/compilar/instalar libboost, yo instalé el paquete libboost-all-dev con synaptic para ahorrarme la espera (versión 1.54.0.1ubuntu1). Y aprovechando el synaptic abierto, instalamos dependencias:
libudev-dev (agrega una parva de paquetes para instalar), libfox-1.6-0 (debería estar dentro del conjunto anterior), autotools-dev, autoconf, automake, libtool.

Luego bajamos
https://github.com/signal11/hidapi/downloads
La versión actual es la 0.7.0. Descomprimir y editar el archivo
/hidapi-0.7.0/linux/Makefile
Reemplazar
CFLAGS   ?= -Wall -g
por
CFLAGS   ?= -Wall -g -fPIC

CXXFLAGS ?= -Wall -g
por
CXXFLAGS ?= -Wall -g -fPIC

LIBS      = `pkg-config libusb-1.0 libudev --libs`
por
LIBS      = `pkg-config libusb-1.0 libudev --libs` -lpthread

Guardar y compilar:
/hidapi-0.7.0/linux$ make

Copiar /hidapi-0.7.0/linux/hid-libusb.o
a /MSPDebugStack_OS_Package/ThirdParty/lib/

y /hidapi-0.7.0/hidapi/hidapi.h
a /MSPDebugStack_OS_Package/ThirdParty/include/

Ahora sí podemos compilar tilib con make:
daniel@daniel-desktop:~/Install/mspgcc/tilib/MSPDebugStack_OS_Package$ make

Copiar libmsp430.so a /usr/local/lib:
daniel@daniel-desktop:/usr/local/lib$ sudo cp /home/daniel/Install/mspgcc/tilib/MSPDebugStack_OS_Package/libmsp430.so


Vamos a probarlo. Enchufar el msp-fet430uif y ejecutar
mspdebug tilib --allow-fw-update
para actualizar el firmware.

Entonces ahora sí debería funcionar al ejecutar
mspdebug tilib

O casi... usualmente tengo que ejecutar 3 o 4 veces antes de que el mspdebug pueda conectarse:



Bueno... quizás más veces :(
Desconozco si se debe a algún error de instalación o estoy haciendo algo mal.
El último error es porque no nay nada enchufado al depurador.



Fuentes:
  1. Instalación mspdebug-0.20:
    http://energy.eecs.umich.edu/wiki/doku.php?id=msp430:mspgcc:start
  2. msdebug-0.21:
    http://richardnaud.wordpress.com/2013/10/02/installation-of-eclipse-cdt-msp430-gcc-4-7-0-mspdebug-0-21-and-more-on-ubuntu/
  3. https://rtime.felk.cvut.cz/hw/index.php/MSP430F5529_Launchpad