Forum: Mikrocontroller und Digitale Elektronik Fehler im AVR Studio "unable to bin line xx."


von Philipp (Gast)


Lesenswert?

Hallo,

bei einem Projekt im AVR-Studio bekommen ich beim Start der Simulation 
eine Fehlermeldung (Pop-Up), mit der ich nicht viel anfangen kann:
"One or more breakpoints or tracepoints could not be set and have been 
disabled. the Program has been stopped at the reset vector. Do you want 
to continue execution".
Im Message-Fenster erscheint zusätzlich die Meldung:
"Debugger: 'Break at line main.c:346' has been disabled. Unable to bind 
line 346 in file "main.c" to a program memory address."

Der Build-Prozess  läuft problemlos durch, es sind auch noch reichlich 
Ressourcen vorhanden.

Im disassemblierten Code fehlt mir auch die Variablenzuweisung, die ich 
in der benannten Zeile (main.c: Zeile 346) vorgenommen habe. Wenn ich 
diese Zeile lösche, erneut kompiliere und dann einen hex-Vergleich mir 
dem bisherigen hex durchführe, finde ich keine Unterschiede.
Das AVR-Studio/WinAVR scheint hier ein Problem mit dem kompilieren zu 
haben ohne es zu merken.

Dabei sollte "my_mode = 20;" (das ist die fragwürdige Zeile) doch eine 
Operation sein, die das AVR-Studio noch nicht an seine Grenzen bringt 
...

Ich verwende das AVR-Studio V4.13SP2 mit WinAVR vom 21.12.07 für einen 
ATMEGA8515@8MHz. Das Problem tritt auch auf verschiedenen Rechnern auf.

Kann mir jemand einen Tipp geben, wo ich einen Fehler gemacht haben 
könnte?

Danke + Gruß
Philipp

von egberto (Gast)


Lesenswert?

schon mal die Optimierung ausgeschaltet?

von Oliver (Gast)


Lesenswert?

Wenns ganz ohne Optimierung nicht geht (wg. delay.h), probiers mal mit 
Stufe 1.


Ansonsten ist das kein Problem des Compilers. In den höheren 
Optimierungsstufen gibt es eben keine 1:1-Zuordnung von C-Zeilen und 
Assembler-Abschnitten mehr. Und auf Zeilen, die sich im Assembler nicht 
klar widerfinden lassen (bzw. für die dann keine Debug-Info vorhanden 
ist), lässt sich auch kein Breakpoint setzen.

Oliver

von Philipp (Gast)


Lesenswert?

Danke für die Tipps!

Die einfache Zuweisung "my_mode = 20;" hat der Complier wegoptimiert, da 
die Variable im Anschluss wieder beschrieben wird, ohne davor gelesen zu 
werden. Ich hatte die Zeile nur zum Test eingebaut. Mit anderen 
Befehlen, die zu diesem Moment gerechnet werden müssen und kein 
Optimierungspotatial bieten, ist alles i.O.

Gruß
Philipp

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.