Table of Contents

First Steps

Damit es losgehen kann, brauchst Du als erstes den Sourcecode der Formica Firmware.

cd /pfad/zu/meinem/projekt
git clone https://github.com/muccc/formica_rev1_muc.git

Wenn die Toolchain wie oben beschrieben installiert ist, solltest Du die Firmware compilieren können. Als Resultat erhältst Du ein File mit dem Namen formica.elf.

make

Als nächstes wird die Firmware auf die Formica programmiert. Dafür benötigt man eigentlich nur mspdebug. Damit wir danach gleich mit dem Debuggen loslegen können, werden wir aber gleich msp430-gdb mitstarten. Dar wird uns ermöglichen komfortabel Breakpoints zu setzen, Schritt für Schritt durch das Programm zu steppen und den Inhalt von Variablen anzuzeigen und zu beobachten.

Ist die Formica über das ez430 Tool angeschlossen, kann man mit mspdebug eine Verbindung herstellen. Auch mit mspdebug kann man Peorgramme debuggen, jedoch nur auf Assamblerebene. Um den viel komfortableren gdb Debugger nutzen zu können, kann man über mspdebug einen Server starten, mit dem man sich von msp430-gdb aus verbinden kann.

mspdebug uif
(mspdebug) gdb
Bound to port 2000. Now waiting for connection...

Fürs Debugging starten wir in einem zweiten Temrinalfenster nun msp430-gdb.

msp430-gdb

(gdb) target remote localhost:2000 

Als nächstes soll die vorher Kompilierte Firmware aus den Controller der Formica geflasht werden. Das machst Du am besten auch über gdb. Genau genommen machst Du es über mspdebug. Das lässt sich aber direkt aus gdb fernsteuern. Alle Anweisungen denen der Befehlt monitor oder kurz mon vorangestellt wird werden direkt an mspdebug übergeben.

(gdb) mon prog formica.elf                                            

Damit man vernünftig mit Source Code Unterstützung Debuggen kann, müssen nach jedem Flashen die Debugsymbole aus dem .elf File neu geladen werden. Darüber kann gdb Funktions- und Variablennamen den richtigen Speicheradressen zuordnen.

(gdb) symbol-file formica.elf 

Fertig ist die Debugumgebung.

Hier noch die wichtigsten gdb Befehle:

Befehl Funktion
mon $Befehle Alle nachfolgenden Befehle werden an mspdebug übergeben
symbol-file $filename Lädt Debug Symbole
break $Name Setzt Beakpoint auf Variable oder Funktion mit $Namen oder auf Source Code Zeile (z.B. main.c:75)
info break Zeigt alle gesetzten Breakpoints an.
cont Programm läuft weiter (bis zum nächsten Breakpoint)
next Single Step over
step Single Step into
print $Name gibt Variableninhalt aus
list zeigt Source Code im im aktuellen Bereich an