Forum: Mikrocontroller und Digitale Elektronik MSP430 Debugger erkennen


von Marco S. (biteaterf)


Lesenswert?

Hallo zusammen,

kann ich auf einem MSP430 (F6638) per Code erkennen, ob das Programm 
gerade gedebuggt wird? Wenn ja, wie?

Danke für Hinweise.

Marco

von Max G. (l0wside) Benutzerseite


Lesenswert?

Marco S. schrieb:
> Hallo zusammen,
>
> kann ich auf einem MSP430 (F6638) per Code erkennen, ob das Programm
> gerade gedebuggt wird? Wenn ja, wie?

Was genau willst Du erreichen? Im Einzelschrittmodus ist der µC 
angehalten, d.h es könnte gar kein Code laufen, der das Debuggen 
erkennt.

Max

von Marco S. (biteaterf)


Lesenswert?

Hallo,

ich möchte z. B. eine LED einschalten, wenn die SW im Debugger läuft 
(mit TI MSP-FET430UIF) und eine andere LED einschalten, wenn das Gerät 
ohne aktivierten Debugger läuft.

Marco

von Christian R. (supachris)


Lesenswert?

Das wird nicht gehen. Es gibt bei gleicher Kompiler-Einstellung für 
Debug/Release keinen Unterschied im Code. Auch kommt man an die 
Debug-Register meines Wissens nicht aus dem normalen Programm heran. Du 
könntest höchstens detektieren, ob der JTAG Debugger angeschlossen ist, 
die geben ja auch eine Target-Spannung aus...

von Max G. (l0wside) Benutzerseite


Lesenswert?

Ohne externe Hardware wird das nichts werden.

Ansatz 1 von Christian: die Versorgungsspannung des Debuggers anzapfen. 
Klingt sinnvoll.
Ansatz 2: externen Watchdog einsetzen. Wenn das Programm angehalten 
wird, erkennt der WD das und schaltet die LED um.

Geht es Dir um das Vorhandensein des Debuggers oder um das Anhalten des 
Programms?

Max

von Marco S. (biteaterf)


Lesenswert?

Max G. schrieb:

> Geht es Dir um das Vorhandensein des Debuggers oder um das Anhalten des
> Programms?

Mir geht es einfach darum, während des Programmlaufs im Programm 
abhängig davon, ob das Programm im Debugger läuft, unterschiedliche 
Verhaltenweisen zu ermöglichen.

Z.B. funktioniert beim Debuggen der LPM3.5 nicht. Ich möchte daher, wenn 
der Debugger läuft, evtl. nur in LPM3 oder sogar nur LPM0 schalten. Das 
möchte ich nach Möglichkeit nicht zur Compiler-Zeit (DEBUG Symbol) 
entscheiden müssen, sondern erst zur Laufzeit.

Marco

von Max G. (l0wside) Benutzerseite


Lesenswert?

Marco S. schrieb:

> Mir geht es einfach darum, während des Programmlaufs im Programm
> abhängig davon, ob das Programm im Debugger läuft, unterschiedliche
> Verhaltenweisen zu ermöglichen.

Ach so. Dann würde ich Christians Ansatz verwenden und die externe 
Spannungsversorgung vom Debugger über einen freien Pin einlesen. Dann 
weißt du, ob der Debugger angesteckt ist oder nicht. Falls du ohne 
externe Spannungsversorgung debuggst, müsstest du auch RST verwenden 
können.

Alternativ könntest du ggf. auch prüfen, ob sich der LPM3.5 aktivieren 
lässt und wenn nicht, dann in LPM0 bleiben. Mit den LPM kenne ich mich 
aber nicht aus.

Max

von Marco S. (biteaterf)


Lesenswert?

Max G. schrieb:

> Ach so. Dann würde ich Christians Ansatz verwenden und die externe
> Spannungsversorgung vom Debugger über einen freien Pin einlesen. Dann
> weißt du, ob der Debugger angesteckt ist oder nicht. Falls du ohne
> externe Spannungsversorgung debuggst, müsstest du auch RST verwenden
> können.

Hm, aber der Debugger ist eigentlich immer angeschlossen - nur eben 
nicht der Debug-Modus in der IAR Workbench nicht aktiv... Das wird man 
dann wohl nicht unterscheiden können?!

Marco

von Max G. (l0wside) Benutzerseite


Lesenswert?

Dann musst Du irgendwie die Aktivität auf der Debug-Leitung erkennen 
(bin grade zu faul zum Nachschauen, TST?).

Max

von Tobias K. (kurzschluss81)


Lesenswert?

Schon mal an Compilerswitche gedacht. Dort könntest du bei DEBUG und 
RELEAS unterschiedliche Switche setzen.

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.