MSP430 eclipse helios mspgcc4 gdb-proxy

Wechseln zu: Navigation, Suche
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)

Motivation[Bearbeiten]

  • 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)

Msp430 eclipse motivation.jpg

MSPGCC installieren[Bearbeiten]

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

mspdebug installieren[Bearbeiten]

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).

msp430-gdbproxy installieren[Bearbeiten]

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.

Msp-fet430uif.jpg

  • msp430-gdbproxy.exe, msp430.dll und hil.dll werden noch benötigt
  • Heruntenladen als vorbereitetes ZIP file
  • Extrahieren nach L:\Programme\MSP430\MSPGCC4\bin

Test ob der gdbproxy klappt[Bearbeiten]

  • Prüfen ob der msp430-gdbproxy den Controller (bei mir der MSP430FG4618 auf dem TI Experimentierboard) erkennt
  • Hardware anstecken
  • 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

Kabel1.jpg Kabel2.jpg

  • Consoleoutput prüfen

msp430-gdbproxy.exe msp430 TIUSB

Weitere Informationen:

Linux USB Treiber für MSP-FET430UI[Bearbeiten]

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.

Windows USB Treiber für MSP-FET430UI installieren[Bearbeiten]

  • 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

Windows USB Treiber für Olimex JTAG ISO installieren[Bearbeiten]

  • 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...

MSP-FET430UIF und Olimex JTAG ISO Firmware updaten[Bearbeiten]

  • 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
  • via mspdebug:
cd L:\Programme\MSP430\mspdebug
mspdebug --allow-fw-update tilib
  • via msp430-gdbproxy:
cd L:\Programme\MSP430\MSPGCC4\bin
msp430-gdbproxy msp430 --update-usb-fet TIUSB


Eclipse 3.7 (Indigo) mit CDT (C/C++) installieren, einrichten und testen[Bearbeiten]

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.

Eclipse starten, generelle Plugins und Einstellung für alle Toolchains[Bearbeiten]

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

Projekt erstellen, Toolchain für MSP430 einrichten[Bearbeiten]

  • Aus Menüleiste File -> New --> C Projekt
  • Projektname eingeben (Auswahl kontrollieren)
  • Ein Cross-Compile Project mit Cross-GCC Toolchain auswähren.
  • Auf Next klicken.

New-project.png

  • 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]
  • Auf Next klicken

New-project2.png

  • 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.

New-project3.png Advanced-settings1.png Advanced-settings2.png Advanced-settings3.png

Im Projekt ein C-File erstellen und elf file für den MSP430 compilen[Bearbeiten]

  • 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"
	}
}


Test-project.jpg

Debuggen mit Eclipse eigenem Debugger via mspdebug bzw. msp430-gdbproxy[Bearbeiten]

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

Debug-as.png Debug-new1.png Debug-new2.png Debug-new3.png

Debuggen[Bearbeiten]

  • 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.

Debug-button.png Perspective-switch.png Debug-view.png

  • Weitere Views öffnen, Menüleiste -> Window -> Show View
  • Mehr Möglichkeiten unter Menüleiste -> Run

Msp430 eclipse gdbproxy debugging 11.jpg

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)

Problembehandlung[Bearbeiten]

[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



Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]