Eclipse und MSPGCC unter Windows
Einleitung
Die Zusammenstellung eines freien Entwicklungs- und Debugging-Pakets für Mikrocontroller der MSP430 Reihe ist zum jetzigen Zeitpunkt, 03/2009, nicht ganz einfach. Es existieren mehrere Möglichkeiten des Aufbaus der Werkzeugkette, perfekt ist aber keine. Über diesen Link findet man eine gute englischsprachige Beschreibung unter Verwendung von Eclipse, Zylin Embedded CDT, MSPGCC und MinGW.
Im Unterschied dazu beruht die hier beschriebene Kombination auf Eclipse, einem Plugin zur Parametrierung (net.sf.mspgcc.zip) und MSPGCC. Zwischen PC und Zielsystem wird der Olimex Parallelport-Adapter ‚MSP430-JTAG’ verwendet. Hinweise zur Nutzung des USB-Adapters ‚MSP430-JTAG-TINY’ findet man hier.
Download
Folgende Software-Komponenten sind für die Installation notwendig und über nachfolge Links verfügbar:
- ‚mspgcc-win32’ in der veralteten Version mspgcc-20060502.exe
- ‚mspgcc-win32’ in der aktuellen Version mspgcc-????????.exe
- Eclipse Package ‚Eclipse IDE for C/C++ Developers’ (Windows)
- Plugin für Eclipse zur Parametrierung von MSPGCC (net.sf.mspgcc.zip)
- MSP430.Test.zip mit gdb-target.ini, main.c und main.cpp
Installation
Die nachfolgenden Bilder zeigen als Laufwerk oftmals D:. Diese Bezeichnung muss entsprechend ihren lokalen Verhältnisse anpasst werden (C:).
Parallelport-Adapter ‚MSP430-JTAG’
Der Systemservice-Treiber GiveIO für diesen Adapter ist im MSPGCC Setup enthalten und wird dort automatisch mit installiert. Er bewerkstelligt die Hardware-Ansteuerung der PC-Parallelschnittstelle.
GNU C-Compiler für MSP430
Zuerst müssen wir die alte Version mspgcc-20060502.exe vollständig installieren. Bei der Installation sollte der Pfad auf C:\Programme\mspgcc geändert werden. Ist dieses erledigt kopieren wir die Datei C:\Programme\mspgcc\bin\msp430-gdbproxy.exe an einen sicheren Platz und deinstallieren nachfolgend das ganze MSPGCC Paket wieder.
Als nächstes installieren wir in gleicher Weise die aktuelle Version des MSPGCC. Da die jetzt installierte neue Datei C:\Programme\mspgcc\bin\msp430-gdbproxy.exe kein richtig funktionierendes Debugging zulässt überschreiben wir sie mit der vorher gesicherten alten Version.
Eclipse IDE und Plugin
Von den vorbereiteten ‚Eclipse Packages’ das Paket ‚Eclipse IDE for C/C++ Developers’ (Windows) downloaden. Den Inhalt der zip-Datei nach C:\Programme extrahieren. Es entsteht der neue Ordner C:\Programme\eclipse.
Die Spezialisierung der IDE Eclipse auf MSPGCC erfolgt mittels Plugins. Den Inhalt der Datei net.sf.mspgcc.zip in den Ordner C:\Programme\eclipse extrahieren. Der Inhalt des ‚plugins’ Ordners der zip-Datei wird dabei nach C:\Programme\eclipse\plugins kopiert und vereinigt sich mit diesem.
Jetzt sind alle notwendigen Programme installiert, aber vor dem ersten Start von Eclipse ist noch etwas Feinarbeit zu leisten. Zuerst legen wir in unserem Arbeitsbereich auf der Festplatte einen neuen Ordner zur Aufnahme der Eclipse Konfigurationsdaten und aller zukünftigen MSP430 Entwicklungsprojekte an. Zusätzlich einen Ordner für unser erstes Test-Projekt. Die Namen der zwei Ordner sind frei und nachfolgendes ist nur ein Beispiel:
- …\Dateien von User\MSP430
- …\Dateien von User\MSP430\Test
Aus der Datei ‚MSP430.Test.zip’ kopieren wir gdb-target.ini nach …\MSP430 und main.c oder main.cpp nach …\MSP430\Test. Die Auswahl der main Datei richtet sich danach, ob wir in C oder C++ programmieren wollen.
Nun können wir das Programm C:\Programme\eclipse\eclipse.exe erstmalig starten. Sollte eine Fehlermeldung das ‚Java SE Runtime Environment (JRE)’ verlangen, dann dieses zusätzlich downloaden und installieren. Eclipse möchte nach dem ersten Start sofort eine Ordner zum speichern der Konfiguration und zukünftiger Projekte anlegen. Ändern sie den vorgeschlagenen Pfad so, dass er auf unseren neuen Ordner ‚…\MSP430’ zeigt.
Konfiguration
Zur Konfiguration der Eclipse IDE gehören persönliche Einstellungen, der Debugger Proxy als Bindeglied zur Adapter-Hardware und der Debugger selbst.
Konfiguration General
Als erste Konfiguration ist es vorteilhaft die IDE über ‚Window – Preferences’ an persönliche Vorlieben anzupassen. Unter ‚General – Keys’ ist das die Festlegung von Kurzwahltasten, unter ‚General – Workspace’ das automatische Kompilieren bzw. Speichern und unter ‚C/C++ - Code Style’ das Profil zur automatischen Formatierung des C-Quelltexts.
Konfiguration Debugger Proxy
Im nächsten Schritt parametrieren und starten wir über ‚Run – External Tools – External Tools Configuratations…’ den MSP430-GDBProxy. Gleichzeitig wird dadurch ein neuer Menüeintrag erzeugt worüber dieses Hintergrund-Programm späterhin, jeweils einmalig vor jeder Sitzung, gestartet wird.
- MSP430-GDBProxy
- Argumente für Parallel Adapter: --port=3333 msp430
- Argumente für USB Adapter: --port=3333 msp430 TIUSB
- Argumente für USB (Spy-Bi-Wire): --port=3333 msp430 --spy-bi-wire TIUSB
Konfiguration Debugger
Die IDE Eclipse ist so strukturiert, dass man für jedes Projekt die Konfiguration des Debuggers neu vornehmen muss. Um das zu vereinfachen legen wir ein Debugger-Template an von dem wir später, für jedes neue Projekt, ein Duplikat erzeugen. Das offene Feld ‚Project’ wird später im Duplikat ausgefüllt.
- Debug/Executable.elf
- msp430-gdb
- gdb-target.ini
- 3333
Erstes Projekt
Jetzt ist es an der Zeit das erste Test-Projekt zu konfigurieren. Der Projekttyp sollte dem Typ der main Datei entsprechen und der Projektname so lauten wie der Projektordner. Günstig ist es, entgegen dem hier gezeigten Vorgehen, die Konfigurationen Debug und Release gleichzeitig anzulegen. Dieses ist aber auch nachträglich möglich. Die detaillierten Einstellungen zum Kompilieren und Linken werden nach Betätigen von ‚Advanced settings…’ festgelegt.
Nachfolgende Einstellungen sind für C und C++ Projekte identisch. Ab dem nächsten Abschnitt folgen dann die Spezialitäten für C und C++.
- Der interne Builder ist schneller, erzeugt weniger Zwischendateien und die Consolen-Ausgabe ist kompakter.
- C Projekt: msp430-gcc
- C++ Projekt: msp430-g++
- Verwendeten Controllertyp eintragen. Bezeichnungen sind in mspgcc-manual.pdf, Abschnitt Compiler options, aufgeführt.
- msp430x????
- Der Post-build Step dient zur Anzeige der Binärcode Größe:
- msp430-size --format=sysv --radix=16 --target=elf32-msp430 Executable.elf
- Die Artefact Bezeichnung ist gleich der Einstellung im Debugger Template:
- Executable
- elf
C Projekt
Die jetzt folgenden Einstellungen gelten nur für C Projekte. Alle speziellen Konfigurationen für C++ Projekte befinden sich einen Abschnitt tiefer.
- Diese Flags sind nicht notwendig aber empfehlenswert:
- -fshort-enums -fsigned-char -mendup-at=main
- Verwendeten Controllertyp eintragen. Bezeichnungen sind in mspgcc-manual.pdf, Abschnitt Compiler options, aufgeführt.
- msp430x????
- Es schadet nichts dem Linker die Mathematik-Library mit den Gleitkomma-Funktionen bekannt zu machen.
C++ Projekt
Die jetzt folgenden Einstellungen gelten nur für C++ Projekte. Alle speziellen Konfigurationen für C Projekte befinden sich einen Abschnitt höher.
- Diese Flags sind nicht notwendig aber empfehlenswert:
- -fshort-enums -fsigned-char -mendup-at=main -fno-rtti
- Verwendeten Controllertyp eintragen. Bezeichnungen sind in mspgcc-manual.pdf, Abschnitt Compiler options, aufgeführt.
- msp430x????
- Weil der MSPGCC keine C++ Standardlibrary beinhaltet, der Linker diese aber laden will, müssen wir das unterbinden.
- Da die C++ Standardlibrary nicht existiert linken wir mit den C Librarys. ‚gcc’ muss als Letztes stehen.
- Verwendeten Controllertyp eintragen. Bezeichnungen sind in mspgcc-manual.pdf, Abschnitt Compiler options, aufgeführt.
- -mmcu=msp430x????
Kompilieren
Auch wenn dem Test-Projekt noch keine Debugger-Konfiguration zugewiesen ist, können wir jetzt den ersten Build-Vorgang starten.
Nach Durchlauf ist das untere Eclipse-Fenster ‚Console’ interessant. Es zeigt eventuelle Fehlermeldungen von Compiler oder Linker. Ist kein Fehler aufgetreten, so hat der Linker die Datei …\Test\Debug\Executable.elf erzeugt.
Debugging
Zunächst öffnen wir durch Doppelklick die Datei main.c oder main.cpp und wechseln zusätzlich in die andere Eclipse Ansicht ‚Debug Perspective’. Links oben im Fenster Debug sollte die Bestätigung des aktiven Debugger Proxy msp430-gdb sichtbar sein. Wenn nicht starten wir ihn über das Menü ‚Run – External Tools – MSP430-GDB-Proxy’.
Vor dem Debugging muss unserem Projekt nun einmalig die Debugger Konfiguration zugewiesen werden. Dazu duplizieren wir das bereits angelegte Debug Template, vergeben einen Namen für die Kopie und weisen der Kopie das Projekt Test zu.
Danach drücken wir ‚Debug’ und beobachten in den Fenstern Debug und Console wie Eclipse unser Anwenderprogramm auf das Zielsystem lädt und die Debugging Sitzung eröffnet. Der Programmlauf stoppt selbsttätig am Beginn der Funktion main() und wir sehen die erste Programmzeile von main() markiert.
Der eigentliche Debugging Vorgang entspricht nun dem Üblichen und interessant ist mehr was nicht funktioniert.
Zunächst ist das der Befehl ‚Step over’. Er wird immer als ‚Step into’ ausgeführt. Um langwieriges Durchsteppen von Funktionsaufrufen zu vermeiden muss man deshalb den Befehl ‚Run to Line’ benutzen.
Im Weiteren funktioniert der Befehl ‚Restart’ nicht. Es ist also notwendig mit ‚Terminate’ zu beenden und danach eine neue Debugging Sitzung zu beginnen.