Forum: Mikrocontroller und Digitale Elektronik Was macht Atollic TrueStudio nach Debugging-Ende?


von atollic (Gast)


Lesenswert?

Hi,

ich entwickle und debugge aktuell Software für einen STM32F429 in 
Atollic TrueStudio 9.0.1. Debugschnittstelle ist der GDB-Server mit SWD 
am STLink.

Wenn ich das Debugging mittels des roten Quadrats in der IDE beende, 
bleibt der Controller stehen. Um einen richtigen Reset scheint es sich 
jedoch nicht zu handeln, da ich nun einen Output am PWM-Timer sehe und 
der GPIO, der die PWM-Endstufe enabled auf "high" geht. Das stellt für 
mich ein Problem dar, da ich nicht möchte dass in diesem inaktiven 
Zustand meine Endstufe läuft.

Wie nennt man dieses Verhalten/den Zustand? Kann man das in Atollic so 
umstellen, sodass der der Controller im Reset festgehalten wird?

vielen Dank

von c-hater (Gast)


Lesenswert?

atollic schrieb:

> Wenn ich das Debugging mittels des roten Quadrats in der IDE beende,
> bleibt der Controller stehen. Um einen richtigen Reset scheint es sich
> jedoch nicht zu handeln, da ich nun einen Output am PWM-Timer sehe und
> der GPIO, der die PWM-Endstufe enabled auf "high" geht.

Nein, der Controller bleibt offensichtlich nicht stehen, sondern er tut 
etwas. Eben das was du ihm per Programm aufgetragen hast zu tun.

Und natürlich handelt es sich nicht um einen Reset. Ein Debugger 
resettet  von sich aus das Target (wenn überhaupt) nur dann, wenn er das 
Programm startet, danach nicht mehr. Wäre auch vollkommen unsinnig.

Und solange es auf keinen Breakpoint trifft, läuft das Programm einfach. 
Daran ändert sich auch nix, wenn der Debugger komplett die Fühler 
einzieht. Das Programm läuft weiter.

> Das stellt für
> mich ein Problem dar, da ich nicht möchte dass in diesem inaktiven
> Zustand meine Endstufe läuft.

Es gibt keinen "inaktiven Zustand". Entweder das Programm läuft, oder es 
ist angehalten und der Debugger hat die Kontrolle. Allenfalls kannst du 
mit dem Debugger einen Reset produzieren, auch wenn der Debugger gerade 
nicht die Kontrolle hat. Aber wenn der Debugger nicht mehr verbunden 
ist, kann er den Reset nicht halten, dann läuft das Programm los. Wie 
nach jedem Reset.

> Wie nennt man dieses Verhalten/den Zustand? Kann man das in Atollic so
> umstellen, sodass der der Controller im Reset festgehalten wird?

Nur dadurch, dass du im Debugger einen manuellen Reset auslöst und den 
Debugger NICHT beendest. Damit aber wenigstens das wirklich 
zuverlässig funktioniert, muss zusätzlich der erste Breakpoint auf der 
ersten abzuarbeitenden Instruktion nach einem Reset stehen.

von atollic (Gast)


Lesenswert?

Danke c-hater für deinen Beitrag.

Im Allgemeinen mag das stimmen. In meinem konkreten Fall glaube ich das 
nicht. Kennst du den Prozessor und/oder die verwendete 
Entwicklungsumgebung aus eigener Erfahrung?

Wenn ich das Programm im Debuggingmodus auf den Controller übertrage und 
das Debugging direkt am ersten Breakpoint (vor dem Beginn von main) 
abbreche, verhält sich alles wie du es beschrieben hast; das Programm 
läuft normal ohne Debugger los.

Wenn Programm jedoch bereits lief tritt das merkwürdige Verhalten auf, 
das ich oben beschrieben habe. Der IO-Pin, der für das Enable der 
Endstufe verantwortlich ist, wird in nur einer Prozedur gesetzt. Diese 
Prozedur wird nur an einer Stelle im Programm aufgerufen und zwar dann, 
wenn ein Taster der über Polling abgefragt wird mehr als zwei Sekunden 
gedrückt wurde. Warum sollte der Controller also diese Routine anlaufen, 
wenn der Taster sicher nicht betätig wird?

von c-hater (Gast)


Lesenswert?

atollic schrieb:

> Wenn Programm jedoch bereits lief tritt das merkwürdige Verhalten auf,
> das ich oben beschrieben habe. Der IO-Pin, der für das Enable der
> Endstufe verantwortlich ist, wird in nur einer Prozedur gesetzt. Diese
> Prozedur wird nur an einer Stelle im Programm aufgerufen und zwar dann,
> wenn ein Taster der über Polling abgefragt wird mehr als zwei Sekunden
> gedrückt wurde. Warum sollte der Controller also diese Routine anlaufen,
> wenn der Taster sicher nicht betätig wird?

Typischer Anfängerfehler: Du stellst das, von dem du glaubst, was dein 
Programm tun müsste, als unbezweifelbar das dar, was es wirklich tut. 
Wenn es des aber täte, wozu brauchst du denn dann noch einen Debugger?

Außerdem, um das herauszufinden, müßte man wohl das Programm sehen und 
zusätzlich wissen, was genau du alles im Debugger getan hast. Sprich: 
angesichts der Tatsache, dass nur du diese beiden Sachen kennst, kannst 
nur du das herausfinden...

von Johannes S. (Gast)


Lesenswert?

AS verwendet ja auch den gdb debugger und einiges wird über die 'Lauch 
configuration' gesteuert. Da kann man (je nach Debughardware) die 
Scripts beim Init anpassen. Habe AS aber nicht mehr installiert und auch 
nicht mehr im Kopf was da alles möglich war.

von NichtWichtig (Gast)


Lesenswert?

Atollic TrueSTUDIO 9.1.0 mit ST-Link und STM32F103CB löst beim Beenden 
der debug session einen Reset aus.

Hier läuft der µC mit einem LCD und ein Sekundencounter wird wieder auf 
0 gesetzt.

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.