AVR och JTAG

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
blastur
Inlägg: 194
Blev medlem: 13 mars 2007, 00:07:26
Ort: Göteborg

AVR och JTAG

Inlägg av blastur »

Hej

Jag sitter just nu och hackar på ett litet program för en ATmega32, som jag manipulerar genom JTAG interface. Jag använder mig av en USB-programmerare från Olimex, som skall vara ungefär som JTAG ICE. All utveckling sker i AVR Studio 4.

Hur som helst, mina problem börjar när jag försöker steppa genom kod och debugga mitt program. Om jag väljer t.ex "Run to cursor" så returnerar aldrig kontrollen till mig, trots att jag kan se på mina LEDs att koden har passerat punkten där jag ville stanna!

Min kod ser ungefär ut såhär:

rad1: initieraSkärm();
rad2: initieraAnnanSkit();
rad3:
rad4: while (1) {
rad5: blinkaMedLED();
rad6: sovLite();
rad7: }

Om jag sätter run to cursor och sätter markören på rad 3, så tappar jag kontrollen och programmet körs och min LED börjar blinka, vilket tycker jag indikerar att rad 3 har passerats! Varför får jag inte tillbaks kontrollen?

Jag har också märkt att när jag manuellt steppar genom vissa anrop, t.ex _delay_ms() (från util/delay.h) så tar det väldigt lång tid. Jag inser ju att det tillkommer viss overhead vid debugging, men skall det verkligen ta flera sekunder (MINUTER?!) att steppa genom en delay på några millisekunder?
Användarvisningsbild
Stinrew
Inlägg: 954
Blev medlem: 20 augusti 2006, 03:14:41
Ort: Motala
Kontakt:

Inlägg av Stinrew »

Gör det någon skillnad om du skriver in någon simpel instruktion på rad 3, istället för att ha den blank?
Användarvisningsbild
AndLi
Inlägg: 18319
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Inlägg av AndLi »

blastur: Min teori är: Eftersom rad 3 inte genererar någon kod, kan det inte sättas någon breakpoint som behövs för att göra en Run to cursor.

Man kan ju tycka att AVR studio då skulle lägga breakpointen på nästa rad som genererar kod, eller generera ett felmedeladne om att man inte kan lägga breakpoints på den raden...

Så prova att lägga cursorn på rad 4 istället, och kom ihåg att debugrar oftas beter sig "underligt"...

ÄR delay rutinen en loop du ska steppa igenom?
Skriv svar