JTAG hopper rundt i koden

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
Hej

Jeg har kæmpet med et meget mystisk problem:
(Har også spurgt i dk.teknik.elektronik).

System:

AVR Studio 4.18
WINAVR
JTAG Ice MkII
Olimex board med MEGA32

Problem:

Når jeg laver et breakpoint et sted i koden, sker det at den kommer dertil
på mystisk vis.
Eksempel:

if( x == 7 )         Breakpoint #1
{
  x++;                Breakpoint #2
}

Her kan den finde på at stoppe ved breakpoint #2 UDEN at komme til #1 ...

Et andet eksempel er nr jeg singlestepper i en switch. Her kan den pludselig
hopper fra een case til en anden.
Og når jeg så ser på hvad variablen jeg lavede en switch på, egentlig er, så
er værdien OK, men den er i en anden case...

Virkelig, virkelig mystisk. Jeg har ALDRIG set noget lignende.
Jeg kan nogle gange bare indføre noget dummy kode, eller flytte rundt på to
cases, så fungerer det igen.

Jeg har overvejet stack overflow, med det er tilsyneladende ikke problemet.
Kan det være noget med en .elf fil som ikke er opdateret?

Håber der er en der kan hjælpe mig ud af dette problem, for det er dælme
træls når man ikke kan debugge !

mvh
Kåre



Re: JTAG hopper rundt i koden

Quoted text here. Click to load it

Jeg har haft noget lignende på en ARM med JTAG. Det var flashen der kørte
for stærkt og blev ustabil så koden crashede engang imellem. Der manglede en
waitstate, efter den blev indført kørte det. Fejlen var der ikke når man
kørte i RAM, da den er hurtig nok til at køre uden waitstates.

Men jeg ved ikke om det samme gælder for din AVR.

--
Ulrik Smed
Aarhus, Denmark



Re: JTAG hopper rundt i koden
Hvis du har kode optimering aktiveret, da kan der ske disse ting, især når
man optimerer for kodestørrelse.

Fx kan x++; være genbrugt flere andre steder i koden:

 if( x == 999 )
 {
  x++;                // Dette kan fx udføres ved at genbruge koden i
breakpoint #2
 }
....
 if( x == 7 )         Breakpoint #1
 {
  x++;                Breakpoint #2
 }

Christen



Re: JTAG hopper rundt i koden
Quoted text here. Click to load it
Sandsynligvis pga. optimizer rearrangerer koden.

Quoted text here. Click to load it
Garanteret pga. optimizer rearrangerer koden.

Prøv at bygge projektet uden optimering.

Leo Havmøller.


Re: JTAG hopper rundt i koden
Quoted text here. Click to load it

yep, c sourcen og assembly koden ligner ikke nF8%dvendigvis hinananden
ret meget
nE5%r man har optimering.

hvis man kan, sE5% skift til at se c/asm mixed sE5% bliver det helt
tydeligt.

-Lasse

Re: JTAG hopper rundt i koden
Quoted text here. Click to load it


Taktaktaktaktaktaktaktaktaktaktaktaktaktaktaktaktaktaktaktaktaktaktaktak
taaaaaaaaaaaaaaaaaaaak !!!!
Mand jeg troedejeg var ved at blive tosset.
Har arbejdet med mange andre udviklingsværktøjer, men aldrig prøvet det her
før.
Troede squ jeg havde mistet grebet om at lave C-kode...

Kodeoptimering stod til "Optimize for size", og ja, så kan det åbenbart gå
galt i dette miljø.
Det gør det sikkert også andre steder. Men i de andre miljøer jeg arbejder
i, er der som default opsætning IKKE valgt optimering i debug mode.

Igen, mange tak!
Nu er jeg på banen igen :o)

mvh
Kåre



Site Timeline