Atmel JTAG ICE mk-II RSP_ILLEGAL_JTAG_ID

OP #7640166
Lesenswert?

Hallo,

ich habe zwei Atmel JTAG ICE mk-II. Einen mit Seriennr. A09-0041.. und einen mit Seriennr. B000.... auf dem Etikett. Also beide Hardware Rev. 1 (Hardware revision 1 supports both PDI and aWire. Serial numbers start with A09-0041 or B0...). Ich teste sie über den JTAG-Anschluss an einem Atmel MEGA-1284P XPLAINED mit avrdude unter Linux. Der mit Seriennr. A09-0041 funktioniert, der mit Seriennr. B000.. liefert den Fehler:

1
avrdude jtagmkII_program_enable() warning: bad response to enter progmode command: RSP_ILLEGAL_JTAG_ID
2
avrdude jtagmkII_program_enable() warning: retrying with external reset applied
3
avrdude jtagmkII_program_enable() warning: bad response to enter progmode command: RSP_ILLEGAL_JTAG_ID
4
avrdude jtagmkII_program_enable() error: JTAGEN fuse disabled?
5
avrdude main() error: initialization failed, rc=-1
6
        - double check the connections and try again
7
        - use -B to set lower ISP clock frequency, e.g. -B 125kHz
8
        - use -F to override this check

Aus AVR067: JTAGICE mkII Communication Protocol

1
5.2.18 Illegal JTAG ID (RSP_ILLEGAL_JTAG_ID: 0xA9)
2
The master has attempted to enter programming mode but the JTAG ID does not
3
match the target device.

Diesem Beitrag nach Beitrag "Re: AVR JTAG ICE mkII" könnte das am Kabel liegen, oder? Den zweiten JTAGICE mk-II mit der Fehlermeldung habe ich gerade gebraucht gekauft. Das Flachbandkabel hat zwei bis drei leichte Knickstellen.

Ohne Fehler:

1
$ lsusb
2
Bus 001 Device 012: ID 03eb:2122 Atmel Corp. XMEGA-A1 Explained evaluation kit
3
Bus 001 Device 013: ID 03eb:2103 Atmel Corp. JTAG ICE mkII
4

5
$ avrdude -c jtag2 -p m1284p -P usb -v -n
6

7
avrdude: Version 7.1
8
         Copyright the AVRDUDE authors;
9
         see https://github.com/avrdudes/avrdude/blob/main/AUTHORS
10

11
         System wide configuration file is /etc/avrdude.conf
12
         User configuration file is /home/alesi/.avrduderc
13
         User configuration file does not exist or is not a regular file, skipping
14

15
         Using Port                    : usb
16
         Using Programmer              : jtag2
17
avrdude: usbdev_open(): found JTAGICE mkII, serno: 070000000...
18
JTAG ICE mkII sign-on message:
19
Communications protocol version: 1
20
M_MCU:
21
  boot-loader FW version:        255
22
  firmware version:              7.39
23
  hardware version:              0
24
S_MCU:
25
  boot-loader FW version:        255
26
  firmware version:              7.39
27
  hardware version:              1
28
Serial number:                   07:00:00:00:...
29
Device ID:                       JTAGICEmkII
30
         AVR Part                      : ATmega1284P
31
         Chip Erase delay              : 55000 us
32
         PAGEL                         : PD7
33
         BS2                           : PA0
34
         RESET disposition             : possible i/o
35
         RETRY pulse                   : SCK
36
         Serial program mode           : yes
37
         Parallel program mode         : yes
38
         Timeout                       : 200
39
         StabDelay                     : 100
40
         CmdexeDelay                   : 25
41
         SyncLoops                     : 32
42
         PollIndex                     : 3
43
         PollValue                     : 0x53
44
         Memory Detail                 :
45

46
                                           Block Poll               Page                       Polled
47
           Memory Type Alias    Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
48
           ----------- -------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
49
           eeprom                 65    10   128    0 no       4096    8      0  9000  9000 0xff 0xff
50
           flash                  65    10   256    0 yes    131072  256    512  4500  4500 0xff 0xff
51
           lfuse                   0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
52
           hfuse                   0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
53
           efuse                   0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
54
           lock                    0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
55
           signature               0     0     0    0 no          3    1      0     0     0 0x00 0x00
56
           calibration             0     0     0    0 no          1    1      0     0     0 0x00 0x00
57

58
         Programmer Type : JTAGMKII
59
         Description     : Atmel JTAG ICE mkII
60
         M_MCU HW version: 0
61
         M_MCU FW version: 7.39
62
         S_MCU HW version: 1
63
         S_MCU FW version: 7.39
64
         Serial number   : 07:00:00:00:...
65
         Vtarget         : 3.4 V
66
         JTAG clock      : 891.7 kHz (1.1 us)
67

68
avrdude: AVR device initialized and ready to accept instructions
69
avrdude: device signature = 0x1e9705 (probably m1284p)
70

71
avrdude done.  Thank you.

Mit Fehler:

1
$ lsusb
2
Bus 001 Device 005: ID 03eb:2122 Atmel Corp. XMEGA-A1 Explained evaluation kit
3
Bus 001 Device 004: ID 03eb:2103 Atmel Corp. JTAG ICE mkII
4

5
$ avrdude -c jtag2 -p m1284p -P usb -v -n
6

7
avrdude: Version 7.1
8
         Copyright the AVRDUDE authors;
9
         see https://github.com/avrdudes/avrdude/blob/main/AUTHORS
10

11
         System wide configuration file is /etc/avrdude.conf
12
         User configuration file is /home/alesi/.avrduderc
13
         User configuration file does not exist or is not a regular file, skipping
14

15
         Using Port                    : usb
16
         Using Programmer              : jtag2
17
avrdude: usbdev_open(): found JTAGICE mkII, serno: 00B00000...
18
JTAG ICE mkII sign-on message:
19
Communications protocol version: 1
20
M_MCU:
21
  boot-loader FW version:        255
22
  firmware version:              7.39
23
  hardware version:              0
24
S_MCU:
25
  boot-loader FW version:        255
26
  firmware version:              7.39
27
  hardware version:              1
28
Serial number:                   00:b0:00:00:...
29
Device ID:                       JTAGICEmkII
30
         AVR Part                      : ATmega1284P
31
         Chip Erase delay              : 55000 us
32
         PAGEL                         : PD7
33
         BS2                           : PA0
34
         RESET disposition             : possible i/o
35
         RETRY pulse                   : SCK
36
         Serial program mode           : yes
37
         Parallel program mode         : yes
38
         Timeout                       : 200
39
         StabDelay                     : 100
40
         CmdexeDelay                   : 25
41
         SyncLoops                     : 32
42
         PollIndex                     : 3
43
         PollValue                     : 0x53
44
         Memory Detail                 :
45

46
                                           Block Poll               Page                       Polled
47
           Memory Type Alias    Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
48
           ----------- -------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
49
           eeprom                 65    10   128    0 no       4096    8      0  9000  9000 0xff 0xff
50
           flash                  65    10   256    0 yes    131072  256    512  4500  4500 0xff 0xff
51
           lfuse                   0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
52
           hfuse                   0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
53
           efuse                   0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
54
           lock                    0     0     0    0 no          1    1      0  9000  9000 0x00 0x00
55
           signature               0     0     0    0 no          3    1      0     0     0 0x00 0x00
56
           calibration             0     0     0    0 no          1    1      0     0     0 0x00 0x00
57

58
         Programmer Type : JTAGMKII
59
         Description     : Atmel JTAG ICE mkII
60
         M_MCU HW version: 0
61
         M_MCU FW version: 7.39
62
         S_MCU HW version: 1
63
         S_MCU FW version: 7.39
64
         Serial number   : 00:b0:00:00:...
65
         Vtarget         : 3.4 V
66
         JTAG clock      : 891.7 kHz (1.1 us)
67

68
avrdude jtagmkII_program_enable() warning: bad response to enter progmode command: RSP_ILLEGAL_JTAG_ID
69
avrdude jtagmkII_program_enable() warning: retrying with external reset applied
70
avrdude jtagmkII_program_enable() warning: bad response to enter progmode command: RSP_ILLEGAL_JTAG_ID
71
avrdude jtagmkII_program_enable() error: JTAGEN fuse disabled?
72
avrdude main() error: initialization failed, rc=-1
73
        - double check the connections and try again
74
        - use -B to set lower ISP clock frequency, e.g. -B 125kHz
75
        - use -F to override this check
76

77

78
avrdude done.  Thank you.
#7640174
Lesenswert?

Alexander S. schrieb:

Diesem Beitrag nach Beitrag "Re: AVR JTAG ICE mkII" könnte das am Kabel liegen, oder?

Ja schon. Aber evtl. auch an unterschiedlicher Firmware-Version. Du könntest ja mal versuchen zu updaten oder auch zu downgraden. Auf jeden Fall beide auf gleichen Firmware-Stand bringen ...

Alexander S. schrieb:

Den zweiten JTAGICE mk-II mit der Fehlermeldung habe ich gerade gebraucht gekauft. Das Flachbandkabel hat zwei bis drei leichte Knickstellen.

Das Flachkabel lässt sich tauschen. Du hast ja zwei, also mache einen Kreuztest. Nicht selbständig draufgekommen?

OP #7640409
Lesenswert?

Hallo,

beim gerade gebraucht gekauften JTAG ICE mk-II war das komplette Zubehör dabei - nur das Ersatzflachbandkabel nicht. Ich habe aber eines von meinem anderen JTAG ICE mk-II. Das habe ich jetzt beim nicht funktionierenden JTAG ICE mk-II mit Seriennr. B000. eingesetzt. Leider kommt wieder die gleiche Fehlermeldung:

1
$ lsusb
2
Bus 001 Device 007: ID 03eb:2122 Atmel Corp. XMEGA-A1 Explained evaluation kit
3
Bus 001 Device 006: ID 03eb:2103 Atmel Corp. JTAG ICE mkII
4

5
$ avrdude -c jtag2 -p m1284p -P usb -v -n
6

7
avrdude: Version 7.1
8
         Copyright the AVRDUDE authors;
9
         see https://github.com/avrdudes/avrdude/blob/main/AUTHORS
10

11
         System wide configuration file is /etc/avrdude.conf
12
         User configuration file is /home/alesi/.avrduderc
13
         User configuration file does not exist or is not a regular file, skipping
14

15
         Using Port                    : usb
16
         Using Programmer              : jtag2
17
avrdude: usbdev_open(): found JTAGICE mkII, serno: 00B00000...
18
JTAG ICE mkII sign-on message:
19
Communications protocol version: 1
20
M_MCU:
21
  boot-loader FW version:        255
22
  firmware version:              7.39
23
  hardware version:              0
24
S_MCU:
25
  boot-loader FW version:        255
26
  firmware version:              7.39
27
  hardware version:              1
28
Serial number:                   00:b0:00:00:...
29
Device ID:                       JTAGICEmkII
30
...
31
...
32
...
33
avrdude jtagmkII_program_enable() warning: bad response to enter progmode command: RSP_ILLEGAL_JTAG_ID
34
avrdude jtagmkII_program_enable() warning: retrying with external reset applied
35
avrdude jtagmkII_program_enable() warning: bad response to enter progmode command: RSP_ILLEGAL_JTAG_ID
36
avrdude jtagmkII_program_enable() error: JTAGEN fuse disabled?
37
avrdude main() error: initialization failed, rc=-1
38
        - double check the connections and try again
39
        - use -B to set lower ISP clock frequency, e.g. -B 125kHz
40
        - use -F to override this check

Jetzt bin ich erstmal ratlos...

#7640441
Lesenswert?

Alexander S. schrieb:

Jetzt bin ich erstmal ratlos...

Man könnte mal die vier JTAG-Signale mit dem Oszilloskp betrachten ob da immer gültige Pegel daherkommen. Nachdem der JTAGICE ja an seinem Port Pegelwandler hat könnte einer davon angeschossen sein - er würde ja auch den Rest der Schaltung schützen sodass die innere Schaltung des ICE nur sehr unwahrscheinlich beschädigt ist. Also wenn die JTAG-Signale nicht ok sind (analog messen, nicht mit Logikanalysator!) könnte man sich daran machen einen Pegelwandler auszutauschen.

Moderator Persönliche Seite #7640457
Lesenswert?

Alexander S. schrieb:

nur das Ersatzflachbandkabel nicht.

Die lagen anfangs nicht dabei. Erst als Atmel gemerkt hat, dass die Dinger eine Schwachstelle sind, haben sie welche beigelegt.

Wastl schrieb:

Nachdem der JTAGICE ja an seinem Port Pegelwandler hat könnte einer davon angeschossen sein

Ich habe da auch schon kaputte gewechselt. Vor allem in der A-Version waren die relativ ungeschützt am Ausgang und man konnte sie schon zerstören, wenn man den Stecker eine Reihe falsch eingesteckt hat. Allerdings ist es hier ja die B-Version, die nicht funktioniert. Einen Versuch, die Signale anzusehen, wäre es aber allemal wert.

#7640562
Lesenswert?

Alexander S. schrieb:

Was lasse ich am besten laufen, um die Signale am Oszi zu beobachten.

Auf jeden Fall eher niedrige Taktfrequenz wählen damit man das Ereignis länger betrachten kann. Im Fehlerfall zeigt sich dann kein Low oder High wo eines sein sollte, oder der Low-/High- Pegel ist nicht ausreichend innerhalb der Spezifikation. Offensichtlichstes Beispiel ist ein "halber" High-Pegel. Dabei muss man immer von der Betriebsspannung ausgehen die der Vtarget Pin des ICE misst da ja die JTAG Pins (oder SPI Pins) auf diesen Pegel einjustiert werden.

Wäre ja auch interessant bzw. wichtig zu wissen ob das Problem bei SPI und JTAG auftritt oder nur in einem Fall.

OP #7640695
Lesenswert?

Hallo,

ich habe versucht die Signale am JTAG-Stecker mit dem Oszi zu messen.

1
Ch 1 (gelb):     Pin 1 TCK
2
Ch 2 (grün):     Pin 3 TDO
3
Ch 3 (violett):  Pin 5 TMS
4
Ch 4 (magenta):  Pin 9 TDI

2 V/div, 2 us

Die Pegel an TCK und TMS sind ca. 3.3 V, an TDO nur ca. 0.8 V. TDI ist low. Kann das sein? Befehl war

$ avrdude -c jtag2 -p m1284p -P usb -v -n

Angehängte Dateien:
Moderator Persönliche Seite #7640816
Lesenswert?

Mein altes ATmega1284-Board geht irgendwie nicht mehr, habe jetzt einen ATmega16 auf die Schnelle gefunden. Der dürfte zwar in den JTAG-Details etwas anders sein, aber das Bild im Großen und Ganzen sollte dasselbe sein.

Der erste Ausschnitt zeigt die Initialisierung des ICE, bis dahin scheint TDO zu floaten und auf low zu liegen. Ab da bleibt es dauerhaft auf Vcc (hier 5 V), bis auf die eigentliche Kommunikation. Der Anfang der Kommunikation ist auf dem zweiten Bild.

Ich könnte dir auch die komplette Salae-Mitschnitt-Datei zum Anschauen geben, aber die ist zig Megabyte groß.

Denke schon, dass es bei dir einen der Maxim-Pegelwandler geschossen hat.

OP #7641356
Lesenswert?

Jörg W. schrieb:

Man kann die Dinger mit Heißluft problemlos wechseln.

Eine Heißluftstation habe ich nicht und ein IC auszutauschen ist für mich erfahrungsgemäß schwieriger als ein IC neu einzulöten.

Der Vollständigkeit halber anbei nochmal zwei Oszilloskopbilder von beiden JTAG ICE mk-II zum gleichen Zeitpunkt, getriggert auf steigende und fallende Flanke von Ch 4 TDI bei 1.85 V; 2 V/div und 20 us/div.

Das erste Bild jtag05_no_error_ser_no_07.png zeigt das Bild vom funktionierenden JTAG ICE mk-II mit Sernr. 07... und das zweite Bild jtag06_error_ser_no_B0.png zeigt das Bild vom fehlerhaften JTAG ICE mk-II mit Sernr. B0. Da zeigt Ch 2 TDO drei Pegel.

Die Sequenz entspricht in etwa der Sequenz in Bildschirmfoto_2024-04-07_um_22.06.50.png in Beitrag Beitrag "Re: Atmel JTAG ICE mk-II RSP_ILLEGAL_JTAG_ID"

Angehängte Dateien:
Moderator Persönliche Seite #7641509
Lesenswert?

Was mich jetzt etwas stutzig gemacht hat: TDO sind ja die Daten, die vom AVR zum ICE kommen. So gehen sie zu Pin 11 des MAX4712, dessen Gegenstück ist Pin 10, und das geht zu Pin 5 des MAX3392, welches ein Eingang ist.

Das spräche natürlich dann schon dafür, dass so ein MAX4712 kaputt ist, oder aber dieses SP720ABG TVS-Dioden-Array.

Im Prinzip müsste man diese MAX4712 auch weglassen können (wie bei der A-Version), zumindest erstmal für einen Test die entsprechenden Pins überbrücken. Die sind offenbar eingefügt worden zur Verbesserung der Robustheit, um das ICE von der Schaltung abzutrennen, wenn es gerade nicht aktiv ist.

#7641680
Lesenswert?

Jörg W. schrieb:

Das sieht mir eher so aus, als würde jemand den High-Pegel (der möglicherweise nur von einem Pullup erstmal kommt) auf 0,7 V herunter ziehen.

Richtig. Aber eine defekte Hardware zieht immer und nicht nur ab und an. Ein Widerstand (1k als Vorschlag) in der Verbindung vom AVR zum ICE und schon kann man messen, welche Seite für das halbseidene Signal verantwortlich ist.

Moderator Persönliche Seite #7641688
Lesenswert?

Georg G. schrieb:

Aber eine defekte Hardware zieht immer und nicht nur ab und an.

Hängt davon ab, was defekt ist. Wenn es dieser Schalter ist, dann kann es schon sein, dass der plötzlich in Abhängigkeit von seinem Ansteuersignal Strom zieht oder nicht, statt das Signal nur durch zu leiten, wie es gedacht ist.

Dahinter ist ja nur der Eingang eines Pegelwandlers, den kann man auch nicht durch eine kaputte Firmware zum Ausgang konfigurieren oder sowas.

Moderator Persönliche Seite #7641975
Lesenswert?

Georg G. schrieb:

Sowohl MAX4712 als auch MAX3392 sind von Haus aus bidirektional.

MAX4712 ist ja nur ein Schalter, und den hätte ich jetzt auch in Verdacht.

Bezüglich MAX3392 liegst du jedoch falsch. TDO geht im ICE an Pin 5, und das ist ein dedizierter Eingang. MAX33xx kennt auch bidirektionale Treiber, aber 3392 ist dediziert.

Angehängte Dateien:
Moderator Persönliche Seite #7642149
Lesenswert?

Alexander S. schrieb:

Eine direkte niederohmige Verbindung von JTAG Pin 3 TDO (Litze 13 von links) messe ich nur zum MAX4712 und zum SP720ABG (Pins siehe Bild).

Ja klar. Das Prinzip (bei der B-Version) ist:

Der Pin geht an das TVS-Dioden-Array (SP720ABG) und von da zu einem der Anschlüsse der Analogschalter (MAX4712). Nur, wenn die Firmware den Analogschalter aktiviert, wird dann der MAX4712 durchgeschaltet, und ab da kommt das Signal weiter zu den Pegelwandlern.

Im Falle von TDO ist das Pin 10 des rechten MAX4712, der mit Pin 5 des MAX3392 verbunden ist (zumindest habe ich das auf meiner B-Version so „ausgeklingelt“).

Bei der A-Version war gingen die MAX33xx direkt auf die JTAG-Pins, was offenbar sehr häufig im praktischen Betrieb dann einen der Maxe das Leben gekostet hat, daher haben sie bei der B-Version in Richtung Robustheit nachgebessert.

Die einzig logische Erklärung für diese seltsam anmutenden Pegel auf TDO bei dir wäre daher ein Defekt im MAX4712, der dazu führt, dass abhängig von der Ansteuerung durch die Firmware eine unterschiedliche Last am TDO-Pin anliegt. (Wenn der MAX4712 ganz und der MAX3392 kaputt ist, dann sollte im nicht angesteuerten Zustand an TDO ein "high" von irgendeinem Pullup zu sehen sein.)

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