Forum: Mikrocontroller und Digitale Elektronik Evertool-Light, avrdude und ATmega2560


von Volker (Gast)


Lesenswert?

Hallo Forum,

Ich habe hier ein Board mit einem ATmega2560 in die Finger bekommen.
Dort ist die JTAG-Schnittstelle herausgeführt. Also fluggs 
Evertool-Light [1] rausgekramt und ein kleines Testprogramm geschrieben.

Fuses auslesen/setzen funktioniert, aber Flash und EEPROM beschreiben/ 
auslesen funktioniert nicht:
1
avrdude> part
2
>>> part 
3
4
AVR Part                      : ATMEGA2560
5
Chip Erase delay              : 9000 us
6
PAGEL                         : PD7
7
BS2                           : PA0
8
RESET disposition             : dedicated
9
RETRY pulse                   : SCK
10
serial program mode           : yes
11
parallel program mode         : yes
12
Timeout                       : 200
13
StabDelay                     : 100
14
CmdexeDelay                   : 25
15
SyncLoops                     : 32
16
ByteDelay                     : 0
17
PollIndex                     : 3
18
PollValue                     : 0x53
19
Memory Detail                 :
20
21
                         Block Poll               Page                       Polled
22
  Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
23
  ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
24
  eeprom        65    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
25
  flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
26
  lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
27
  hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
28
  efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
29
  lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
30
  calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
31
  signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
32
33
avrdude> r eeprom
34
>>> r eeprom 
35
0000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
36
0010  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
37
0020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
38
0030  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
39
40
avrdude> r flash
41
>>> r flash 
42
0000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
43
0010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
44
0020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
45
0030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

Mit einem ISP-Programmer funktioniert alles, aber es ist müßig immer die 
ISP-Pins zusammenzusuchen.

Gibt es eine Chance avrdude und Evertool-Light richtig zum Laufen zu 
bekommen?

Grüße
Volker

[1] http://siwawi.bauing.uni-kl.de/avr_projects/evertool/#etlight

von Volker (Gast)


Lesenswert?

Da mach ich mal hier die Ingrid.

Das Evertool-Light ist ein Nachbau vom AVR-JTAGICE (nicht mkII und nicht 
JTAGICE3).
In Atmel Studio 6.2 wird es auch nicht mehr unterstützt (Gibt es bei 
Atmel ein Changelog bzw. Release Notes, wo man sowas nachlesen kann?). 
Von AVR Studio 4.19 wird JTAGICE noch unterstützt. Dort erfährt man auch 
die 'supported devices':
ATmega32, ATmega16, ATmega64,
ATmega128, ATmega162, ATmega169,
ATmega323, AT90CAN128

Mit anderen Worten JTAGICE und ATmega2560 gehen nicht zusammen, 
vermutlich wegen dem breiteren Adreßzähler.


Der nächste Schritt war es, einen Bootloader zu suchen, damit ich nicht 
jedes Mal fehlerträchtig die ISP-Pins zusammensuchen muss.

Beim ArduinoMega2560 bin ich fündig geworden:
https://github.com/arduino/Arduino/tree/master/hardware/arduino/bootloaders/stk500v2

Leider ist das Ding mit AVRDUDE 5.11 zusammen recht bockig/buggy:
* REMOVE_CMD_SPI_MULTI darf nicht definiert sein (sonst avrdude -> 
command failed)
* bei CMD_CHIP_ERASE_ISP wird STATUS_CMD_FAILED zurückgegeben. Entweder 
man startet avrdude mit dem Parameter '-D', oder man ändert den 
Bootloader, damit STATUS_CMD_OK zurückgegeben wird.
* der im Bootloader integrierte Monitor ist vergurkt, weil jemand bei 
pgm_read_byte_far die Adressen auf 16 Bit Breite begrenzt hat :-(
Das führt beim Mega2560 zu einer Endlosschleife bei der Stringausgabe.
* außerdem hab ich mir gleich noch einen netten Patch mit eingebaut:
https://github.com/msproul/Arduino-stk500v2-bootloader/issues/5

So, das war's. Zwei Tage Fehlersuche für ein Ding, was out-of-the-box 
hätte laufen können.

Grüße
Volker

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.