Forum: Mikrocontroller und Digitale Elektronik avrdude: stk500v2_recv_mk2: error in USB receive (AVRDUDE 6.1)


von Robert H. (kee4)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich habe mich neu angemeldet und möchte mich an dieser Stelle gleich für 
Eure Hilfe bedanken.
Danke auch an die vielen Benutzer die immer wieder interessante Beiträge 
verfassen.

Ich habe das Forum schon nach meinem Problem durchforstet und auch schon 
manche Artikel
zum Problem gefunden, aber irgendwie war es für mich nicht die Lösung 
oder ich versteh die
Lösung nicht ;-)

Ich nutze AVRDUDE zusammen mit einem MK2-Clone als (USBProg V3) als 
Produktionsprogrammer
in einem automatisierten Ablauf. Meine Testsoftware ruft eine Batchdatei 
als externen
Prozess auf. Der Fehler tritt aber auch auf wenn ich die Batchdatei von 
der Kommandozeile
aus starte. Das ganze unter Windows 7 Professional 32 Bit mit 
installierten libUSB-Treibern.

Ich verwende AVRDUDE 6.1:
-------------------------
Nach dem Start meiner Batchdatei startet AVrdude und der Flashvorgang 
beginnt sofort.
"avrdude: AVR device initialized and ready to accept instructions"
Innerhalb dieses Batchjobs wird AVRDUDE vier Mal gestartet, zuerst 
schreibe ich die Fuses,
dann das Flash und das EEProm und abschließend das Lockbyte.

Starte ich den Batchjob erneut verzögert sich der Start um ca. 10 
Sekunden und es erscheint
die Meldung:
"avrdude: stk500v2_recv_mk2: error in USB receive"! Danach wird der 
Vorgang weiter ausgeführt (~)
"avrdude: AVR device initialized and ready to accept instructions"
Das passiert viermal. Also bei jedem Aufruf von AVRDUDE. Somit dauert 
das ganze um 40 Sekunden
länger.

Beim erneuten Start von AVRDUDE habe ich das Problem immer noch. Warte 
ich einige Minuten
so habe ich das Gefühl das der Fehler "error in USB receive" für einen 
Start wieder weg ist.

Verwende ich AVRDUDE 6.0.1 oder 5.11 so tritt dieser Fehler nicht auf.
----------------------------------------------------------------------
- 10.11.2015 Robert Ho: auch in avrdude-6.1-svn-20131205-mingw32

Allerdings tritt dann ein anderer Fehler auf:
Der erste Flashvorgang (Fuses) läuft ohne Probleme. Allerdings wenn die 
Batchdatei AVRDUDE
zum zweiten Mal aufruft, kommt eine Fehlermeldung
"avrdude: usbdev_open(): did not find any USB device "usb" "
Hier habe ich einen Workaround gefunden:
Wenn ich zwischen den Starts von AVRDUDE ca. 1/2...1 Sekunde warte, dann 
wird der Programmer
wieder gefunden.
Also scheint hier der Programmer nach dem Abschluss des 
Programmiervorganges noch nicht bereit
zu sein.

Wie Eingangs schon erwähnt habe ich schon gegoogelt und festgestellt, 
dass dieses Fehlermeldung
öfter auftaucht.
Allerdings finde ich keine einfache Lösung ;-) oder ich versteh die 
Lösungen nicht. In einem
Betrag habe ich einen Patch gefunden den man selbst in den Sourcecode 
einbauen sollte und das
Programm neu übersetzen sollte. (*)
GIBT ES EINE ALLGEMEIN VERSTÄNDLICH ANLEITUNG ZUM EIGENEN ÜBERSETZEN VON 
AVRDUDE?
oder
GIBT ES IRGENDWO EINE GEPATCHTE VERSION VON AVRDUDE 6.1 DIE DIESEN 
FEHLER BEHEBT?

Danke auf jeden Fall nochmal
ROBERT

(*) 
http://www.avrfreaks.net/forum/lufa-based-avrisp-mkii-doesnt-work-avrdude-601?name=PNphpBB2&file=viewtopic&t=138424

(~) Es sieht aus als wenn es an dieser Stelle (!!!!) hackt: Bit zur 
Stelle
    (!!!!) läuft es, dann kommt die Pause von 10 sec und dann läuft es
    weiter: Mit Parameter -vvv bekomme ich folgendes Log:

avrdude: Version 6.1, compiled on Mar 13 2014 at 00:09:49
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is 
"D:\Work\Dude610\avrdude.conf"

         Using Port                    : usb
         Using Programmer              : avrispmkII
         Setting bit clk period        : 100.0
avrdude: usbdev_open(): Found AVRISP mkII, serno: 000200090638
(!!!!)
avrdude: usbdev_recv_frame(): usb_bulk_read():
avrdude: stk500v2_recv_mk2: error in USB receive
avrdude: stk500v2_getsync(): found AVRISP mkII programmer
Using p = 100.37 us for SCK (param = 53)
avrdude: Skipping paramter write; parameter value already set.
         AVR Part                      : ATmega16
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Robert H. schrieb:
> GIBT ES EINE ALLGEMEIN VERSTÄNDLICH ANLEITUNG ZUM EIGENEN ÜBERSETZEN VON
> AVRDUDE?

Naja, man braucht ein MinGW32.  Danach tut es ein simples "configure",
gefolgt von "make" und "make install".

Manchmal finde ich es schon echt lustig, dass sich keiner der
Windows-Nutzer findet, der mal diese paar Kommandos ausführen kann.
Stattdessen baue ich die Windows-Binaries nun schon seit Jahren hier
auf meinem FreeBSD. ;-)  (Man stelle sich vor, es würde jemand von
einem Windows-Softwareentwickler erwarten, dass er nicht nur
plattformübergreifend programmiert, sondern dann auch noch aus seinem
Visual Studio heraus Linux-Binaries produziert.  Das ist in etwa das,
was ich hier mache.)

Wie schon in der Mail geschrieben, der LUFA-Patch steht demnächst mit
an.  Ich hatte mich mit Dean Camera schon mal drüber ausgetauscht,
warum, weshalb, wieso, hat sich nur noch keiner gefunden, der das mal
integriert hätte.

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.