<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spischel</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spischel"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Spischel"/>
	<updated>2026-04-07T01:01:44Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Benutzer:Spischel&amp;diff=43027</id>
		<title>Benutzer:Spischel</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Benutzer:Spischel&amp;diff=43027"/>
		<updated>2010-02-08T19:01:58Z</updated>

		<summary type="html">&lt;p&gt;Spischel: Die Seite wurde neu angelegt: „Student, Hobbybastler und -programmierer, Seit 2003 Erfahrungen mit AVRs, seit 2009 Erfahrungen mit WINAVR, gerade (2/2010) MSPGCC begonnen“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Student, Hobbybastler und -programmierer, Seit 2003 Erfahrungen mit AVRs, seit 2009 Erfahrungen mit WINAVR, gerade (2/2010) MSPGCC begonnen&lt;/div&gt;</summary>
		<author><name>Spischel</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=MSPGCC&amp;diff=42971</id>
		<title>MSPGCC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=MSPGCC&amp;diff=42971"/>
		<updated>2010-02-07T22:00:17Z</updated>

		<summary type="html">&lt;p&gt;Spischel: /* Installationsanleitung für Unix/Linux/Cygwin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MSPGCC ist ein kostenloser, unbeschränkter [[C]]-[[Compiler]] für die [[MSP430]]-[[Mikrocontroller]] von [[TI]]. Die Portierung auf MSP430 wurde von Chris Liechti und Dmitry Diky durchgeführt.&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
* [http://mspgcc.sourceforge.net/manual/ MSPGCC Manual]&lt;br /&gt;
* [http://mspgcc.sourceforge.net/faq/ FAQ]&lt;br /&gt;
&lt;br /&gt;
== Beispielprogramme ==&lt;br /&gt;
&lt;br /&gt;
Für MSPGCC sind umfangreiche Beispielprogramme ([[LCD]]-Ansteuerung, TCP/IP, ...) verfügbar, außerdem wurden alle TI-Appnotes (C und Assembler) von Steve Underwood für MSPGCC angepasst.&lt;br /&gt;
&lt;br /&gt;
* [http://mspgcc.cvs.sourceforge.net/mspgcc/examples/ MSPGCC Beispiele &amp;amp; Appnotes]&lt;br /&gt;
&lt;br /&gt;
== Windows-Version ==&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=42303&amp;amp;package_id=68584 MSPGCC Komplettpaket]&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Eclipse_und_MSPGCC_unter_Windows Eclipse und MSPGCC unter Windows] (03/2009)&lt;br /&gt;
* [http://matthias-hartmann.blogspot.com/ Use Eclipse and mspgcc - the easy way] (Windows 02/2009).&lt;br /&gt;
* [http://www.mikrocontroller.net/Eclipse%20und%20MSPGCC/ ausführliche Anleitung zur Verwendung von Eclipse mit MSPGCC unter Windows] (03/2006)&lt;br /&gt;
&lt;br /&gt;
== Installationsanleitung für Unix/Linux/Cygwin ==&lt;br /&gt;
man kann nach wie vor Schritt für Schritt über die Kommandozeile gehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ su&lt;br /&gt;
 &lt;br /&gt;
  $ mkdir /tmp/mspgcc&lt;br /&gt;
  $ cd /tmp/mspgcc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Oder die Installationsanleitung im MSPGCC-Wiki nutzen:&lt;br /&gt;
[http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Linux_installation#Get_the_Sources_and_build_the_Package]&lt;br /&gt;
&lt;br /&gt;
Dabei gibt es zwei Fallstricke:&lt;br /&gt;
&lt;br /&gt;
1.: Das Beispiel geht davon aus, dass GCC 3.4 installiert ist. Diese Version ist relativ alt und behandelt Compilerwarnungen etwas nachsichtiger. Wer eine neuere oder andere Version von GCC installiert hat, muss das im Make-Aufruf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
 cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co -P .&lt;br /&gt;
 cd packaging&lt;br /&gt;
 make folders&lt;br /&gt;
 CC=gcc-3.4 make build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vorangestellte &amp;quot;CC=gcc-3.4&amp;quot; auf die installierte GCC-Version abändern, z.B. &amp;quot;CC=gcc-4.4&amp;quot;. Tut man das nicht, wird der vorhandene GCC-Compiler nicht gefunden und make liefert Fehler 77 zurück (Compiler kann keine ausführbare Dateien erstellen).&lt;br /&gt;
&lt;br /&gt;
2.: Das verlinkte Package lädt sich (eventuell nur im Moment, 7.2.2010) die binutils-2.18 per Ftp herunter. Einige der Quelldateien produzieren bei GCC Versionen ab 4.X Warnungen, die durch den Compilerschalter -Werror als Fehler behandelt und zum Abbruch des Compiliervorgangs führen.&lt;br /&gt;
Workaround: in der Datei /packaging/build/binutils-2.18/binutils/Makefile die Zeile&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CFLAGS = -g -O2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CFLAGS = -g -O2 -Wno-error&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
erweitern.&lt;br /&gt;
&lt;br /&gt;
Oder binutils-2.19 von Hand kompilieren und installieren, auch hier auf passende Angabe der GCC-Version achten.&lt;br /&gt;
[http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Building_MSPGCC_from_Source_Code]&lt;br /&gt;
Achtung: in der aktuellen Version heißt die benötigte Datei /package/patches/binutils-2.19.patch irrtümlicherweise binutils-2.19&#039;&#039;&#039;-&#039;&#039;&#039;patch (mit bindestrich statt Punkt).&lt;br /&gt;
&lt;br /&gt;
=== binutils ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ wget ftp://sources.redhat.com/pub/binutils/releases/binutils-2.17.tar.bz2&lt;br /&gt;
  $ tar xjvf binutils-2.17.tar.bz2&lt;br /&gt;
 &lt;br /&gt;
  $ cd binutils-2.17&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
 &lt;br /&gt;
  $ export PATH=/usr/local/msp430/bin:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Kommando wget setzt einen Internetzugang voraus.&lt;br /&gt;
&lt;br /&gt;
Hinweis2:&amp;lt;br&amp;gt; Die Version 2.14 enthält nicht alle Controllertypen. So fehlen zum Beispiel die Typen MSP430F1611 und MSP430F1612.&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Version 2.17 kann es zu fehlerhaften binarys kommen (Fehler: test.elf has no bss section)&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Version 2.16.1 sollte alles funktionieren.&lt;br /&gt;
&lt;br /&gt;
Hinweis3:&amp;lt;br&amp;gt;Ich versuche es mit 2.19.1, wenn ich auf Fehler stosse, dann berichte ich davon..&lt;br /&gt;
&lt;br /&gt;
=== gcc ===&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; MSPGCC kompiliert nicht gcc-4.1. Abhilfe schafft es zu Beginn (oder vor configure) den Befehl &amp;quot;export CC=gcc-3.3&amp;quot; bzw. &amp;quot;export CC=gcc-3.4&amp;quot; aufzurufen. Auch ist darauf zu achten die Dateien gcc-core-3.2.3 und gcc-g++.tar.bz2 und nicht etwa gcc-3.2.3 runterzuladen. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-3.2.3/gcc-core-3.2.3.tar.bz2&lt;br /&gt;
  $ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-3.2.3/gcc-g++-3.2.3.tar.bz2&lt;br /&gt;
  $ tar xjvf gcc-core-3.2.3.tar.bz2&lt;br /&gt;
  $ tar xjvf gcc-g++-3.2.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co gcc/gcc-3.3&lt;br /&gt;
  $ cp -r gcc/gcc-3.3/* gcc-3.2.3/&lt;br /&gt;
 &lt;br /&gt;
  $ cd gcc-3.2.3&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430 --enable-languages=c,c++&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== msp430-libc ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co msp430-libc&lt;br /&gt;
 &lt;br /&gt;
  $ cd msp430-libc/src&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ../..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gdb ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ wget http://mirrors.redwire.net/pub/sources.redhat.com/gdb/old-releases/gdb-6.0.tar.bz2&lt;br /&gt;
  $ tar xjvf gdb-6.0.tar.bz2&lt;br /&gt;
 &lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co gdb/gdb-current&lt;br /&gt;
  $ cp -r gdb/gdb-current/* gdb-6.0/&lt;br /&gt;
 &lt;br /&gt;
  $ cd gdb-6.0&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung: Der GDB kann nicht mit GCC 4.x übersetzt werden. Wenn dieser auf dem System standardmäßig installiert ist, kann man z.B. den GCC 3.4 zusätzlich installieren und dann vor der ./configure- Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ export CC=gcc-3.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfügen.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Bei Ubuntu (evtl auch bei anderen Distributionen) sind die Entwicklerdateien für die Library libtermcap im Paket libncurses5-dev&lt;br /&gt;
&lt;br /&gt;
=== JTAG ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co jtag&lt;br /&gt;
 &lt;br /&gt;
  $ cd jtag/hardware_access&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wer ein 64-Bit-Linux verwendet, muss im makefile die CFLAGS und die LNOPTS um ein -m32 ergänzen. Das sollte dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    CFLAGS  += -fPIC -m32&lt;br /&gt;
    LNOPTS   = -fPIC -shared -m32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiter geht&#039;s:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ make&lt;br /&gt;
  $ mv libHIL.so /usr/local/lib&lt;br /&gt;
  $ ldconfig&lt;br /&gt;
  $ cd ../..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gdbproxy ===&lt;br /&gt;
&lt;br /&gt;
Den msp430-gdbproxy und libMSP430.so von http://www.soft-switch.org/downloads/mspgcc herunterladen. Danach&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ chmod +x msp430-gdbproxy&lt;br /&gt;
  $ mv msp430-gdbproxy /usr/local/msp430/bin/&lt;br /&gt;
  $ mv libMSP430.so /usr/local/lib/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ausführen.&lt;br /&gt;
&lt;br /&gt;
=== Installations-Skript ===&lt;br /&gt;
&lt;br /&gt;
Für Installation/Update gibt es hier ein bash-Skript, das nach dem Starten (und einmal Return zum Downloaden der Sourcen aus dem CVS) das Installieren automatisch erledigt.&lt;br /&gt;
&lt;br /&gt;
Eingebaut sind auch die Anpassungen von ~/.profile und ~/.gdbinit, so dass man sofort loslegen und auch debuggen kann.&lt;br /&gt;
&lt;br /&gt;
* [http://www.true-random.com/files/mspgcc/build_mspgcc.sh Installations-Skript]&lt;br /&gt;
&lt;br /&gt;
Dieses Script ist jedoch relativ veraltet. Daher ist es schneller obige Anleitung per Copy&#039;n&#039;Paste in eine Shell zu übernehmen, als das Script zu verwenden. &lt;br /&gt;
&lt;br /&gt;
=== Gentoo Ebuilds ===&lt;br /&gt;
&lt;br /&gt;
Für Gentoo-Benutzer gibt es an der [http://www.informatik.uni-mannheim.de/pi4/lectures/ss2004/msp430/ Uni Mannheim] Ebuilds zum Download.&lt;br /&gt;
&lt;br /&gt;
=== .gdbinit ===&lt;br /&gt;
&lt;br /&gt;
Um das JTAG-Interface schneller zu machen kann man in ~/.gdbinit diese Werte eintragen:&lt;br /&gt;
&lt;br /&gt;
 set remoteaddresssize 16&lt;br /&gt;
 set remotetimeout 999999&lt;br /&gt;
 set download-write-size 512&lt;br /&gt;
 target remote localhost:2000&lt;br /&gt;
 set remote memory-write-packet-size 512&lt;br /&gt;
 set remote memory-write-packet-size fixed&lt;br /&gt;
 set remote memory-read-packet-size 512&lt;br /&gt;
 set remote memory-read-packet-size fixed&lt;br /&gt;
&lt;br /&gt;
Und vor dem Debuggen von Programmen auf dem Rechner (nicht MSP430) sollte man ~/.gdbinit umbenennen, beispielsweise in ~/.gdbinit_msp430.&lt;br /&gt;
&lt;br /&gt;
== Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
Um msp430-gcc unter Mac OS X (Intel) kompilieren zu können, &lt;br /&gt;
gcc-3.2.3/gcc/config.gcc wie folgt aendern:&lt;br /&gt;
&lt;br /&gt;
Von&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd*aout* )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd*aout* | i[34567]86-apple-darwin8* )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ansonsten die Anleitung für Linux befolgen.&lt;br /&gt;
&lt;br /&gt;
== Einfaches Beispielprogramm ==&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
 #include &amp;lt;io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 void wait(void);         /* prototype for wait()      */&lt;br /&gt;
&lt;br /&gt;
 int&lt;br /&gt;
 main(void)&lt;br /&gt;
 { /* main function, called by startup-code */&lt;br /&gt;
   P1DIR = 0xFF;          /* port 1 = output           */&lt;br /&gt;
   P1OUT = 0x01;          /* set bit 0 in port 1       */&lt;br /&gt;
&lt;br /&gt;
   for(;;)&lt;br /&gt;
   { /* infinite loop */&lt;br /&gt;
     P1OUT = ~P1OUT;      /* invert port 1             */&lt;br /&gt;
     wait();              /* call delay function       */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void&lt;br /&gt;
 wait(void)&lt;br /&gt;
 { /* simple delay function */&lt;br /&gt;
   volatile int i;        /* declare i as volatile int */&lt;br /&gt;
   for(i = 0; i &amp;lt; 32000; i++)&lt;br /&gt;
   ;                      /* repeat 32000 times (nop)  */&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode für msp430x1121 kompilieren ===&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gcc -Os -mmcu=msp430x1121 -o test.elf test.c&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode für msp430x1121 kompilieren, wenn math.h includiert wird ===&lt;br /&gt;
&lt;br /&gt;
  msp430-gcc -Os -mmcu=msp430x1121 -o test.elf test.c -lm&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hierbei -lm als letzte Option.&lt;br /&gt;
&lt;br /&gt;
=== Assemblerlisting erzeugen (optional) ===&lt;br /&gt;
&lt;br /&gt;
  $ msp430-objdump -DS test.elf &amp;gt; test.lst&lt;br /&gt;
&lt;br /&gt;
=== Hex-Datei erzeugen ===&lt;br /&gt;
&lt;br /&gt;
  $ msp430-objcopy -O ihex test.elf test.hex&lt;br /&gt;
&lt;br /&gt;
Die Hex-Datei kann man mit C-Spy (im Kickstart-Paket enthalten) über das JTAG-Interface in den Controller programmieren. Nach einem Klick auf &amp;quot;Go&amp;quot; läuft das Programm los. Wenn 2 LEDs an P1.0 und P1.1 angeschlossen sind, sollten sie nun blinken.&lt;br /&gt;
&lt;br /&gt;
== In-System-Debugging mit GDB/Insight und dem Flash Emulation Tool (FET) ==&lt;br /&gt;
&lt;br /&gt;
Wie bei anderen MSP430-Compilern ist es möglich mspgcc-Programme direkt in der Schaltung zu debuggen. Alles was man dazu braucht, ist ein JTAG-Adapter, mdp430-gdbproxy, und gdb (im aktuellen Windows-Paket bereits enthalten).&lt;br /&gt;
&lt;br /&gt;
Um ein Programm mit GDB/Insight debuggen zu können, muss man die Option &amp;quot;-g&amp;quot; an den mspgcc-Aufruf anhängen:&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gcc -mmcu=msp430x123 -g -Os -o test.elf test.c&lt;br /&gt;
&lt;br /&gt;
Damit erhält man die Datei &amp;quot;test.elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== gdbproxy starten ===&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt ist das Programm gdbproxy zu starten, das für die Kommunikation zwischen GDB und dem FET zuständig ist:&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gdbproxy --port=2000 msp430&lt;br /&gt;
&lt;br /&gt;
Wenn das FET richtig an den Parallelport angeschlossen ist, sollte ungefähr der folgende Text angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
 info:      msp430: Target device is a &#039;MSP430F12x&#039; (type 11)&lt;br /&gt;
 notice:    msp430-gdbproxy: waiting on TCP port 2000&lt;br /&gt;
&lt;br /&gt;
Hinweis: Falls /dev/parport0 nicht existiert, was sich so äußert:&lt;br /&gt;
 open: No such file or directory&lt;br /&gt;
 error:     msp430: Could not initialize device interface (1)&lt;br /&gt;
...als root ...&lt;br /&gt;
 mknod /dev/parport0 c 99 0 &lt;br /&gt;
...eingeben.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Bei udev im neuen Linuxkernel ab 2.6.x wird das Device /dev/parport0 nicht automatisch angelegt und man muss jedesmal neu den Aufruf mit mknod machen. Abhilfe schafft hier der Eintrag in der /etc/modules:&lt;br /&gt;
ppdev&lt;br /&gt;
&lt;br /&gt;
Beim nächsten Booten dürfte der RAW-Parallelport vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
=== Insight benutzen (Windows) ===&lt;br /&gt;
&lt;br /&gt;
Nachdem Insight gestartet ist (c:\msp430\bin\msp430-gdb.exe), klicke auf &amp;quot;File-&amp;gt;Open&amp;quot; und wähle die elf-Datei (z.B. &amp;quot;test.elf&amp;quot;) aus, die du debuggen möchtest.&lt;br /&gt;
&lt;br /&gt;
Klicke dann auf &amp;quot;Run-&amp;gt;Connect to target&amp;quot; und stelle folgendes ein:&lt;br /&gt;
&lt;br /&gt;
  Target:                    &amp;quot;Remote/TCP&amp;quot;&lt;br /&gt;
  Hostname:                  &amp;quot;localhost&amp;quot;&lt;br /&gt;
  Port:                      &amp;quot;2000&amp;quot;&lt;br /&gt;
  Set breakpoint at &#039;main&#039;:  yes&lt;br /&gt;
  Set breakpoint at &#039;exit&#039;:  yes&lt;br /&gt;
  Attach to target:          yes&lt;br /&gt;
  Download Program:          yes&lt;br /&gt;
  Command  after attaching:  &amp;quot;monitor erase all&amp;quot; (ACHTUNG: Optional, damit wird der gesamte Flash-Inhalt gelöscht!)&lt;br /&gt;
  Run Method:                Continue from last Stop&lt;br /&gt;
&lt;br /&gt;
Wenn man auf &amp;quot;Ok&amp;quot; klickt, sollte Insight berichten, dass die Verbindung erfolgreich aufgenommen wurde, und gdbproxy sollte melden:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notice: msp430-gdbproxy: connected&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Um den Debugging-Vorgang zu starten, klicke auf &amp;quot;Run&amp;quot; oder drücke einfach die Taste &amp;quot;r&amp;quot;. Wenn alles geklappt hat, sollte nun der Sourcecode des Programmes angezeigt werden und die erste Zeile von main() grün markiert sein. Der rote Punkt ist der Breakpoint, der von Insight automatisch gesetzt wurde. Um selber Breakpoints zu setzen oder zu löschen, klicke auf den Strich &#039;-&#039; am Anfang der Zeile.&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man mit &#039;c&#039; (continue) das Programm am nächsten Breakpoint fortsetzen, die Zeilen mit &#039;s&#039; (step) der Reihe nach ausführen, oder einzelne Assemblerbefehle ausführen... aber Vorsicht mit &amp;quot;finish&amp;quot;: Anscheinend hängt sich Insight manchmal bei diesem Befehl auf. Wenn man also eine Funktion beenden will, ist es wohl besser, einen Breakpoint auf das Ende der Funktion zu setzen und &amp;quot;continue&amp;quot; zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== DDD benutzen (Unix/Linux) ===&lt;br /&gt;
&lt;br /&gt;
Leider läuft Insight nicht besonders stabil und ist auch etwas umständlich zu bedienen. Wer Unix bzw. Linux verwendet, der ist deshalb mit DDD (http://www.gnu.org/software/ddd/) besser bedient. Um DDD zu verwenden braucht man msp430-gdbproxy und die Kommandozeilen-Version von GDB (msp430-gdb).&lt;br /&gt;
&lt;br /&gt;
Zuerst stellt man wie unter Windows über gdbproxy eine Verbindung zum JTAG-Adapter her. Wenn das funktioniert hat, kann man DDD starten. Als Parameter wird der zu verwendende Debugger (msp430-gdb) und die zu ladende ELF-Datei (test.elf) übergeben:&lt;br /&gt;
&lt;br /&gt;
  $ ddd --debugger msp430-gdb test.elf&lt;br /&gt;
&lt;br /&gt;
Zunächst sollte man nun unter &amp;quot;Commands / Edit Buttons&amp;quot; ein paar Buttons anlegen, indem man die folgenden Zeilen in das Textfeld bei &amp;quot;Console Buttons&amp;quot; einfügt:&lt;br /&gt;
&lt;br /&gt;
  target remote localhost:2000     // Connect&lt;br /&gt;
  monitor erase all                // Erase&lt;br /&gt;
  load                             // Load&lt;br /&gt;
  monitor reset                    // Reset&lt;br /&gt;
&lt;br /&gt;
Um jetzt die Verbindung zum gdbproxy herzustellen muss man nur auf &amp;quot;Connect&amp;quot; klicken, danach auf &amp;quot;Erase&amp;quot; um den Flash-Speicher des Controllers zu löschen, und schließlich auf &amp;quot;Load&amp;quot;, damit das Programm in den Controller geladen wird. Mit &amp;quot;Reset&amp;quot; kann man einen Reset auslösen (wer hätte das gedacht?).&lt;br /&gt;
&lt;br /&gt;
Wichtig: Nachdem einige breakpoints gesetzt sind, das Programm nicht mit &amp;quot;run&amp;quot; ausführen! Dass &amp;quot;run&amp;quot; Kommando wird benutzt um Programme auf dem lokalen Rechner zu starten. Für eingebettete Systeme ist das korrekte Kommando &amp;quot;continue&amp;quot; (siehe http://mspgcc.sourceforge.net/manual/x1602.html).&lt;br /&gt;
&lt;br /&gt;
=== GDB Scripts ===&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Ansammlung von Scripts, um download und reset via GDB etwas zu vereinfachen:&lt;br /&gt;
&lt;br /&gt;
[[Media:Gdb_scripts_win.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:MSP430]]&lt;/div&gt;</summary>
		<author><name>Spischel</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=MSPGCC&amp;diff=42970</id>
		<title>MSPGCC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=MSPGCC&amp;diff=42970"/>
		<updated>2010-02-07T21:59:31Z</updated>

		<summary type="html">&lt;p&gt;Spischel: /* Installationsanleitung für Unix/Linux/Cygwin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MSPGCC ist ein kostenloser, unbeschränkter [[C]]-[[Compiler]] für die [[MSP430]]-[[Mikrocontroller]] von [[TI]]. Die Portierung auf MSP430 wurde von Chris Liechti und Dmitry Diky durchgeführt.&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
* [http://mspgcc.sourceforge.net/manual/ MSPGCC Manual]&lt;br /&gt;
* [http://mspgcc.sourceforge.net/faq/ FAQ]&lt;br /&gt;
&lt;br /&gt;
== Beispielprogramme ==&lt;br /&gt;
&lt;br /&gt;
Für MSPGCC sind umfangreiche Beispielprogramme ([[LCD]]-Ansteuerung, TCP/IP, ...) verfügbar, außerdem wurden alle TI-Appnotes (C und Assembler) von Steve Underwood für MSPGCC angepasst.&lt;br /&gt;
&lt;br /&gt;
* [http://mspgcc.cvs.sourceforge.net/mspgcc/examples/ MSPGCC Beispiele &amp;amp; Appnotes]&lt;br /&gt;
&lt;br /&gt;
== Windows-Version ==&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=42303&amp;amp;package_id=68584 MSPGCC Komplettpaket]&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Eclipse_und_MSPGCC_unter_Windows Eclipse und MSPGCC unter Windows] (03/2009)&lt;br /&gt;
* [http://matthias-hartmann.blogspot.com/ Use Eclipse and mspgcc - the easy way] (Windows 02/2009).&lt;br /&gt;
* [http://www.mikrocontroller.net/Eclipse%20und%20MSPGCC/ ausführliche Anleitung zur Verwendung von Eclipse mit MSPGCC unter Windows] (03/2006)&lt;br /&gt;
&lt;br /&gt;
== Installationsanleitung für Unix/Linux/Cygwin ==&lt;br /&gt;
man kann nach wie vor Schritt für Schritt über die Kommandozeile gehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ su&lt;br /&gt;
 &lt;br /&gt;
  $ mkdir /tmp/mspgcc&lt;br /&gt;
  $ cd /tmp/mspgcc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Oder die Installationsanleitung im MSPGCC-Wiki nutzen:&lt;br /&gt;
[http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Linux_installation#Get_the_Sources_and_build_the_Package]&lt;br /&gt;
&lt;br /&gt;
Dabei gibt es zwei Fallstricke:&lt;br /&gt;
&lt;br /&gt;
1.: Das Beispiel geht davon aus, dass GCC 3.4 installiert ist. Diese Version ist relativ alt und behandelt Compilerwarnungen etwas nachsichtiger. Wer eine neuere oder andere Version von GCC installiert hat, muss das im Make-Aufruf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
 cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co -P .&lt;br /&gt;
 cd packaging&lt;br /&gt;
 make folders&lt;br /&gt;
 CC=gcc-3.4 make build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vorangestellte &amp;quot;CC=gcc-3.4&amp;quot; auf die installierte GCC-Version abändern, z.B. &amp;quot;CC=gcc-4.4&amp;quot;. Tut man das nicht, wird der vorhandene GCC-Compiler nicht gefunden und make liefert Fehler 77 zurück (Compiler kann keine ausführbare Dateien erstellen).&lt;br /&gt;
&lt;br /&gt;
2.: Das verlinkte Package lädt sich (eventuell nur im Moment, 7.2.2010) die binutils-2.18 per Ftp herunter. Einige der Quelldateien produzieren bei GCC Versionen ab 4.X Warnungen, die durch den Compilerschalter -Werror als Fehler behandelt und zum Abbruch des Compiliervorgangs führen.&lt;br /&gt;
Workaround: in der Datei /packaging/build/binutils-2.18/binutils/Makefile die Zeile&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CFLAGS = -g -O2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CFLAGS = -g -O2 -Wnoerror&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
erweitern.&lt;br /&gt;
&lt;br /&gt;
Oder binutils-2.19 von Hand kompilieren und installieren, auch hier auf passende Angabe der GCC-Version achten.&lt;br /&gt;
[http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Building_MSPGCC_from_Source_Code]&lt;br /&gt;
Achtung: in der aktuellen Version heißt die benötigte Datei /package/patches/binutils-2.19.patch irrtümlicherweise binutils-2.19&#039;&#039;&#039;-&#039;&#039;&#039;patch (mit bindestrich statt Punkt).&lt;br /&gt;
&lt;br /&gt;
=== binutils ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ wget ftp://sources.redhat.com/pub/binutils/releases/binutils-2.17.tar.bz2&lt;br /&gt;
  $ tar xjvf binutils-2.17.tar.bz2&lt;br /&gt;
 &lt;br /&gt;
  $ cd binutils-2.17&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
 &lt;br /&gt;
  $ export PATH=/usr/local/msp430/bin:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Kommando wget setzt einen Internetzugang voraus.&lt;br /&gt;
&lt;br /&gt;
Hinweis2:&amp;lt;br&amp;gt; Die Version 2.14 enthält nicht alle Controllertypen. So fehlen zum Beispiel die Typen MSP430F1611 und MSP430F1612.&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Version 2.17 kann es zu fehlerhaften binarys kommen (Fehler: test.elf has no bss section)&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Version 2.16.1 sollte alles funktionieren.&lt;br /&gt;
&lt;br /&gt;
Hinweis3:&amp;lt;br&amp;gt;Ich versuche es mit 2.19.1, wenn ich auf Fehler stosse, dann berichte ich davon..&lt;br /&gt;
&lt;br /&gt;
=== gcc ===&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; MSPGCC kompiliert nicht gcc-4.1. Abhilfe schafft es zu Beginn (oder vor configure) den Befehl &amp;quot;export CC=gcc-3.3&amp;quot; bzw. &amp;quot;export CC=gcc-3.4&amp;quot; aufzurufen. Auch ist darauf zu achten die Dateien gcc-core-3.2.3 und gcc-g++.tar.bz2 und nicht etwa gcc-3.2.3 runterzuladen. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-3.2.3/gcc-core-3.2.3.tar.bz2&lt;br /&gt;
  $ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-3.2.3/gcc-g++-3.2.3.tar.bz2&lt;br /&gt;
  $ tar xjvf gcc-core-3.2.3.tar.bz2&lt;br /&gt;
  $ tar xjvf gcc-g++-3.2.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co gcc/gcc-3.3&lt;br /&gt;
  $ cp -r gcc/gcc-3.3/* gcc-3.2.3/&lt;br /&gt;
 &lt;br /&gt;
  $ cd gcc-3.2.3&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430 --enable-languages=c,c++&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== msp430-libc ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co msp430-libc&lt;br /&gt;
 &lt;br /&gt;
  $ cd msp430-libc/src&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ../..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gdb ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ wget http://mirrors.redwire.net/pub/sources.redhat.com/gdb/old-releases/gdb-6.0.tar.bz2&lt;br /&gt;
  $ tar xjvf gdb-6.0.tar.bz2&lt;br /&gt;
 &lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co gdb/gdb-current&lt;br /&gt;
  $ cp -r gdb/gdb-current/* gdb-6.0/&lt;br /&gt;
 &lt;br /&gt;
  $ cd gdb-6.0&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung: Der GDB kann nicht mit GCC 4.x übersetzt werden. Wenn dieser auf dem System standardmäßig installiert ist, kann man z.B. den GCC 3.4 zusätzlich installieren und dann vor der ./configure- Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ export CC=gcc-3.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfügen.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Bei Ubuntu (evtl auch bei anderen Distributionen) sind die Entwicklerdateien für die Library libtermcap im Paket libncurses5-dev&lt;br /&gt;
&lt;br /&gt;
=== JTAG ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co jtag&lt;br /&gt;
 &lt;br /&gt;
  $ cd jtag/hardware_access&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wer ein 64-Bit-Linux verwendet, muss im makefile die CFLAGS und die LNOPTS um ein -m32 ergänzen. Das sollte dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    CFLAGS  += -fPIC -m32&lt;br /&gt;
    LNOPTS   = -fPIC -shared -m32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiter geht&#039;s:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ make&lt;br /&gt;
  $ mv libHIL.so /usr/local/lib&lt;br /&gt;
  $ ldconfig&lt;br /&gt;
  $ cd ../..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gdbproxy ===&lt;br /&gt;
&lt;br /&gt;
Den msp430-gdbproxy und libMSP430.so von http://www.soft-switch.org/downloads/mspgcc herunterladen. Danach&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ chmod +x msp430-gdbproxy&lt;br /&gt;
  $ mv msp430-gdbproxy /usr/local/msp430/bin/&lt;br /&gt;
  $ mv libMSP430.so /usr/local/lib/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ausführen.&lt;br /&gt;
&lt;br /&gt;
=== Installations-Skript ===&lt;br /&gt;
&lt;br /&gt;
Für Installation/Update gibt es hier ein bash-Skript, das nach dem Starten (und einmal Return zum Downloaden der Sourcen aus dem CVS) das Installieren automatisch erledigt.&lt;br /&gt;
&lt;br /&gt;
Eingebaut sind auch die Anpassungen von ~/.profile und ~/.gdbinit, so dass man sofort loslegen und auch debuggen kann.&lt;br /&gt;
&lt;br /&gt;
* [http://www.true-random.com/files/mspgcc/build_mspgcc.sh Installations-Skript]&lt;br /&gt;
&lt;br /&gt;
Dieses Script ist jedoch relativ veraltet. Daher ist es schneller obige Anleitung per Copy&#039;n&#039;Paste in eine Shell zu übernehmen, als das Script zu verwenden. &lt;br /&gt;
&lt;br /&gt;
=== Gentoo Ebuilds ===&lt;br /&gt;
&lt;br /&gt;
Für Gentoo-Benutzer gibt es an der [http://www.informatik.uni-mannheim.de/pi4/lectures/ss2004/msp430/ Uni Mannheim] Ebuilds zum Download.&lt;br /&gt;
&lt;br /&gt;
=== .gdbinit ===&lt;br /&gt;
&lt;br /&gt;
Um das JTAG-Interface schneller zu machen kann man in ~/.gdbinit diese Werte eintragen:&lt;br /&gt;
&lt;br /&gt;
 set remoteaddresssize 16&lt;br /&gt;
 set remotetimeout 999999&lt;br /&gt;
 set download-write-size 512&lt;br /&gt;
 target remote localhost:2000&lt;br /&gt;
 set remote memory-write-packet-size 512&lt;br /&gt;
 set remote memory-write-packet-size fixed&lt;br /&gt;
 set remote memory-read-packet-size 512&lt;br /&gt;
 set remote memory-read-packet-size fixed&lt;br /&gt;
&lt;br /&gt;
Und vor dem Debuggen von Programmen auf dem Rechner (nicht MSP430) sollte man ~/.gdbinit umbenennen, beispielsweise in ~/.gdbinit_msp430.&lt;br /&gt;
&lt;br /&gt;
== Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
Um msp430-gcc unter Mac OS X (Intel) kompilieren zu können, &lt;br /&gt;
gcc-3.2.3/gcc/config.gcc wie folgt aendern:&lt;br /&gt;
&lt;br /&gt;
Von&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd*aout* )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd*aout* | i[34567]86-apple-darwin8* )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ansonsten die Anleitung für Linux befolgen.&lt;br /&gt;
&lt;br /&gt;
== Einfaches Beispielprogramm ==&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
 #include &amp;lt;io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 void wait(void);         /* prototype for wait()      */&lt;br /&gt;
&lt;br /&gt;
 int&lt;br /&gt;
 main(void)&lt;br /&gt;
 { /* main function, called by startup-code */&lt;br /&gt;
   P1DIR = 0xFF;          /* port 1 = output           */&lt;br /&gt;
   P1OUT = 0x01;          /* set bit 0 in port 1       */&lt;br /&gt;
&lt;br /&gt;
   for(;;)&lt;br /&gt;
   { /* infinite loop */&lt;br /&gt;
     P1OUT = ~P1OUT;      /* invert port 1             */&lt;br /&gt;
     wait();              /* call delay function       */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void&lt;br /&gt;
 wait(void)&lt;br /&gt;
 { /* simple delay function */&lt;br /&gt;
   volatile int i;        /* declare i as volatile int */&lt;br /&gt;
   for(i = 0; i &amp;lt; 32000; i++)&lt;br /&gt;
   ;                      /* repeat 32000 times (nop)  */&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode für msp430x1121 kompilieren ===&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gcc -Os -mmcu=msp430x1121 -o test.elf test.c&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode für msp430x1121 kompilieren, wenn math.h includiert wird ===&lt;br /&gt;
&lt;br /&gt;
  msp430-gcc -Os -mmcu=msp430x1121 -o test.elf test.c -lm&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hierbei -lm als letzte Option.&lt;br /&gt;
&lt;br /&gt;
=== Assemblerlisting erzeugen (optional) ===&lt;br /&gt;
&lt;br /&gt;
  $ msp430-objdump -DS test.elf &amp;gt; test.lst&lt;br /&gt;
&lt;br /&gt;
=== Hex-Datei erzeugen ===&lt;br /&gt;
&lt;br /&gt;
  $ msp430-objcopy -O ihex test.elf test.hex&lt;br /&gt;
&lt;br /&gt;
Die Hex-Datei kann man mit C-Spy (im Kickstart-Paket enthalten) über das JTAG-Interface in den Controller programmieren. Nach einem Klick auf &amp;quot;Go&amp;quot; läuft das Programm los. Wenn 2 LEDs an P1.0 und P1.1 angeschlossen sind, sollten sie nun blinken.&lt;br /&gt;
&lt;br /&gt;
== In-System-Debugging mit GDB/Insight und dem Flash Emulation Tool (FET) ==&lt;br /&gt;
&lt;br /&gt;
Wie bei anderen MSP430-Compilern ist es möglich mspgcc-Programme direkt in der Schaltung zu debuggen. Alles was man dazu braucht, ist ein JTAG-Adapter, mdp430-gdbproxy, und gdb (im aktuellen Windows-Paket bereits enthalten).&lt;br /&gt;
&lt;br /&gt;
Um ein Programm mit GDB/Insight debuggen zu können, muss man die Option &amp;quot;-g&amp;quot; an den mspgcc-Aufruf anhängen:&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gcc -mmcu=msp430x123 -g -Os -o test.elf test.c&lt;br /&gt;
&lt;br /&gt;
Damit erhält man die Datei &amp;quot;test.elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== gdbproxy starten ===&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt ist das Programm gdbproxy zu starten, das für die Kommunikation zwischen GDB und dem FET zuständig ist:&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gdbproxy --port=2000 msp430&lt;br /&gt;
&lt;br /&gt;
Wenn das FET richtig an den Parallelport angeschlossen ist, sollte ungefähr der folgende Text angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
 info:      msp430: Target device is a &#039;MSP430F12x&#039; (type 11)&lt;br /&gt;
 notice:    msp430-gdbproxy: waiting on TCP port 2000&lt;br /&gt;
&lt;br /&gt;
Hinweis: Falls /dev/parport0 nicht existiert, was sich so äußert:&lt;br /&gt;
 open: No such file or directory&lt;br /&gt;
 error:     msp430: Could not initialize device interface (1)&lt;br /&gt;
...als root ...&lt;br /&gt;
 mknod /dev/parport0 c 99 0 &lt;br /&gt;
...eingeben.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Bei udev im neuen Linuxkernel ab 2.6.x wird das Device /dev/parport0 nicht automatisch angelegt und man muss jedesmal neu den Aufruf mit mknod machen. Abhilfe schafft hier der Eintrag in der /etc/modules:&lt;br /&gt;
ppdev&lt;br /&gt;
&lt;br /&gt;
Beim nächsten Booten dürfte der RAW-Parallelport vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
=== Insight benutzen (Windows) ===&lt;br /&gt;
&lt;br /&gt;
Nachdem Insight gestartet ist (c:\msp430\bin\msp430-gdb.exe), klicke auf &amp;quot;File-&amp;gt;Open&amp;quot; und wähle die elf-Datei (z.B. &amp;quot;test.elf&amp;quot;) aus, die du debuggen möchtest.&lt;br /&gt;
&lt;br /&gt;
Klicke dann auf &amp;quot;Run-&amp;gt;Connect to target&amp;quot; und stelle folgendes ein:&lt;br /&gt;
&lt;br /&gt;
  Target:                    &amp;quot;Remote/TCP&amp;quot;&lt;br /&gt;
  Hostname:                  &amp;quot;localhost&amp;quot;&lt;br /&gt;
  Port:                      &amp;quot;2000&amp;quot;&lt;br /&gt;
  Set breakpoint at &#039;main&#039;:  yes&lt;br /&gt;
  Set breakpoint at &#039;exit&#039;:  yes&lt;br /&gt;
  Attach to target:          yes&lt;br /&gt;
  Download Program:          yes&lt;br /&gt;
  Command  after attaching:  &amp;quot;monitor erase all&amp;quot; (ACHTUNG: Optional, damit wird der gesamte Flash-Inhalt gelöscht!)&lt;br /&gt;
  Run Method:                Continue from last Stop&lt;br /&gt;
&lt;br /&gt;
Wenn man auf &amp;quot;Ok&amp;quot; klickt, sollte Insight berichten, dass die Verbindung erfolgreich aufgenommen wurde, und gdbproxy sollte melden:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notice: msp430-gdbproxy: connected&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Um den Debugging-Vorgang zu starten, klicke auf &amp;quot;Run&amp;quot; oder drücke einfach die Taste &amp;quot;r&amp;quot;. Wenn alles geklappt hat, sollte nun der Sourcecode des Programmes angezeigt werden und die erste Zeile von main() grün markiert sein. Der rote Punkt ist der Breakpoint, der von Insight automatisch gesetzt wurde. Um selber Breakpoints zu setzen oder zu löschen, klicke auf den Strich &#039;-&#039; am Anfang der Zeile.&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man mit &#039;c&#039; (continue) das Programm am nächsten Breakpoint fortsetzen, die Zeilen mit &#039;s&#039; (step) der Reihe nach ausführen, oder einzelne Assemblerbefehle ausführen... aber Vorsicht mit &amp;quot;finish&amp;quot;: Anscheinend hängt sich Insight manchmal bei diesem Befehl auf. Wenn man also eine Funktion beenden will, ist es wohl besser, einen Breakpoint auf das Ende der Funktion zu setzen und &amp;quot;continue&amp;quot; zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== DDD benutzen (Unix/Linux) ===&lt;br /&gt;
&lt;br /&gt;
Leider läuft Insight nicht besonders stabil und ist auch etwas umständlich zu bedienen. Wer Unix bzw. Linux verwendet, der ist deshalb mit DDD (http://www.gnu.org/software/ddd/) besser bedient. Um DDD zu verwenden braucht man msp430-gdbproxy und die Kommandozeilen-Version von GDB (msp430-gdb).&lt;br /&gt;
&lt;br /&gt;
Zuerst stellt man wie unter Windows über gdbproxy eine Verbindung zum JTAG-Adapter her. Wenn das funktioniert hat, kann man DDD starten. Als Parameter wird der zu verwendende Debugger (msp430-gdb) und die zu ladende ELF-Datei (test.elf) übergeben:&lt;br /&gt;
&lt;br /&gt;
  $ ddd --debugger msp430-gdb test.elf&lt;br /&gt;
&lt;br /&gt;
Zunächst sollte man nun unter &amp;quot;Commands / Edit Buttons&amp;quot; ein paar Buttons anlegen, indem man die folgenden Zeilen in das Textfeld bei &amp;quot;Console Buttons&amp;quot; einfügt:&lt;br /&gt;
&lt;br /&gt;
  target remote localhost:2000     // Connect&lt;br /&gt;
  monitor erase all                // Erase&lt;br /&gt;
  load                             // Load&lt;br /&gt;
  monitor reset                    // Reset&lt;br /&gt;
&lt;br /&gt;
Um jetzt die Verbindung zum gdbproxy herzustellen muss man nur auf &amp;quot;Connect&amp;quot; klicken, danach auf &amp;quot;Erase&amp;quot; um den Flash-Speicher des Controllers zu löschen, und schließlich auf &amp;quot;Load&amp;quot;, damit das Programm in den Controller geladen wird. Mit &amp;quot;Reset&amp;quot; kann man einen Reset auslösen (wer hätte das gedacht?).&lt;br /&gt;
&lt;br /&gt;
Wichtig: Nachdem einige breakpoints gesetzt sind, das Programm nicht mit &amp;quot;run&amp;quot; ausführen! Dass &amp;quot;run&amp;quot; Kommando wird benutzt um Programme auf dem lokalen Rechner zu starten. Für eingebettete Systeme ist das korrekte Kommando &amp;quot;continue&amp;quot; (siehe http://mspgcc.sourceforge.net/manual/x1602.html).&lt;br /&gt;
&lt;br /&gt;
=== GDB Scripts ===&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Ansammlung von Scripts, um download und reset via GDB etwas zu vereinfachen:&lt;br /&gt;
&lt;br /&gt;
[[Media:Gdb_scripts_win.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:MSP430]]&lt;/div&gt;</summary>
		<author><name>Spischel</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=MSPGCC&amp;diff=42969</id>
		<title>MSPGCC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=MSPGCC&amp;diff=42969"/>
		<updated>2010-02-07T21:57:58Z</updated>

		<summary type="html">&lt;p&gt;Spischel: /*Verweis auf MSPGCC-Wiki, zwei Fehler, die beim kompilieren auftreten können, beschrieben*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MSPGCC ist ein kostenloser, unbeschränkter [[C]]-[[Compiler]] für die [[MSP430]]-[[Mikrocontroller]] von [[TI]]. Die Portierung auf MSP430 wurde von Chris Liechti und Dmitry Diky durchgeführt.&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
* [http://mspgcc.sourceforge.net/manual/ MSPGCC Manual]&lt;br /&gt;
* [http://mspgcc.sourceforge.net/faq/ FAQ]&lt;br /&gt;
&lt;br /&gt;
== Beispielprogramme ==&lt;br /&gt;
&lt;br /&gt;
Für MSPGCC sind umfangreiche Beispielprogramme ([[LCD]]-Ansteuerung, TCP/IP, ...) verfügbar, außerdem wurden alle TI-Appnotes (C und Assembler) von Steve Underwood für MSPGCC angepasst.&lt;br /&gt;
&lt;br /&gt;
* [http://mspgcc.cvs.sourceforge.net/mspgcc/examples/ MSPGCC Beispiele &amp;amp; Appnotes]&lt;br /&gt;
&lt;br /&gt;
== Windows-Version ==&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=42303&amp;amp;package_id=68584 MSPGCC Komplettpaket]&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Eclipse_und_MSPGCC_unter_Windows Eclipse und MSPGCC unter Windows] (03/2009)&lt;br /&gt;
* [http://matthias-hartmann.blogspot.com/ Use Eclipse and mspgcc - the easy way] (Windows 02/2009).&lt;br /&gt;
* [http://www.mikrocontroller.net/Eclipse%20und%20MSPGCC/ ausführliche Anleitung zur Verwendung von Eclipse mit MSPGCC unter Windows] (03/2006)&lt;br /&gt;
&lt;br /&gt;
== Installationsanleitung für Unix/Linux/Cygwin ==&lt;br /&gt;
man kann nach wie vor Schritt für Schritt über die Kommandozeile gehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ su&lt;br /&gt;
 &lt;br /&gt;
  $ mkdir /tmp/mspgcc&lt;br /&gt;
  $ cd /tmp/mspgcc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Oder die Installationsanleitung im MSPGCC-Wiki nutzen:&lt;br /&gt;
[http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Linux_installation#Get_the_Sources_and_build_the_Package]&lt;br /&gt;
&lt;br /&gt;
Dabei gibt es zwei Fallstricke:&lt;br /&gt;
&lt;br /&gt;
1.: Das Beispiel geht davon aus, dass GCC 3.4 installiert ist. Diese Version ist relativ alt und behandelt Compilerwarnungen etwas nachsichtiger. Wer eine neuere oder andere Version von GCC installiert hat, muss das im Make-Aufruf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
 cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co -P .&lt;br /&gt;
 cd packaging&lt;br /&gt;
 make folders&lt;br /&gt;
 CC=gcc-3.4 make build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vorangestellte &amp;quot;CC=gcc-3.4&amp;quot; auf die installierte GCC-Version abändern, z.B. &amp;quot;CC=gcc-4.4&amp;quot;. Tut man das nicht, wird der vorhandene GCC-Compiler nicht gefunden und make liefert Fehler 77 zurück (Compiler kann keine ausführbare Dateien erstellen).&lt;br /&gt;
&lt;br /&gt;
2.: Das verlinkte Package lädt sich (eventuell nur im Moment, 7.2.2010) die binutils-2.18 per Ftp herunter. Einige der Quelldateien produzieren bei GCC Versionen ab 4.X Warnungen, die durch den Compilerschalter -Werror als Fehler behandelt und zum Abbruch des Compiliervorgangs führen.&lt;br /&gt;
Workaround: in der Datei /packaging/build/binutils-2.18/binutils/Makefile die Zeile&lt;br /&gt;
CFLAGS = -g -O2&lt;br /&gt;
&lt;br /&gt;
auf CFLAGS = -g -O2 -Wnoerror&lt;br /&gt;
erweitern.&lt;br /&gt;
&lt;br /&gt;
Oder binutils-2.19 von Hand kompilieren und installieren, auch hier auf passende Angabe der GCC-Version achten.&lt;br /&gt;
[http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Building_MSPGCC_from_Source_Code]&lt;br /&gt;
Achtung: in der aktuellen Version heißt die benötigte Datei /package/patches/binutils-2.19.patch irrtümlicherweise binutils-2.19&#039;&#039;&#039;-&#039;&#039;&#039;patch (mit bindestrich statt Punkt).&lt;br /&gt;
&lt;br /&gt;
=== binutils ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ wget ftp://sources.redhat.com/pub/binutils/releases/binutils-2.17.tar.bz2&lt;br /&gt;
  $ tar xjvf binutils-2.17.tar.bz2&lt;br /&gt;
 &lt;br /&gt;
  $ cd binutils-2.17&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
 &lt;br /&gt;
  $ export PATH=/usr/local/msp430/bin:$PATH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Kommando wget setzt einen Internetzugang voraus.&lt;br /&gt;
&lt;br /&gt;
Hinweis2:&amp;lt;br&amp;gt; Die Version 2.14 enthält nicht alle Controllertypen. So fehlen zum Beispiel die Typen MSP430F1611 und MSP430F1612.&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Version 2.17 kann es zu fehlerhaften binarys kommen (Fehler: test.elf has no bss section)&amp;lt;br&amp;gt;&lt;br /&gt;
Mit der Version 2.16.1 sollte alles funktionieren.&lt;br /&gt;
&lt;br /&gt;
Hinweis3:&amp;lt;br&amp;gt;Ich versuche es mit 2.19.1, wenn ich auf Fehler stosse, dann berichte ich davon..&lt;br /&gt;
&lt;br /&gt;
=== gcc ===&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; MSPGCC kompiliert nicht gcc-4.1. Abhilfe schafft es zu Beginn (oder vor configure) den Befehl &amp;quot;export CC=gcc-3.3&amp;quot; bzw. &amp;quot;export CC=gcc-3.4&amp;quot; aufzurufen. Auch ist darauf zu achten die Dateien gcc-core-3.2.3 und gcc-g++.tar.bz2 und nicht etwa gcc-3.2.3 runterzuladen. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-3.2.3/gcc-core-3.2.3.tar.bz2&lt;br /&gt;
  $ wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-3.2.3/gcc-g++-3.2.3.tar.bz2&lt;br /&gt;
  $ tar xjvf gcc-core-3.2.3.tar.bz2&lt;br /&gt;
  $ tar xjvf gcc-g++-3.2.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co gcc/gcc-3.3&lt;br /&gt;
  $ cp -r gcc/gcc-3.3/* gcc-3.2.3/&lt;br /&gt;
 &lt;br /&gt;
  $ cd gcc-3.2.3&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430 --enable-languages=c,c++&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== msp430-libc ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co msp430-libc&lt;br /&gt;
 &lt;br /&gt;
  $ cd msp430-libc/src&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ../..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gdb ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ wget http://mirrors.redwire.net/pub/sources.redhat.com/gdb/old-releases/gdb-6.0.tar.bz2&lt;br /&gt;
  $ tar xjvf gdb-6.0.tar.bz2&lt;br /&gt;
 &lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co gdb/gdb-current&lt;br /&gt;
  $ cp -r gdb/gdb-current/* gdb-6.0/&lt;br /&gt;
 &lt;br /&gt;
  $ cd gdb-6.0&lt;br /&gt;
  $ ./configure --prefix=/usr/local/msp430 --target=msp430&lt;br /&gt;
  $ make&lt;br /&gt;
  $ make install&lt;br /&gt;
  $ cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung: Der GDB kann nicht mit GCC 4.x übersetzt werden. Wenn dieser auf dem System standardmäßig installiert ist, kann man z.B. den GCC 3.4 zusätzlich installieren und dann vor der ./configure- Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ export CC=gcc-3.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfügen.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Bei Ubuntu (evtl auch bei anderen Distributionen) sind die Entwicklerdateien für die Library libtermcap im Paket libncurses5-dev&lt;br /&gt;
&lt;br /&gt;
=== JTAG ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc login&lt;br /&gt;
  $ cvs -z3 -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co jtag&lt;br /&gt;
 &lt;br /&gt;
  $ cd jtag/hardware_access&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wer ein 64-Bit-Linux verwendet, muss im makefile die CFLAGS und die LNOPTS um ein -m32 ergänzen. Das sollte dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    CFLAGS  += -fPIC -m32&lt;br /&gt;
    LNOPTS   = -fPIC -shared -m32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiter geht&#039;s:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ make&lt;br /&gt;
  $ mv libHIL.so /usr/local/lib&lt;br /&gt;
  $ ldconfig&lt;br /&gt;
  $ cd ../..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gdbproxy ===&lt;br /&gt;
&lt;br /&gt;
Den msp430-gdbproxy und libMSP430.so von http://www.soft-switch.org/downloads/mspgcc herunterladen. Danach&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ chmod +x msp430-gdbproxy&lt;br /&gt;
  $ mv msp430-gdbproxy /usr/local/msp430/bin/&lt;br /&gt;
  $ mv libMSP430.so /usr/local/lib/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ausführen.&lt;br /&gt;
&lt;br /&gt;
=== Installations-Skript ===&lt;br /&gt;
&lt;br /&gt;
Für Installation/Update gibt es hier ein bash-Skript, das nach dem Starten (und einmal Return zum Downloaden der Sourcen aus dem CVS) das Installieren automatisch erledigt.&lt;br /&gt;
&lt;br /&gt;
Eingebaut sind auch die Anpassungen von ~/.profile und ~/.gdbinit, so dass man sofort loslegen und auch debuggen kann.&lt;br /&gt;
&lt;br /&gt;
* [http://www.true-random.com/files/mspgcc/build_mspgcc.sh Installations-Skript]&lt;br /&gt;
&lt;br /&gt;
Dieses Script ist jedoch relativ veraltet. Daher ist es schneller obige Anleitung per Copy&#039;n&#039;Paste in eine Shell zu übernehmen, als das Script zu verwenden. &lt;br /&gt;
&lt;br /&gt;
=== Gentoo Ebuilds ===&lt;br /&gt;
&lt;br /&gt;
Für Gentoo-Benutzer gibt es an der [http://www.informatik.uni-mannheim.de/pi4/lectures/ss2004/msp430/ Uni Mannheim] Ebuilds zum Download.&lt;br /&gt;
&lt;br /&gt;
=== .gdbinit ===&lt;br /&gt;
&lt;br /&gt;
Um das JTAG-Interface schneller zu machen kann man in ~/.gdbinit diese Werte eintragen:&lt;br /&gt;
&lt;br /&gt;
 set remoteaddresssize 16&lt;br /&gt;
 set remotetimeout 999999&lt;br /&gt;
 set download-write-size 512&lt;br /&gt;
 target remote localhost:2000&lt;br /&gt;
 set remote memory-write-packet-size 512&lt;br /&gt;
 set remote memory-write-packet-size fixed&lt;br /&gt;
 set remote memory-read-packet-size 512&lt;br /&gt;
 set remote memory-read-packet-size fixed&lt;br /&gt;
&lt;br /&gt;
Und vor dem Debuggen von Programmen auf dem Rechner (nicht MSP430) sollte man ~/.gdbinit umbenennen, beispielsweise in ~/.gdbinit_msp430.&lt;br /&gt;
&lt;br /&gt;
== Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
Um msp430-gcc unter Mac OS X (Intel) kompilieren zu können, &lt;br /&gt;
gcc-3.2.3/gcc/config.gcc wie folgt aendern:&lt;br /&gt;
&lt;br /&gt;
Von&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd*aout* )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd*aout* | i[34567]86-apple-darwin8* )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ansonsten die Anleitung für Linux befolgen.&lt;br /&gt;
&lt;br /&gt;
== Einfaches Beispielprogramm ==&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
 #include &amp;lt;io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 void wait(void);         /* prototype for wait()      */&lt;br /&gt;
&lt;br /&gt;
 int&lt;br /&gt;
 main(void)&lt;br /&gt;
 { /* main function, called by startup-code */&lt;br /&gt;
   P1DIR = 0xFF;          /* port 1 = output           */&lt;br /&gt;
   P1OUT = 0x01;          /* set bit 0 in port 1       */&lt;br /&gt;
&lt;br /&gt;
   for(;;)&lt;br /&gt;
   { /* infinite loop */&lt;br /&gt;
     P1OUT = ~P1OUT;      /* invert port 1             */&lt;br /&gt;
     wait();              /* call delay function       */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void&lt;br /&gt;
 wait(void)&lt;br /&gt;
 { /* simple delay function */&lt;br /&gt;
   volatile int i;        /* declare i as volatile int */&lt;br /&gt;
   for(i = 0; i &amp;lt; 32000; i++)&lt;br /&gt;
   ;                      /* repeat 32000 times (nop)  */&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode für msp430x1121 kompilieren ===&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gcc -Os -mmcu=msp430x1121 -o test.elf test.c&lt;br /&gt;
&lt;br /&gt;
=== Sourcecode für msp430x1121 kompilieren, wenn math.h includiert wird ===&lt;br /&gt;
&lt;br /&gt;
  msp430-gcc -Os -mmcu=msp430x1121 -o test.elf test.c -lm&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hierbei -lm als letzte Option.&lt;br /&gt;
&lt;br /&gt;
=== Assemblerlisting erzeugen (optional) ===&lt;br /&gt;
&lt;br /&gt;
  $ msp430-objdump -DS test.elf &amp;gt; test.lst&lt;br /&gt;
&lt;br /&gt;
=== Hex-Datei erzeugen ===&lt;br /&gt;
&lt;br /&gt;
  $ msp430-objcopy -O ihex test.elf test.hex&lt;br /&gt;
&lt;br /&gt;
Die Hex-Datei kann man mit C-Spy (im Kickstart-Paket enthalten) über das JTAG-Interface in den Controller programmieren. Nach einem Klick auf &amp;quot;Go&amp;quot; läuft das Programm los. Wenn 2 LEDs an P1.0 und P1.1 angeschlossen sind, sollten sie nun blinken.&lt;br /&gt;
&lt;br /&gt;
== In-System-Debugging mit GDB/Insight und dem Flash Emulation Tool (FET) ==&lt;br /&gt;
&lt;br /&gt;
Wie bei anderen MSP430-Compilern ist es möglich mspgcc-Programme direkt in der Schaltung zu debuggen. Alles was man dazu braucht, ist ein JTAG-Adapter, mdp430-gdbproxy, und gdb (im aktuellen Windows-Paket bereits enthalten).&lt;br /&gt;
&lt;br /&gt;
Um ein Programm mit GDB/Insight debuggen zu können, muss man die Option &amp;quot;-g&amp;quot; an den mspgcc-Aufruf anhängen:&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gcc -mmcu=msp430x123 -g -Os -o test.elf test.c&lt;br /&gt;
&lt;br /&gt;
Damit erhält man die Datei &amp;quot;test.elf&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== gdbproxy starten ===&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt ist das Programm gdbproxy zu starten, das für die Kommunikation zwischen GDB und dem FET zuständig ist:&lt;br /&gt;
&lt;br /&gt;
  $ msp430-gdbproxy --port=2000 msp430&lt;br /&gt;
&lt;br /&gt;
Wenn das FET richtig an den Parallelport angeschlossen ist, sollte ungefähr der folgende Text angezeigt werden:&lt;br /&gt;
&lt;br /&gt;
 info:      msp430: Target device is a &#039;MSP430F12x&#039; (type 11)&lt;br /&gt;
 notice:    msp430-gdbproxy: waiting on TCP port 2000&lt;br /&gt;
&lt;br /&gt;
Hinweis: Falls /dev/parport0 nicht existiert, was sich so äußert:&lt;br /&gt;
 open: No such file or directory&lt;br /&gt;
 error:     msp430: Could not initialize device interface (1)&lt;br /&gt;
...als root ...&lt;br /&gt;
 mknod /dev/parport0 c 99 0 &lt;br /&gt;
...eingeben.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Bei udev im neuen Linuxkernel ab 2.6.x wird das Device /dev/parport0 nicht automatisch angelegt und man muss jedesmal neu den Aufruf mit mknod machen. Abhilfe schafft hier der Eintrag in der /etc/modules:&lt;br /&gt;
ppdev&lt;br /&gt;
&lt;br /&gt;
Beim nächsten Booten dürfte der RAW-Parallelport vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
=== Insight benutzen (Windows) ===&lt;br /&gt;
&lt;br /&gt;
Nachdem Insight gestartet ist (c:\msp430\bin\msp430-gdb.exe), klicke auf &amp;quot;File-&amp;gt;Open&amp;quot; und wähle die elf-Datei (z.B. &amp;quot;test.elf&amp;quot;) aus, die du debuggen möchtest.&lt;br /&gt;
&lt;br /&gt;
Klicke dann auf &amp;quot;Run-&amp;gt;Connect to target&amp;quot; und stelle folgendes ein:&lt;br /&gt;
&lt;br /&gt;
  Target:                    &amp;quot;Remote/TCP&amp;quot;&lt;br /&gt;
  Hostname:                  &amp;quot;localhost&amp;quot;&lt;br /&gt;
  Port:                      &amp;quot;2000&amp;quot;&lt;br /&gt;
  Set breakpoint at &#039;main&#039;:  yes&lt;br /&gt;
  Set breakpoint at &#039;exit&#039;:  yes&lt;br /&gt;
  Attach to target:          yes&lt;br /&gt;
  Download Program:          yes&lt;br /&gt;
  Command  after attaching:  &amp;quot;monitor erase all&amp;quot; (ACHTUNG: Optional, damit wird der gesamte Flash-Inhalt gelöscht!)&lt;br /&gt;
  Run Method:                Continue from last Stop&lt;br /&gt;
&lt;br /&gt;
Wenn man auf &amp;quot;Ok&amp;quot; klickt, sollte Insight berichten, dass die Verbindung erfolgreich aufgenommen wurde, und gdbproxy sollte melden:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notice: msp430-gdbproxy: connected&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Um den Debugging-Vorgang zu starten, klicke auf &amp;quot;Run&amp;quot; oder drücke einfach die Taste &amp;quot;r&amp;quot;. Wenn alles geklappt hat, sollte nun der Sourcecode des Programmes angezeigt werden und die erste Zeile von main() grün markiert sein. Der rote Punkt ist der Breakpoint, der von Insight automatisch gesetzt wurde. Um selber Breakpoints zu setzen oder zu löschen, klicke auf den Strich &#039;-&#039; am Anfang der Zeile.&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man mit &#039;c&#039; (continue) das Programm am nächsten Breakpoint fortsetzen, die Zeilen mit &#039;s&#039; (step) der Reihe nach ausführen, oder einzelne Assemblerbefehle ausführen... aber Vorsicht mit &amp;quot;finish&amp;quot;: Anscheinend hängt sich Insight manchmal bei diesem Befehl auf. Wenn man also eine Funktion beenden will, ist es wohl besser, einen Breakpoint auf das Ende der Funktion zu setzen und &amp;quot;continue&amp;quot; zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== DDD benutzen (Unix/Linux) ===&lt;br /&gt;
&lt;br /&gt;
Leider läuft Insight nicht besonders stabil und ist auch etwas umständlich zu bedienen. Wer Unix bzw. Linux verwendet, der ist deshalb mit DDD (http://www.gnu.org/software/ddd/) besser bedient. Um DDD zu verwenden braucht man msp430-gdbproxy und die Kommandozeilen-Version von GDB (msp430-gdb).&lt;br /&gt;
&lt;br /&gt;
Zuerst stellt man wie unter Windows über gdbproxy eine Verbindung zum JTAG-Adapter her. Wenn das funktioniert hat, kann man DDD starten. Als Parameter wird der zu verwendende Debugger (msp430-gdb) und die zu ladende ELF-Datei (test.elf) übergeben:&lt;br /&gt;
&lt;br /&gt;
  $ ddd --debugger msp430-gdb test.elf&lt;br /&gt;
&lt;br /&gt;
Zunächst sollte man nun unter &amp;quot;Commands / Edit Buttons&amp;quot; ein paar Buttons anlegen, indem man die folgenden Zeilen in das Textfeld bei &amp;quot;Console Buttons&amp;quot; einfügt:&lt;br /&gt;
&lt;br /&gt;
  target remote localhost:2000     // Connect&lt;br /&gt;
  monitor erase all                // Erase&lt;br /&gt;
  load                             // Load&lt;br /&gt;
  monitor reset                    // Reset&lt;br /&gt;
&lt;br /&gt;
Um jetzt die Verbindung zum gdbproxy herzustellen muss man nur auf &amp;quot;Connect&amp;quot; klicken, danach auf &amp;quot;Erase&amp;quot; um den Flash-Speicher des Controllers zu löschen, und schließlich auf &amp;quot;Load&amp;quot;, damit das Programm in den Controller geladen wird. Mit &amp;quot;Reset&amp;quot; kann man einen Reset auslösen (wer hätte das gedacht?).&lt;br /&gt;
&lt;br /&gt;
Wichtig: Nachdem einige breakpoints gesetzt sind, das Programm nicht mit &amp;quot;run&amp;quot; ausführen! Dass &amp;quot;run&amp;quot; Kommando wird benutzt um Programme auf dem lokalen Rechner zu starten. Für eingebettete Systeme ist das korrekte Kommando &amp;quot;continue&amp;quot; (siehe http://mspgcc.sourceforge.net/manual/x1602.html).&lt;br /&gt;
&lt;br /&gt;
=== GDB Scripts ===&lt;br /&gt;
&lt;br /&gt;
Hier eine kleine Ansammlung von Scripts, um download und reset via GDB etwas zu vereinfachen:&lt;br /&gt;
&lt;br /&gt;
[[Media:Gdb_scripts_win.zip]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:MSP430]]&lt;/div&gt;</summary>
		<author><name>Spischel</name></author>
	</entry>
</feed>