[Atmel Studio 7] GAS - Registernamen im Debugger

OP #5502498
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
OP #5502789
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.
#5503719
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
#5504562
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.
OP #5505106
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.
#5505427
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren