Forum: Mikrocontroller und Digitale Elektronik Diamex ALL-AVR Programmer: Übertragung fehlgeschlagen


von Jan B. (diphthong)


Angehängte Dateien:

Lesenswert?

Hallo an alle,

ich möchte hier einmal von einem sehr kuriosen Übertragungsfehler 
berichten:

Ich benutze einen Diamex ALL-AVR USB ISP Programmer, um einen ATmega2560 
zu flashen. Auf meinem Computer läuft Ubuntu 12.04, der Programmer läuft 
generell auch soweit.

Allerdings funktioniert manchmal das Übertragen des Programmes bzw. der 
Hex-Datei nicht, und zwar nur, wenn bestimme Dinge im Quellcode geändert 
werden. Die Hex-Datei wird dann auf den Mikrocontroller übertragen (man 
hört in den Lautsprechern auf dem Schreibtisch während des 
Übertragungsvorganges ein Rauschen ähnlich wie ein sich einwählendes 
Handy), normalerweise liest avrdude danach ja den Mikrocontroller noch 
einmal aus (rauscht dann in einem etwas höheren Ton), allerdings hängt 
sich der Programmer dann manchmal auf (das zweite Rauschen fehlt dann) 
und avrdude gibt nach über einer Minute aus:

1
avrdude -F -p atmega2560 -P usb -c avrispmkii -B 1 -v -v -U flash:w:robocup.hex
2
3
avrdude: Version 5.11.1, compiled on Oct 30 2011 at 10:37:28
4
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
5
         Copyright (c) 2007-2009 Joerg Wunsch
6
7
         System wide configuration file is "/etc/avrdude.conf"
8
         User configuration file is "/home/jan/.avrduderc"
9
         User configuration file does not exist or is not a regular file, skipping
10
11
         Using Port                    : usb
12
         Using Programmer              : avrispmkii
13
         Setting bit clk period        : 1.0
14
avrdude: usbdev_open(): Found AVRISP mkII, serno: 000000000000016
15
avrdude: usbdev_open(): using read endpoint 0x82
16
         AVR Part                      : ATMEGA2560
17
         Chip Erase delay              : 9000 us
18
         PAGEL                         : PD7
19
         BS2                           : PA0
20
         RESET disposition             : dedicated
21
         RETRY pulse                   : SCK
22
         serial program mode           : yes
23
         parallel program mode         : yes
24
         Timeout                       : 200
25
         StabDelay                     : 100
26
         CmdexeDelay                   : 25
27
         SyncLoops                     : 32
28
         ByteDelay                     : 0
29
         PollIndex                     : 3
30
         PollValue                     : 0x53
31
         Memory Detail                 :
32
33
                                  Block Poll               Page                       Polled
34
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
35
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
36
           eeprom        65    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
37
           flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
38
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
39
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
40
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
41
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
42
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
43
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
44
45
         Programmer Type : STK500V2
46
         Description     : Atmel AVR ISP mkII
47
         Programmer Model: AVRISP mkII
48
         Hardware Version: 0
49
         Firmware Version Master : 1.32
50
         Vtarget         : 5.2 V
51
         SCK period      : 1.00 us
52
53
avrdude: AVR device initialized and ready to accept instructions
54
55
Reading | ################################################## | 100% 0.00s
56
57
avrdude: Device signature = 0x1e9801
58
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
59
         To disable this feature, specify the -D option.
60
avrdude: erasing chip
61
avrdude: reading input file "robocup.hex"
62
avrdude: input file robocup.hex auto detected as Intel Hex
63
avrdude: writing flash (51382 bytes):
64
65
Writing | ################################################## | 100% 2.90s
66
67
avrdude: 51382 bytes of flash written
68
avrdude: verifying flash memory against robocup.hex:
69
avrdude: load data flash data from input file robocup.hex:
70
avrdude: input file robocup.hex auto detected as Intel Hex
71
avrdude: input file robocup.hex contains 51382 bytes
72
avrdude: reading on-chip flash data:
73
74
Reading | avrdude: usbdev_recv_frame(): usb_bulk_read(): No error
75
avrdude: stk500v2_recv_mk2: error in USB receive
76
################################################## | 100% 102.05s
77
78
avrdude: verifying ...
79
avrdude: verification error, first mismatch at byte 0x0000
80
         0x0c != 0xff
81
avrdude: verification error; content mismatch
82
83
avrdude done.  Thank you.


Diesen Fehler konnte ich nun reproduzieren. Das Kuriose daran ist halt, 
dass die Übertragung funktioniert, wenn eine Zeile auskommentiert wird 
(Zuweisung eines Wertes zu einer Variable), das ganze aber wie oben 
beschrieben nicht mehr funktioniert, wenn diese eine Zeile nicht mehr 
auskommentiert ist (der Code ist sehr umfangreich und ich denke nicht, 
dass es etwas bringt, wenn ich den hier poste, wenn das aber doch 
gewünscht ist, mache ich das...). Anbei aber eine funktionierende .dis 
und .hex Datei und eine nicht funktionierende .dis und .hex Datei, 
außerdem das Makefile.

Hat sowas auch schon mal jemand anders hier beobachtet? Woran kann das 
liegen? Vielleicht kann ja jemand anders mal versuchen, die nicht 
funktionierende Hex Datei (mit einem Diamex Programmer (unter Ubuntu)) 
auf einen ATmega2560 zu flashen und berichten, ob das funktioniert. 
(Wahrscheinlich ja... Wird vermutlich mit dem Programmer 
zusammenhängen... Oder?)
Hab’ die beiden Dateien jeweils auch mit einem Tool miteinander 
vergleiche lassen, die unterscheiden sich fast komplett voneinander...

Danke schon mal und
Grüße
Jan

von D. V. (mazze69)


Lesenswert?

Jan B. schrieb:
> Allerdings funktioniert manchmal das Übertragen des Programmes bzw. der
> Hex-Datei nicht, und zwar nur, wenn bestimme Dinge im Quellcode geändert
> werden. Die Hex-Datei wird dann auf den Mikrocontroller übertragen (man
> hört in den Lautsprechern auf dem Schreibtisch während des
> Übertragungsvorganges ein Rauschen ähnlich wie ein sich einwählendes
> Handy), normalerweise liest avrdude danach ja den Mikrocontroller noch
> einmal aus (rauscht dann in einem etwas höheren Ton), allerdings hängt
> sich der Programmer dann manchmal auf (das zweite Rauschen fehlt dann)
> und avrdude gibt nach über einer Minute aus:

Kannst du mal das Soundfile während des Programmierens mitschneiden und 
dann hier einstellen?

von holger (Gast)


Lesenswert?

>-B 1

Nimm mal -B 10 bei avrdude.

von Jan B. (diphthong)


Angehängte Dateien:

Lesenswert?

Im Anhang mal das Soundfile. Mir ist gerade aufgefallen, dass das nicht 
direkt was mit den Lautsprechern, sondern mehr mit dem über das 
Smartphone laufende Radio zu tun hat. Die Qualität ist schlecht 
(aufgenommen über das interne Mikrofon des Laptops) aber fürs Rauschen 
sollte es reichen.
In der Mitte der Datei (besonders deutlich erkennbar bei Darstellung als 
Spektrogramm bspw. in Audacity) erkennt man einen Wechsel der Tonhöhe 
bzw. der „Tonfarbe“ des Rauschens, da wird dann zurück gelesen (dieses 
File stammt vom funktionierenden Programm, beim nicht-funktionierenden 
fehlt der zweite Teil einfach komplett).

Das Ändern der Übertragungsgeschwindigkeit habe ich schon probiert, 
ändert nichts außer dass das Übertragen in dem Fall 10 mal länger 
dauert.

Danke und
Grüße
Jan

von Klaus R. (klaus2)


Lesenswert?

...wieso hörst du den flashvorgang in deinen Boxen?! Erinnert mich an 
die alte computershow oder wie das hieß...sourcen über TV lautsprecher.

Irritiert, Klaus.

von Jan B. (diphthong)


Lesenswert?

Wie gesagt nur, wenn das Radio am Smartphone eingeschaltet ist. Als 
Antenne dient da ja normalerweise der Kopfhörer, aber da ist jetzt der 
Klinkenanschluss des Verstärkers für die Boxen angeschlossen, das Kabel 
dafür ist fast 2m lang und das Kabel vom ISP Programmer zum 
Mikrocontroller ist ca. 20cm lang. Ich denke mal, da wird dann einiges 
gesendet, was über die Kurze Distanz (vielleicht 1,2m) über das Radio 
des Smartphones empfangen und entsprechend über die Boxen ausgegeben 
wird...

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.