Forum: Mikrocontroller und Digitale Elektronik STM32F4 Flag für "debugger conncted"


von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Huhu!

Gibt es eine Möglichkeit das laufende Programm erkennen zu lassen ob 
gerade Debugged wird oder nicht? Konnte in den DBG-Registern nichts dazu 
finden.

Danke und Grüße
Reggie

von Jan K. (madengineer)


Lesenswert?

Ja das wäre echt mal interessant zum Beispiel für Debugausgaben via 
Semihosting. Wenn der Debugger nicht dran ist, dann friert das Programm 
ein, da die Strings ja über Sigtraps übertragen..

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Jan K. schrieb:
> Ja das wäre echt mal interessant zum Beispiel für Debugausgaben via
> Semihosting.
Genau darum geht es mir hier. Ich nutze eine optische Rückmeldung im 
Fehlerfall. Beim Debuggen nutze ich ein paar asm breakpoints und 
Semihosting. Die möchte ich anfahren, wenn der Debugger dran ist, 
ansonsten soll eben nur die optische Rückmeldung gegeben werden.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

* C_DEBUGEN in DHCSR
  Ist allerdings z.B. auch gesetzt wenn der Debugger nur verbunden ist,
  aber nichts tut und das Programm "normal" läuft.

Für die Ausgabe per SWO gibts allerdings noch andere Bits:
* ITMENA in ITM_TCR
* ITM_TER0-255
Wenn man diese Bits prüft, insbesondere das für den genutzten Trace 
Port, bevor man Ausgaben per SWO macht, wird das Programm nicht 
angehalten wenn kein Debugger verbunden ist. Ein Beispiel ist bei Segger 
zu sehen:
http://forum.segger.com/index.php?page=Thread&postID=1745#post1745

Oder hier:
https://www.mikrocontroller.net/wikifiles/a/af/Newlib_cortexm_syscalls.c 
in Zeilen 67-75. Das drumherum in dieser Datei ermöglicht die direkte 
Nutzung von printf() via SWO beim GCC.

von Nop (Gast)


Lesenswert?

Ich nutze dazu einfach einen Debug-Build mit Debug-Defines. Ganz 
genauso, wie ich das auf dem PC auch mache.

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Niklas G. schrieb:
> * C_DEBUGEN in DHCSR
Hey das ist ein Anfang, Danke.

Niklas G. schrieb:
> Ist allerdings z.B. auch gesetzt wenn der Debugger nur verbunden ist,
>   aber nichts tut und das Programm "normal" läuft.
Das ist natürlich doof -.-

Niklas G. schrieb:
> Für die Ausgabe per SWO gibts allerdings noch andere Bits:
> * ITMENA in ITM_TCR
> * ITM_TER0-255
> Wenn man diese Bits prüft, insbesondere das für den genutzten Trace
> Port, bevor man Ausgaben per SWO macht, wird das Programm nicht
> angehalten wenn kein Debugger verbunden ist.
Das hört sich wiederum gut an, das guck ich mir gleich an, Danke!

Nop schrieb:
> Ich nutze dazu einfach einen Debug-Build mit Debug-Defines. Ganz
> genauso, wie ich das auf dem PC auch mache.
Ja, andere Möglichkeiten gibt es genug :) Ich bin aber seeeeehr bequem 
:)

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Also C_DEBUGEN steht bei mir durchgehend auf 1, auch bei abgestecktem 
Debugger.

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.