Forum: Mikrocontroller und Digitale Elektronik IAR MSP debug


von Compiler (Gast)


Lesenswert?

Hallo,

ich versuche eine Andwenung zu debuggen, aber ich kann an einigen 
Stellen im Code keinen Breakpoint setzen, erst eine Zeile später. Auch 
sind die Variablen "nicht available" in der Debug-Session obwohl sie 
benutzt werden. Wie kannn ich das abschalten ???


Danke !

von Jörg S. (joerg-s)


Lesenswert?

Wahrscheinlich hast du die Code Optimierung nicht auf "none" gestellt.

Optionen -> C/C++ Compiler -> Code -> Optimizations -> None
(Passend für EW430 v3.21)

von Compiler (Gast)


Lesenswert?

Funktioniert nicht.

von Jörg S. (joerg-s)


Lesenswert?

Was funktioniert nicht? Hat die Umstellung nichts gebracht, oder hast du 
die Einstellung beim Compiler nicht gefunden?
Schon mal ein Project -> Clean gemacht?

von Compiler (Gast)


Lesenswert?

> Was funktioniert nicht? Hat die Umstellung nichts gebracht, oder hast du
> die Einstellung beim Compiler nicht gefunden?
Das hatte ich vorher probiert und es hat nicht funktioniert da er dann 
über ein einfaches Konstrukt meckert:

Error[Ta005]: This intrinsic function can only be used in interrupt or 
monitor functions ...

Ich habe "__bic_SR_register_on_exit(LPM1_bits);" als static inline 
deklariert und dann kommt diese Fehlermeldung bei "none". Aus diesem 
Grund habe ich ein anderes Level genommen und alle Schalter bis auf 
"function inline" ausgeschaltet.

Ich denke mal das es mal wieder, wie so oft, hidden options gibt die 
ohne Nachfragen ein- bzw. ausgeschaltet werden.

> Schon mal ein Project -> Clean gemacht?
Ja klar.

von Christian R. (supachris)


Lesenswert?

Compiler schrieb:
> Das hatte ich vorher probiert und es hat nicht funktioniert da er dann
> über ein einfaches Konstrukt meckert:
>
> Error[Ta005]: This intrinsic function can only be used in interrupt or
> monitor functions ...
>
> Ich habe "__bic_SR_register_on_exit(LPM1_bits);" als static inline
> deklariert und dann kommt diese Fehlermeldung bei "none".

Womit der Compiler völlig Recht hat. Das kann man ausschlicßlich in ISRs 
benutzen, da das gesicherte Statusregister auf dem Stack mainpuliert 
wird.

Wo wolltest du das denn benutzen?

von Compiler (Gast)


Lesenswert?

> Wo wolltest du das denn benutzen?

Ich habe es als static inline function (im Header-File) deklariert und 
benutze es auch nur in der ISR.
Der Compiler meckert bei abgeschalteter "function inline" Option schon 
beim sichten des Header-Files. Es ist ihm schlichtweg egal ob es 
überhaupt oder wo es benutzt wird. Sehr merkwürdig, muss man sich für 
Level-None neue Sourcen schreiben oder wie !? (ganz schwach IAR !)

von Christian R. (supachris)


Lesenswert?

Hm, naja, die Frage ist, wieso du das überhaupt nochmal selber 
deklarierst? Das ist doch eh schon dabei. Das gibts sogar als schönes 
Makro EXIT_LPM1 oder so ähnlich...und dahinter verbrigt sich ein 
einziger Assembler-Befehl, egal welche Optimierungsstufe angewendet 
wird.

von Jörg S. (joerg-s)


Lesenswert?

Christian R. schrieb:
> Das gibts sogar als schönes Makro EXIT_LPM1 oder so ähnlich...
LPM1_EXIT

von Compiler (Gast)


Lesenswert?

> Hm, naja, die Frage ist, wieso du das überhaupt nochmal selber
> deklarierst? Das ist doch eh schon dabei. Das gibts sogar als schönes
> Makro EXIT_LPM1 oder so ähnlich...
Tja, ich wollte beim Testen des LPM nicht durch alle Sourcen und das 
LPM1_EXIT in ein z.B. LPM2_EXIT ersetzen. Darum EINE Stelle zum ändern, 
der Rest ist murks.

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.