MSP430 eclipse helios mspgcc4 gdb-proxy

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
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

  • 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

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

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

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

  • 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

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

  • 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

  • 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

  • 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

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

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

  • 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

  • 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

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

  • 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

[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

Weblinks