Debugga i AVR-Studio med C (gcc) + Assembler?
Debugga i AVR-Studio med C (gcc) + Assembler?
Har precis börjat pula så smått med AVR Studio 4, och kopplat in gcc från WinAVR-paketet. Är väldigt nöjd med den miljön, och speciellt simulatorn/debuggern.
Satt i fredags och till slut (tror jag) så fick jag till anrop av en assemblerrutin, i separat fil, från huvudprogrammet i C. Det hela byggde utan protest i alla fall. Men programmet verkar inte hoppa in i ASM-rutinen.
-Min fråga är, är det någon som kan svara på om debuggern/simulatorn stödjer både C och ASM samtidigt, eller om jag skall förmoda att jag ännu gjort fel? (Har inte provat det på "målsystemet" ännu, ATtiny2313)
Satt i fredags och till slut (tror jag) så fick jag till anrop av en assemblerrutin, i separat fil, från huvudprogrammet i C. Det hela byggde utan protest i alla fall. Men programmet verkar inte hoppa in i ASM-rutinen.
-Min fråga är, är det någon som kan svara på om debuggern/simulatorn stödjer både C och ASM samtidigt, eller om jag skall förmoda att jag ännu gjort fel? (Har inte provat det på "målsystemet" ännu, ATtiny2313)
Med gcc, gdb, emacs och simulavr går det lika bra att debugga/simulera i c som i assembler. Den hoppar automatiskt in i rätt källkodsfil om man t.ex. stegar programmet. Brytpunkter kan sättas i c-filer och assemblerfiler 'samtidigt'.
Hur det är i AVR Studio 4 känner jag inte till.
Troligen går det där också. Annars är det dåligt.
PS. kontrollera att debuggerflaggorna är på för gcc. '-g' för c-kompilering och kanske också '-gstabs' för assemblering, om avr-gcc används som assembler.
Hur det är i AVR Studio 4 känner jag inte till.
Troligen går det där också. Annars är det dåligt.
PS. kontrollera att debuggerflaggorna är på för gcc. '-g' för c-kompilering och kanske också '-gstabs' för assemblering, om avr-gcc används som assembler.
Hittade under "Known Issues" i hjälpen för AVR S
Hittade denna not i hjälpen för gcc-plugin i AVR-Studio, trisst, annars så började jag gilla AVR-Studio.
"Debugging projects with Assembly and C sourcefiles is not working.
The GNU assembler is not capable of outputting dwarf2 debug information.
This seems to confuse the elf/dwarf parser when stepping over or into assembly routines from C."
"Debugging projects with Assembly and C sourcefiles is not working.
The GNU assembler is not capable of outputting dwarf2 debug information.
This seems to confuse the elf/dwarf parser when stepping over or into assembly routines from C."
Så här står det i gcc-manualen:
-g Produce debugging information in the operating systems native format (stabs, COFF, XCOFF, or DWARF 2). GDB can work with this debugging information.
Så frågan är vad som är 'systems nativeformat' på din maskin.
Jag kör Linux, och det är som sagt inga problem att debugga c-kod och assember-kod samtidigt.
Givetvis rekommenderar jag Linux. Ubuntu t.ex. är mycket enkel att installera, liksom avr-gcc ,gdb, emacs och alla övriga program som behövs. Just AVR-Studio finns nog inte, tyvärr.
http://ubuntuforums.org/showthread.php?t=433427
För mig är Emacs det skälvklara miljön,
men inte så lätt i början, dessvärre.
Mina kopileringsflaggor är, som exempel:
c-kod:
avr-gcc -I. -I/usr/local/avr/include -g -mmcu=atmega48 -O2 -fpack-struct -fshort-enums -funsigned-bitfields -funsigned-char -Wall -Wstrict-prototypes -Wa,-ahlms=aa.lst -c aa.c -o aa.o
assembler-kod:
avr-gcc -I. -I/usr/local/avr/include -mmcu=atmega48 -x assembler-with-cpp -Wa,-gstabs,-ahlms=lowlevel.lst -c lowlevel.S -o lowlevel.o
länkning:
avr-gcc -Wl,-Map,aa.out.map -mmcu=atmega48 -lm -L/usr/local/avr/lib/avr4/ -o aa.out aa.o lowlevel.o
-g Produce debugging information in the operating systems native format (stabs, COFF, XCOFF, or DWARF 2). GDB can work with this debugging information.
Så frågan är vad som är 'systems nativeformat' på din maskin.
Jag kör Linux, och det är som sagt inga problem att debugga c-kod och assember-kod samtidigt.
Givetvis rekommenderar jag Linux. Ubuntu t.ex. är mycket enkel att installera, liksom avr-gcc ,gdb, emacs och alla övriga program som behövs. Just AVR-Studio finns nog inte, tyvärr.
http://ubuntuforums.org/showthread.php?t=433427
För mig är Emacs det skälvklara miljön,
men inte så lätt i början, dessvärre.
Mina kopileringsflaggor är, som exempel:
c-kod:
avr-gcc -I. -I/usr/local/avr/include -g -mmcu=atmega48 -O2 -fpack-struct -fshort-enums -funsigned-bitfields -funsigned-char -Wall -Wstrict-prototypes -Wa,-ahlms=aa.lst -c aa.c -o aa.o
assembler-kod:
avr-gcc -I. -I/usr/local/avr/include -mmcu=atmega48 -x assembler-with-cpp -Wa,-gstabs,-ahlms=lowlevel.lst -c lowlevel.S -o lowlevel.o
länkning:
avr-gcc -Wl,-Map,aa.out.map -mmcu=atmega48 -lm -L/usr/local/avr/lib/avr4/ -o aa.out aa.o lowlevel.o
Jag kör Emacs22(X11). (Emacs22(GTK) har varit lite problematisk, om än snyggare.)
Med Emacs22(X11) kan man använda musen för att t.ex. sätta brytpunkter. Jag har också konfigurerat så att jag kör 'tags' med musen på ett avancerat sätt och kan då klicka mig fram i kod, headers, manualsidor m.m. ungefär som när man surfar med webbläsare.
Annars är Emacs 'tangentackord' oftast mer effektiva än musen, och då går det lika bra med Emacs-nox.
Med Emacs22(X11) kan man använda musen för att t.ex. sätta brytpunkter. Jag har också konfigurerat så att jag kör 'tags' med musen på ett avancerat sätt och kan då klicka mig fram i kod, headers, manualsidor m.m. ungefär som när man surfar med webbläsare.
Annars är Emacs 'tangentackord' oftast mer effektiva än musen, och då går det lika bra med Emacs-nox.