Forum: Mikrocontroller und Digitale Elektronik MSP430 mit Eclipse debuggen


von TheMason (Gast)


Lesenswert?

So nachdem ich nun endlich mal einen einstieg in eclipse gefunden habe 
habe ich natürlich (wie soll es auch anders sein) das erste problem :

Ich kann programme erstellen/compilieren. Das flashen funktioniert auch. 
allerdings muß ich dazu im Debugger Configuration Dialog den "mspgcc 
debugger" auswählen, und nicht wie im tutorial von liechti den 
gdbserver.
sobald ich den gdb-server anwähle und auf "Debug" klicke fängt der an 
was zu machen (sehe ich im msp430-gdbproxy den ich per console gestartet 
habe), bricht dann aber mit der fehlermeldung
"/cygdrive/c/Programme/eclipse/C:\workspace\msp_test1/C:\workspace\msp_t 
est1\msp_test1.elf:  No such file or directory." ab. nun weiß ich 
allerdings nicht wie dieser kuriose pfad zustande kommt (denn ich habe 
cygwin selbst  nicht installiert, das kommt wohl vom mspgcc)
wenn ich jedoch den mspgcc debugger verwende kann ich zwar flashen und 
auch etwas debuggen, aber wenn ich einen breakpoint setze kommt der da 
nie hin (in einer blinker-endlos-schleife z.b.). auch kann ich die debug 
session nicht terminieren, der msp-gdb-proxy läuft fröhlich weiter, und 
eclipse meldet nach ein paar sekunden timeout, den proxy kann ich nur 
mit ctrl+c beenden, und danach muß ich meinen msp von der spannung 
trennen und wieder dranmachen damit der gdb-proxy mir kein "device 
unknown" meldet)

was mache ich falsch ?! gibt es da ein paar grundsätzliche dinge die ich 
übersehen habe ?!

von Christian R. (supachris)


Lesenswert?

Nun ja, der Debugger is so ne Sache. Der ist nicht wirklich als stabil 
zu bezeichnen. Bei mir gehn aber sowohl mspgcc-gdb als auch normal 
gdb-server. Allerdings muss man dort auf der einen Tab noch TCP und Port 
3333 bei Localhost einstellen.

Im Gegensatz zu der Anleitung geht der Cygwin da nicht.

Welche GCC Version hast du? Die aktuelle Windows-Version klappt bei mir 
mit Debuggen überhaipt nicht, die vom November 2006 sehr gut.

Der Debugger hat aber auch ein paar Macken, z.B. eine leere 
Endlosschleife lässt sich nicht unterbrechen, also in etwa:

for (;;);

da schmiert der ab. Ebenso bei while(1); und solchen Sachen. Desweiteren 
kriegt der disassembler es nicht gebacken, stark optimierten Code mit 
dem Quellcode in Verbindung zu bringen -> timeout.

Strom ab und wieder dran, muss ich allerdings selten. Auch der USB 
Debugger klappt wunderbar, nur der Eclipse-GDB-Frontend schmiert halt 
immer mal ab.

Achja, NICHT den Restart-Knopf drücken....da is wohl nen Bug, das klappt 
auch nicht


Wie der komische Pfad zustande kommt, weiß ich nicht, der 
Debugger-Assistent sucht doch das Elf-File automatisch.

von TheMason (Gast)


Lesenswert?

>Nun ja, der Debugger is so ne Sache. Der ist nicht wirklich als stabil
>zu bezeichnen. Bei mir gehn aber sowohl mspgcc-gdb als auch normal
>gdb-server. Allerdings muss man dort auf der einen Tab noch TCP und Port
>3333 bei Localhost einstellen.

dazu kann ich nur sagen : full ack :-((

>Im Gegensatz zu der Anleitung geht der Cygwin da nicht.

da sagt mir eclipse schon beim einstellen im dialog "cpu not supported" 
(kann noch nicht mal auf apply klicken -> nur der gdbserver schluckt 
das, läuft aber nicht (richtig), mspgcc GDB läuft, aber halt recht 
instabil)

>Welche GCC Version hast du? Die aktuelle Windows-Version klappt bei mir
>mit Debuggen überhaipt nicht, die vom November 2006 sehr gut.

habe die vom februar 2007. wenn das die aktuellste ist werde ich mal ein 
"downgrade" versuchen. vielleicht hilfts ja.

>Der Debugger hat aber auch ein paar Macken, z.B. eine leere
>Endlosschleife lässt sich nicht unterbrechen, also in etwa: for (;;);
>da schmiert der ab. Ebenso bei while(1);

aber mit einem stückchen code zwischen dem while(1) und dem ; sollte es 
doch funktionieren oder ?
jedenfalls kann ich im laufenden code keine breakpoints setzen (setzen 
zwar schon, aber er hält nicht an), aber das kann ja vllt mit der "zu 
neuen" gcc version liegen.

>Strom ab und wieder dran, muss ich allerdings selten.

habe ich leider mit bestechender regelmäsigkeit. allerdings immer nur 
dann wenn ich den gdb-proxy zwangsterminieren musste (ctrl+c).
nach einem erneuten start des proxies liefert der mir immer "device 
unknown"

habe statt den msp fet usb den parallelport, aber das sollte ja nichts 
zur sache tun.

>Restart-Knopf

apropos :

gibt es eine möglichkeit den gdb zu re-starten ohne das der jedesmal das 
dingen neu flasht ?! einfach das erase/load kommando aus dem gdb.ini 
file rausnehmen, oder hat der gdb da auch was gegen (soweit ich weiß 
flasht der gdb mit dem load kommando den msp ja neu) ?!

dank und gruß
rene

von TheMason (Gast)


Lesenswert?

noch mal eben eine frage :

muß ich bei eclipse das makefile von hand erstellen oder gibt es da ein 
tool das das für mich übernimmt (immerhin wird ja auch nach 
include-pfaden gefragt, und das nur für den indexer wäre ja etwas 
übertrieben oder ?)
muß man da noch was spezielles einstellen oder sollte es "so" laufen 
(wenn es denn ein solches feature gibt)

gruß
rene

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Also. Den GDB-Server-Debugger kannst du eigentlich auch nehmen, bei mir 
geht der sogar besser als der mspgcc-gdb oder wie der da heißt. 
Protokoll am betsen mi2 benutzen.

Neustart ohne flashen geht entweder, wenn du dir eine Konsole und den 
Verbose-Mode beim Debugger geben lässt, dann kannst du
monitor restart
c
eingeben und er is wieder am Anfang der Main()

oder eben das load rausnehmen, das klappt.

beenden des GDB-Servers mach ich einfach, indem ich das DOS-Fenster 
schließe. Aber wie gesagt, ich hab den als external Tool im Eclipse, da 
geht das dann per Stopp-Knopf.

Mit Managed Make Projekt musst du dich um kein Makefile kümmern, klappt 
bei mir bestens. Automatic Build noch an, und er macht bei jedem 
Speichern einen Compilerlauf.

Ma paar Bilder im Anhang.

Das stellt den gdp-proxy als Tool im Eclipse ein, lässt sich dann direkt 
aus Eclipse starten und beenden.

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Das ist meine Debug-Konfig.

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Hier nochmal ein PostBuild Komnmando, dass die Größe des belegten Flash 
und RAM ausrechnet.

von TheMason (Gast)


Lesenswert?

jau,

erstmal danke schön. werde ich heute abend mal ausprobieren.

gruß
rene

von TheMason (Gast)


Lesenswert?

Hallo Chris,

erst nochmal danke für deine Hints. Aber so richtig klappen will das 
nicht.
Wenn ich den gdb-server debugger auswähle komme ich nur über das 
mi-protokoll einen halben schritt weiter, bei mi2 sagt der mir sofort : 
error creating session mit dem hinweis das der den mi2-interpreter nicht 
finden kann.
bei mi fängt der an was zu laden, bricht aber nachher (wie im gestrigen 
posting schon erwähnt mit "target selection failed" ab und liefert mit 
das fehlerdetail das der ein über cygwin gemapptes file nicht finden 
kann

/cygdrive/c/Programme/eclipse/C:\workspace\msp_test1/C:\workspace\msp_te 
st1\msp_test1.elf:

(wie auch immer dieser filename zustande kommt ...)

noch eine kleine frage zum size-tool. ich kann den dialog nicht finden, 
in dem ich die post-build schritte einstellen kann. läuft das vielleicht 
nur mit managed code ? habe damit noch nichts gemacht (sollte ich aber 
wohl besser :-))

gruß
rene

von TheMason (Gast)


Lesenswert?

@chris

erstnocheinmal danke für den hinweis mit dem managed c project.
allerdings habe ich da noch das problem das wenn ich dateien in 
unterverszeichnissen habe das das make sich dann auf die nase legt. muß 
da noch was spezielles eingestellt werden ?

von Christian R. (supachris)


Lesenswert?

Hmm...mit Unterverzeichnissen hab ich so jetzt noch nicht ausprobiert, 
aber kann das bei Gelegenheit ma testen.

Also wenn der den Befehlsinterpreter nicht findet, ist an deiner Install 
was falsch würd ich sagen....bei mir klappt das auf Anhieb. Neuestes 
Eclipse SDK und CDT haste drauf, ja?

von TheMason (Gast)


Lesenswert?

also mit unterverzeichnissen scheint es noch ein problem zu geben. ich 
kann die einzelnen dateien in den verzeichnissen compilieren, aber 
gelinkt bekomme ich es nicht. und über ein build all schon gar nicht ... 
:-(
der scheint sich da irgendwie zu verstrubbeln.
eclipse und cdt sind neu (gestern erst geladen).

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Sooo...hab mal ausprobiert mit den Unterverzeichnissen. War gar nicht 
ganz einfach. Bei mir klappt das nur mit einem managed-make Projekt 
(mach ich eh immer) und dem "Internal Builder", zu aktivieren unter 
Project -> Properties -> C/C++ Build -> Build Settings.

Da steht was von experimental, aber damit klappts.

Hab über New -> Source-Folder den Ordner erstellt und die Files da 
reingelegt. Natürlich die '#include angepasst. Dann funktionierts.

Bild im Anhang.

Ohne den internen Builder erstellt der irgendwie in den 
Unterverzeichnissen keine Dependency-Files (.d) und kann dann natürlich 
nix linken.
Komisch....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.