Forum: Mikrocontroller und Digitale Elektronik Probleme beim Debuggen mit Dragon und JTAG am MEGA32


von J. T. (chaoskind)


Lesenswert?

Hallo Forum =)

Mal wieder ein Problem... Ich versuche mich mit dem Debuggen per JTAG 
vertraut zu machen.

Dazu hab ich als erstes folgendes Progrämmchen geschrieben
1
.include  "m32def.inc"
2
3
.def a1 = r16
4
.def a2 = r17
5
.equ sys_clock    = 8000000
6
7
.include "m32def.inc"          ;Definitionsdatei laden
8
.cseg                  ;Beginn eines Code-Segmentes
9
.org 0x0000  
10
              ;Startadresse=0
11
  rjmp  start
12
13
14
15
16
start:
17
18
  
19
20
    ;Stackpointer initialisieren
21
    ldi    r16,LOW(RAMEND)        ;Stackpointer (low) auf
22
    out    spl,r16            ;RAM-Ende setzen
23
    ldi    r16,HIGH(RAMEND)      ;Stackpointer (high) auf
24
    out    sph,r16            ;RAM-Ende setzen
25
26
    ;Datenrichtung
27
    ldi    a1,255
28
    out    ddra,a1
29
    out    ddrb,a1
30
    out    ddrc,a1
31
    out    ddrd,a1  
32
33
hell:
34
    
35
36
sbi   porta,1
37
nop
38
nop
39
nop
40
cbi    porta,1
41
nop
42
nop
43
rjmp  hell

Als Editor nutze ich übrigens AVR Studio 4.18. Wenn ich das nun per AVR 
Simulator debugge, läuft alles wie es so soll, porta1 wird halt 
getoggelt.

Wenn ich nun in den JTAG Modus wechsel, aktiviere ich vorher die 
OCD-fuse, wobei es am Ergebnis nichts ändert, ob sie gesetzt ist oder 
nicht. Ich starte das debuggen, klicke step into (F11), manchmal steppt 
er dann direkt 2 Programmschritte, ändert aber in den Registern nichts, 
und irgendwelche Ports werden scheinbar wild hin und hergetoggelt, und 
nach einigen "Doppelschritten" verschwindet der gelbe Pfeil, es 
erscheint ein Disassemblerfenster
1
---- blink.asm ------------------------------------------------------------------------------------
2
11:         rjmp  start
3
+00000000:   FFFF        ???                      Data or unknown opcode
4
21:           ldi    r16,LOW(RAMEND)        ;Stackpointer (low) auf
5
+00000001:   FFFF        ???                      Data or unknown opcode
6
22:           out    spl,r16            ;RAM-Ende setzen
7
+00000002:   FFFF        ???                      Data or unknown opcode
8
23:           ldi    r16,HIGH(RAMEND)      ;Stackpointer (high) auf
9
+00000003:   FFFF        ???                      Data or unknown opcode
10
24:           out    sph,r16            ;RAM-Ende setzen
11
+00000004:   FFFF        ???                      Data or unknown opcode
12
27:           ldi    a1,255
13
+00000005:   FFFF        ???                      Data or unknown opcode
14
28:           out    ddra,a1
15
+00000006:   FFFF        ???                      Data or unknown opcode
16
29:           out    ddrb,a1
17
+00000007:   FFFF        ???                      Data or unknown opcode
18
30:           out    ddrc,a1
19
+00000008:   FFFF        ???                      Data or unknown opcode
20
31:           out    ddrd,a1  
21
+00000009:   FFFF        ???                      Data or unknown opcode
22
36:       sbi   porta,1
23
+0000000A:   FFFF        ???                      Data or unknown opcode
24
37:       nop
25
+0000000B:   FFFF        ???                      Data or unknown opcode
26
38:       nop
27
+0000000C:   FFFF        ???                      Data or unknown opcode
28
39:       nop
29
+0000000D:   FFFF        ???                      Data or unknown opcode
30
40:       cbi    porta,1
31
+0000000E:   FFFF        ???                      Data or unknown opcode
32
41:       nop
33
+0000000F:   FFFF        ???                      Data or unknown opcode
34
42:       nop
35
+00000010:   FFFF        ???                      Data or unknown opcode
36
43:       rjmp  hell
37
+00000011:   FFFF        ???                      Data or unknown opcode
38
---- No Source ------------------------------------------------------------------------------------
39
+00000012:   FFFF        ???                      Data or unknown opcode
40
+00000013:   FFFF        ???                      Data or unknown opcode
41
+00000014:   FFFF        ???                      Data or unknown opcode
42
+00000015:   FFFF        ???                      Data or unknown opcode
43
+00000016:   FFFF        ???                      Data or unknown opcode
44
+00000017:   FFFF        ???                      Data or unknown opcode
45
+00000018:   FFFF        ???                      Data or unknown opcode
46
+00000019:   FFFF

Manchmal (meistens) wird das Programm aber auch korrekt Schritt für 
Schritt durchgesteppt, dennoch ändert sich in den Registern nichts und 
es werden immer noch wild Ports getoggelt. Wenn er quasi im 
"Einzelschrittmodus" ist, läuft das Programm einmal bis zum rjmp hell 
und dann verschwindet wieder der gelbe Pfeil, wenn ich dann auf Pause 
drücke, kommt das selbe Disassemblerfenster.

Wenn ich DDRA1 von Hand auf 1 setze,(indem ich auf des entsprechende 
Kästchen drücke, das es schwarz wird) und dann porta,1 auf setze, 
leuchtet die Diode auf, die ich dort angeschloßen habe.

Ich finds langsam irgendwie verwirrend..., bis grad konnte ich noch per 
JTAG flashen, nun gibt er mir auch noch den Fehler "WARNING: FLASH byte 
address 0x0000 is 0xFF (should be 0x1A).. FAILED!" aus...

Ich kann aber weiterhin Fuses auslesen und schreiben... Ich hoffe, ihr 
könnt mir da irgendwie weiterhelfen =)

MfG jendrik

von J. T. (chaoskind)


Lesenswert?

Das mit dem Flashen per JTAG hat sich geklärt, hab das kabel an TCK 
verkürzt, nun geht es wieder! =)

Aber das Grundproblem, mit dem Debuggen ist noch immer ungeklärt.

(edit) grrr... doch nicht.. hatte auf Programm EEPROM geklickt.. das 
kann er also beschreiben, aber den Flash nach wie vor nicht.

von J. T. (chaoskind)


Lesenswert?

Problem hat sich geklärt, ich hab nun nochmal deutlich die Leitungen 
verkürzt, und nun geht sowohl das Debuggen als auch das Flashen.

MfG jendrik

von Spess53 (Gast)


Lesenswert?

Hi

>Problem hat sich geklärt, ich hab nun nochmal deutlich die Leitungen
>verkürzt, und nun geht sowohl das Debuggen als auch das Flashen.

Wie lang waren sie denn?

MfG spess

von J. T. (chaoskind)


Lesenswert?

Vorher knapp 50cm jetzt ca 20cm =)

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.