Forum: Compiler & IDEs [Atmel Studio 7] GAS - Registernamen im Debugger


von Sascha H. (hausler)


Lesenswert?

Hallo zusammen!

Ich hab in AS7 ein GCC Projekt mit sowohl C Quellen als auch Assembler
Quellen (.s). Der GAS hat ja eine etwas andere Syntax als der Atmel
Assembler, weswegen ich mich für meine Register überall #define's
benutze anstatt .def's.

Das Problem ist aber, dass das beim Debuggen nicht erkannt wird. D.h.
wenn ich mit der Maus über mein Register "mein_lieblings_register" gehe
dann wird mir nicht der Wert des Registers angezeigt, sondern nur
"unknown identifier".

Ich hab auch schon andere Möglichkeiten gefunden die Register zu 
definieren, wie etwa

1
mein_lieblings_register = 17

aber das führt auch nicht zu dem gewünschten Effekt.

Weiß jemand ob es irgend ne Möglichkeit gibt dem Debugger die Namen der
Register mitzuteilen? Wenn ich im Debugger oder im Watch-Fenster meine
Register nicht mit Namen benutzen kann muss ich mir ja doch wieder alle
Register merken :)

Viele Grüße

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Probiere mal die "-g3" Debug Option, die müsste #defines mit einbringen.

von Sascha H. (hausler)


Lesenswert?

Hab ich schon drin, funktioniert leider nicht.

Ich kompiliere die C Datei mit
1
-x c -funsigned-char -funsigned-bitfields -DDEBUG  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g3 -Wall -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)"

die .s Datei mit
1
-Wa,-gdwarf2 -x assembler-with-cpp -c -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" -I "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -Wa,-g

und linke mit
1
-Wl,-Map="$(OutputFileName).map" -Wl,--start-group -Wl,-lm  -Wl,--end-group -Wl,--gc-sections -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"

Das sind im Wesentlichen die Standardwerte die AS7 vorgibt. Den -g3 hab 
ich auch schon bei der .s dazugepackt, aber das bewirkt nix.

von Markus F. (mfro)


Lesenswert?

Sascha H. schrieb:
> anstatt .def's

der gas für ARM hat dafür die Direktive .req
Gibt's die bei AVR nicht?

von Sascha H. (hausler)


Lesenswert?

Ne leider nicht. Hatte ich für ARM auch gefunden, aber spuckt beim 
Assemblieren nur "unknown pseudo-op '.req'" aus.

von Christopher J. (christopher_j23)


Lesenswert?

Sascha H. schrieb:
> die .s Datei mit
> -Wa,-gdwarf2 -x assembler-with-cpp -c -mmcu=atmega328p -B "C:\Program
> Files
> (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p "
> -I "C:\Program Files
> (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include"  -MD -MP
> -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -Wa,-g

Da vermisse ich aber das -g3

von Sascha H. (hausler)


Lesenswert?

Wie ich oben geschrieben habe:

"Den -g3 hab ich auch schon bei der .s dazugepackt, aber das bewirkt 
nix."

von Christopher J. (christopher_j23)


Lesenswert?

Sascha H. schrieb:
> Wie ich oben geschrieben habe:
>
> "Den -g3 hab ich auch schon bei der .s dazugepackt, aber das bewirkt
> nix."

Sorry, hatte ich glatt überlesen. Ist die Problematik immer noch die, 
dass bei einem Mouseover im Studio nichts angezeigt wird? Hast du es mal 
mit bare-metal gdb probiert? Ich würde das -g3 auch in den Linkeraufruf 
mit reinpacken. Das -gdwarf2 dagegen würde ich rauswerfen. Die Option -g 
impliziert sowieso ein -gdwarfX, wobei X je nach gcc-Version auch 
deutlich größer als 2 sein kann. Jedenfalls musste ich das noch nie 
explizit angeben und konnte trotzdem #defines dereferenzieren, wenn auch 
mit dem gcc-arm.

von Sascha H. (hausler)


Lesenswert?

Manuell hab ich den GDB für den AVR noch nicht benutzt, nein. Wollte mir 
das debugwire Zeugs eigentlich nicht händisch antun ;)

Den -dwarf2 Befehl lässt mich AS7 nicht rausnehmen. -g3 kann ich manuell 
dazuschreiben, aber in der Konfigurationsmaske bietet mir AS7 als 
Debugflags nur -g an. Beides sieht für mich zumindest so aus, als ob 
Atmel sich dabei schon was gedacht haben muss. Ich meine auch schonmal 
irgendwo gelesen zu haben, dass man dwarf2 benutzen soll, aber das war 
auch nur in den Tiefen irgendeines nicht sonderlich hilfreichen Forums.

-g3 auch noch im Linker hat aber auch nicht funktioniert.

: Bearbeitet durch User
von Christopher J. (christopher_j23)


Lesenswert?

Sascha H. schrieb:
> -g3 auch noch im Linker hat aber auch nicht funktioniert

Wenn es sowohl im Assembler, als auch im Linker angegeben ist, dann 
sollte es eigentlich funktionieren. Ich werde es morgen mal mit dem 
gcc-arm gegentesten, also vom gdb aus ein #define aus dem Assembler 
dereferenzieren. Bisher hatte ich es auch lediglich mit #defines in 
.c-Dateien getestet.

von Sascha H. (hausler)


Lesenswert?

Christopher J. schrieb:
> Ich werde es morgen mal mit dem
> gcc-arm gegentesten

Das ist lieb, danke. Ich geh davon aus, dass das mit GDB schon 
funktioniert, nur dass AS7 darauf irgendwie nicht klar kommt.

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.