Version: 21 July 2010
Author: Lukas Simma (Inexess Technology Simma KG)
Co-Author: Norbert Kleber (Sensing Solutions)
Update von: Thomas Martitz (HTW Berlin; Fraunhofer Heinrich-Hertz Institut)
Info: Bitte Artikel verbessern wenn gewünscht
Eclipse: Basisversion 3.7 (Indigo), CDT-Version (C/C++) 8.0.2 (Mai 2012), GDB Hardware Debugging 7.0 (Mai 2012)
Toolchain: mspgcc
Debugger: Eclipse via mspdebug (hil.dll und MSP430.dll/libmsp430.so Version 3.2.3.15 (Mai 2012) ODER msp-gdbproxy (hil.dll und msp430.dll von Mai 2010))
Hardware: TI MSP-FET430
Olimex MSP430-JTAG-ISO
TI Experimentersboard mit MSP430FG4618 und MSP430F2013 (SBW)
- Zuerst etwas Motivation für die Mühe der Einstellungen
- So schaut bei mir nun das Debuggen des MSP430FG4168 aus :-)
- Debuggen ist nun angenehm und bisher stabil (viiiel besser als mit dem Insight)
[Bearbeiten] MSPGCC installieren
MSPGCC ist die aktuell geflegte Compiler-Suite. Die Projekt-Homepage ist hier.
Auf der Projektseite gibt es den Quellcode zum Selbstcompilieren zum Herunterladen. Vorcompilierte Pakete gibt es allerdings für
Windows, Debian/Ubuntu Linux via
sudo apt-get install binutils-msp430 gcc-msp430 msp430-libc gdb-msp430 msp430mcu
Zur Installation genügt das entzippen in einen beliebigen Ordner, z.B. C:\MSP430\mspgcc
[Bearbeiten] mspdebug installieren
Beachte: Falls du Probleme mit mspdebug hast ist im nächsten Kapitel noch die Benutzung des (veralteten) msp430-gdbproxy beschrieben. Beide Programme bilden die Brücke für msp430-gdb zum Board, also immer nur eins gleichzeitig betreiben.
mspdebug ist ein Program, dass als gdbserver fungiert und die Schnittstelle für msp430-gdb zum Board (bzw. MSP-FET430UI) darstellt.
Eine Anleitung zum Kompilieren unter Windows gibt es
hier. Für Ubuntu/Debian gibt es vorcompilierte Pakete:
sudo apt-get install mspdebug
Um auch die neusten Mikrocontroller der MSP430-Reihe zu unterstützen muss MSP4300.dll (bzw. libmsp430.so unter Linux) verwendet werden (3.2.3.15 zur Zeit des Schreibens).
[Bearbeiten] msp430-gdbproxy installieren
msp430-gdbproxy ist der Softwareteil des GDB-Servers zum Debuggen und Flashen. Als Hardwareteil wird bei mir der TI MSP-FET430UIF für Programmdownload und Debugging verwendet. Weiters wurde die Verwendung des Olimex JTAG ISO getestet.
- msp430-gdbproxy.exe, msp430.dll und hil.dll werden noch benötigt
- Heruntenladen als vorbereitetes ZIP file
- Extrahieren nach L:\Programme\MSP430\MSPGCC4\bin
[Bearbeiten] Test ob der gdbproxy klappt
- Prüfen ob der msp430-gdbproxy den Controller (bei mir der MSP430FG4618 auf dem TI Experimentierboard) erkennt
- Eingabeaufforderung öffnen und wechseln nach L:\Programme\MSP430\MSPGCC4\bin
- Ausführen von msp430-gdbproxy.exe msp430 TIUSB oder msp430-gdbproxy.exe msp430 --spy-bi-wire TIUSB
- Achtung! Bei Olimex JTAG funktionieren die SBW Controller nur dann wenn auch ein angepasstes Kabel wie in den beiden Bildern ersichtlich, verwendet wird! Dabei müssen die Pins 1 mit 11 und 7 mit 8 getauscht werden
Weitere Informationen:
[Bearbeiten] Linux USB Treiber für MSP-FET430UI
Distributions-Kernel bringen in aller Regel die benötigten Treiber schon mit, sodass der FET von Haus aus funktioniert. Falls nicht, dann benötigt man das cdc_acm und ti_usb_3410_5052 Kernel-Module.
[Bearbeiten] Windows USB Treiber für MSP-FET430UI installieren
- Nach Installation ist der VirtualComPort Treiber zu installieren
- Dieser wurde in den Ordner C:\Programme\Texas Instruments Inc\TUSB3410 Single Driver Installer\DISK1 ausgepackt, die Setup.exe ausführen
[Bearbeiten] Windows USB Treiber für Olimex JTAG ISO installieren
- Nach Installation der Hardware am USB-Port wird nach dem Treiber gefragt welcher im Entpackten Verzeichnis liegt. Hier wird auch ein VirtualComPort erzeugt.
- Wenn alle Treiber installiert sind dann müssen noch die folgenden Dateien in das MSPGCC4\bin (L:\Programme\MSP430\MSPGCC4\bin) Verzeichnis kopiert werden: msp430.dll, hil.dll, SiUSBXp.dll die Olimex.dll und FTD2xx.dll sind ev. nötig allerdings läuft es bei mir auch ohne diese 2 Dateien. Ggf vorher von den bereits vorhandenen Dateien eine Sicherungskopie machen damit auch mehrere Configs möglich sind. Nun geht es wieder unabhängig des Adapters weiter...
[Bearbeiten] MSP-FET430UIF und Olimex JTAG ISO Firmware updaten
- Die msp430.dll muss mit der Firmware im MSP-FET430UIF / Olimex JTAG ISO Programmer zusammenpassen
- Die msp430.dll enthält einen Updatecode, am besten das Update zuerst durchführen
cd L:\Programme\MSP430\mspdebug
mspdebug --allow-fw-update tilib
cd L:\Programme\MSP430\MSPGCC4\bin
msp430-gdbproxy msp430 --update-usb-fet TIUSB
[Bearbeiten] Eclipse 3.7 (Indigo) mit CDT (C/C++) installieren, einrichten und testen
Falls noch nicht installiert, zuerst Java Version 7 herunterladen und installieren, z.b. von der java.com Downloadseite (Windows 7/XP/Vista/2000/2003/2008 Offline). Die Java Laufzeitumgebung (Runtime) ist übrigens nicht ausreichend.
Eclipse kann über http://www.eclipse.org/downloads/ bezogen werden.
Benötig wird mindestens Eclipse IDE for C/C++ Developers. Eclipse benötigt keine Installation, auspacken z.b. nach L:\Programme\MSP430\eclipse genügt. Falls Eclipse für Java (oder sonstige) bereits installiert ist, kann das C/C++ Plugin nachträglich installiert werden.
Zusätzlich werden noch die GDB Hardware Debugging und und GCC Cross Compiler Support Plugins benötigt. Plugins können.
[Bearbeiten] Eclipse starten, generelle Plugins und Einstellung für alle Toolchains
Plugins können in Eclipse über Help -> Install New Software installiert werden. Unter Work With bitte Indigo - http://download.eclipse.org/releases/indigo auswählen, dann taucht eine Liste mit installierbaren Plugins auf.
Folgende Plugins werden gebraucht:
- Mobile and Device Development
- C/C++ GCC Cross Compiler Support
- C/C++ GDB Hardware Debugging
- Programming Languages
- C/C++ Development Tools
- C/C++ Development Tools SDK
[Bearbeiten] Projekt erstellen, Toolchain für MSP430 einrichten
- Aus Menüleiste File -> New --> C Projekt
- Projektname eingeben (Auswahl kontrollieren)
- Ein Cross-Compile Project mit Cross-GCC Toolchain auswähren.
- Im folgenden Fenster wird die Toolchain konfiguriert.
- Tool command prefix: msp430-
- Tool command path: C:\MSP430\mspgcc\bin [Der bin Unterordner in dem Verzeichnis wo mspgcc installiert wurde. Leer lassen falls über PATH-Variable erreichbar]
- Im folgenden Dialog Advanced Settings anklicken. Unter C/C++ Build -> Settings muss die Toolchain noch etwas konfiguriert werden. Es wird der genaue Mikrocontroller spezifiziert werden. Der ist von eurer Zielplatform abhängig, als Beispiel soll der CC430F6137 dienen
- Als erstes sollte man Configurations auf All Configurations ändern, da man sonst die Änderungen für Debug und Release doppelt macht.
- -mmcu=cc430f6137 muss zu den folgenden Feldern hinzugefügt werden
- Cross GCC Compiler -> Miscellaneous -> Other Flags
- Cross GCC Linker -> Miscellaneous -> Linker Flags
- Cross GCC Assembler -> General -> Assembler Flags
- Wichtig: Den Text cc430f6137 durch den Namen deines eigenen Microcontrolellers ersetzten. Der korrekte Name muss mit einen Headerfile in L:\Programme\MSP430\MSPGCC4\msp430\include zusammenpassen.
[Bearbeiten] Im Projekt ein C-File erstellen und elf file für den MSP430 compilen
- Kleines C-File zum testen des Toolchain erstellen
- Projektname rechtsklicken -> New -> Source File
- Compilieren und Linken
- mit 'Projekt -> Build Project
- oder mit Ctrl+B
- oder mit Projektname rechtsklicken -> Build Projekt
- Prüfe die Textausgabe in der Console dass msp430-gcc zum compilieren und linken verwendet wird (links im Bild)
/*
* main.c
*
* Created on: 08.05.2012
* Author: kugel
*/
#include <msp430.h>
/*
* Wenn ein Symbol __CC430F5137__ definiert ist muss der prozessorspezifische
* Header cc430f5137.h nich manuell eingebunden werden. Es reicht dann msp430.h
* einzubinden.
*/
#include <cc430f5137.h>
int main() //main-Funktion
{
unsigned int i=25001; //Zählveriable
unsigned int j=0;
WDTCTL = WDTPW + WDTHOLD; //Watchdog Timer deaktivieren
P2DIR=(1<<1); //Den Pin 1 an Port 2 als ausgang schalten
//gilt für das Textdisplay, beim Grafikdisplay
//entsprechend an Pin 3, 4 oder 5 anpassen
P2OUT |= (1<<1); //Licht an
while(1)
{
while(i--) {
j++; //warten
}
i=25000; //Zähler neu laden
P2OUT^=(1<<1); //Beleuchtung "Togglen"
}
} |
[Bearbeiten] Debuggen mit Eclipse eigenem Debugger via mspdebug bzw. msp430-gdbproxy
Das Eclipse mit "GDB Hardware Debugging" bringt einen integrierten, komfortablen Debugger mit. Der funktioniert gleichermaßen mit mspdebug und msp430-gdbproxy.
Dieser Debugger kann über die das gdb remote interface mit einem gdbserver zusammenarbeiten. Der Server wird mspdebug bzw. msp430-gdbproxy implementiert und ist daher virtuell zu sehen.
Mit den nachfolgenden Settings kann der Eclipse-interne debugger für das Debugging des MSP430 verwendet werden. Um zu debuggen muss dann nur auf den Debug Button (der mit dem Käfer Symbol) im Hauptfenster geklickt werden (
- Als erstes sicherstellen, dass die C/C++ Perspective (kann man oben rechts im Hauptfenster sehen) aktiv ist.
- Im Project Explorer auf das Projekt rechtsklicken und Debug As -> Debug Configurations... klicken
- Im folgenden Dialog GDB Hardware Debugging rechtsklicken und New klicken
- Im Debugger Tab den Pfad zu msp430-gdb eintragen (z.B. C:\MSP430\mspgcc\bin\msp430-gdb). Use remote target muss aktiviert sein und als JTAG device Generic TCP/IP ausgewählt werden. Als Host name or IP address und Port ist localhost bzw. 2000 einzutragen (die Port Nummer kann wird durch mspdebug festgelegt).
- Im Startup Tab ist in das freie Feld bei Initialization Commands monitor erase einzutragen
- Der Dialog kann nun beendet werden. Dafür erst auf Apply, dann Done klicken
- Starte zuerst mspdebug (bzw msp430-gdbproxy) in einer Windows Eingabeaufforderung
- Eingabeaufforderung öffnen und in den Programmordner von mspdebug wechseln (z.B. cd C:\Programme\mspdebug)
- Ausführen von mspdebug tilib gdb (bzw msp430-gdbproxy.exe msp430 TIUSB), eventuell sind Admin-Rechte notwendig. Die Programme sollten dann melden, dass sie auf TCP Port 2000 warten.
- Nachtrag (all): der port kann auch mit @mspdebug <driver> "gdb 2000"@ eingestellt werden: ACHTUNG: die " sind drigend nötig! (@ markiert Anfang und Ende also weglassen..) Allgemein zu mspdebug alle weiteren parameter eines commandos müssen mit " mit dem Befehl verheirratet werden: Beispiele: @mspdebug rf2500 "prog abc.hex"@.
- Nachtrag (all): Der gdb-server kann auch in einer "Dauerschleife" gestartet werden (nach disconnect wartet er auf neuen connect) mit @mspdebug <driver> "opt gdb_loop true" "gdb <port>"@
- Debugger in Eclipse mit den neu erstellten Eintrag starten (Käfer-Button klicken)
- Hinweis: Eventuell muss man neben dem Käfersymbol auf den Pfeil klicken um an die Liste zu kommen, die den erstellten Eintrag enthält.
- Nun sollte sich Eclipse mit dem Debugger verbinden und automatisch die Debug Perspective aktivieren.
- Weitere Views öffnen, Menüleiste -> Window -> Show View
- Mehr Möglichkeiten unter Menüleiste -> Run
Das wars :-)
Hoffe diese Anleitung ist euch nützlich
Wer die Anleitung verbessern kann der soll es bitte machen
Beste Grüße,
Lukas Simma (Inexess Technology Simma KG)
[15.12.2012 - all]
Unter Linux verlangt GDB nach einer crt0.S die nich gefunden wurde:
- crt0.S befindet sich in den sourcen von mspgcc
- Downloaden + in ein Verzeichnis legen das dann gdb bekannt gemacht wird.
siehe auch: http://www.indigresso.com/wiki/doku.php?id=opentag:tools:eclipse_mspgcc