Hallo, seit etwa einer Woche nenne ich einen AVRISP MKII Clone mein Eigen (usbprog v3 -> http://www.embedded-projects.net). Im AVRStudio kann ich diesen ohne Probleme betreiben. Laut Beschreibung sollte AVRDude auch mit einem AVRISP klarkommen, doch dort bekomme ich massive Probleme. Unter Windows XP bekomme ich die Meldung : avrdude: usbdev_open(): Found AVRISP mk2 Clone, serno: 0000A00128255 Dort bleibt er etwa 10 - 15 Sekunden hängen, danach flasht er ganz normal. Unter Windows 2000 geht mit AVRDude leider gar nichts. Dort erhalte ich folgenden Fehler : ----------------------------------------------------------------------- avrdude: usbdev_open(): Found AVRISP mk2 Clone, serno: 0000A00128255 avrdude: stk500v2_recv_mk2: error in USB receive avrdude: usbdev_send(): wrote 13 out of 1 bytes, err = usb_reap: reaping request failed, win error: Der E/A-Vorgang wurde wegen eines Threadendes oder einer Anwendungsanforderung abgebrochen. avrdude: stk500_send_mk2(): failed to send command to serial port make.exe: *** [program] Error 1 ----------------------------------------------------------------------- Wenn ich glück habe flasht er unter 2000 direkt nach dem Hochfahren einmal, bevor der Fehler kommt. Ich habe jetzt die ganzen letzten Tage mit recherchen im Netz verbracht, aber so wirklich weitergekommen bin ich dabei nicht. Das Problem scheint häufiger aufzutreten, zumindest findet man in zahlreichen Foren was dazu, aber niemand scheint eine Lösung zu haben. AVRDude sollte doch eigentlich mit einem AVRISP mk2 zusammenarbeit, oder? Gibt es irgendjemanden, der diese Kombination erfolgreich einsetzt/eingesetzt hat? Danke schonmal im Vorraus für eure Hilfe. Gruß Mathias
Hast du schon mal versucht, das Ding mit AVRStudio (unter W2K) zu testen? Mit dem STK500 hatte ich damals auch unter W2K Probleme. Die haben sich aber bei XP erledigt gehabt.
Mit AVRStudio funktioniert es einwandfrei, auch unter 2000. Die Probleme treten nur mit AVRDude auf.
Brauchst du den AVR Studio Treiber? Mir kommt das so vor als ob der da blockiert. Vielleicht kannst du den mal deinstallieren? Gruss Bene
Wenn ich das AVR Studio deinstalliere dann geht gar nichts mehr. Er erkennt zwar beim Anschliessen den AVRISP MKII, findet aber keinen Treiber und kann somit nichts damit anfangen. Ich habe zwar libusb installiert, aber das scheint nichts zu bewirken ... gibt es noch einen anderen Treiber, den ich einsetzen kann?
Wenn du Lust hast, dir dein AVRDUDE selbst zu compilieren (man braucht eine MinGW/Msys-Installation dafür, oder aber ein Cygwin), dann kannst du dir die beiden hier mal ansehen: https://savannah.nongnu.org/patch/?5655 https://savannah.nongnu.org/bugs/?19882 Was mich daran stört ist, dass der vorgeschlagene Patch technisch inkorrekt ist, offenbar aber trotzdem bei einigen Leuten funktioniert. Mir wäre es lieber, die Ursache des Problems einzukreisen und zu wissen, warum das systemabhängig mal geht, mal nicht. Leider scheinen all diejenigen, die sich da mal damit befasst haben, nicht mit mir drüber diskutieren zu wollen, und ich selbst habe den Bug noch nirgends selbst in einer Form erlebt, in der ich ihn hätte debuggen können.
Danke für den Tip, aber da muss ich jetzt mal ganz blöd fragen : Wie gehe ich denn da vor? Gibt es irgendein Tutorial dafür? Ich nehme mal nicht an, dass ich einfach den Source-code in meinem Visual Studio öffnen und dann auf Kompilieren klicken kann.
Von Visual Studio habe ich keine Ahnung. Prinzipiell könnte es sein, dass das sogar damit compiliert. Die einzigen systemabhängigen Teile in AVRDUDE ist die Ansteuerung der seriellen Schnittstelle, und die ist mit dem Win32-API implementiert, wenn man unter Windows compiliert. Aber was dir natürlich fehlt dann, ist der configure-Schritt, bei dem der entsprechende Script automatisch feststellt, welche #defines er alle nach ac_conf.h schreiben muss für dein System. Kai Klenovsek hat mal eine Beschreibung verfasst: http://kk.elektronik-4u.de/index.php?Sid=12 Ich hab' sie mir jetzt nicht genau angesehen, aber im Großen und Ganzen sollte die noch so zutreffen. avrdude hat er zwar nicht konkret erwähnt, aber im Wesentlich läuft es bei all diesen Tools hinaus auf: ./configure make make install Wenn du das AVRDUDE zum ersten Mal erfolgreich gebaut hast, dann melde dich nochmal wieder. Das Einbinden der libusb erfordert dann noch einen Schritt mehr, aber nimm erstmal die erste Hürde.
Habe jetzt MinGW und Msys installiert und mich dabei eigentlich genau an die Reihenfolge von Kai Klenovsek gehalten. Allerdings habe ich ein Problem, das ich nicht gelöst bekomme. ./configure läuft einwandfrei, aber schon beim Make bekomme ich fehler ---------------------------------------------------------------- make[2]: Leaving directory `/home/Gast/avrdude-5.5/windows' make[2]: Entering directory `/home/Gast/avrdude-5.5' yacc -d config_gram.y /bin/sh: yacc: command not found make[2]: *** [config_gram.c] Error 127 make[2]: Leaving directory `/home/Gast/avrdude-5.5' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/Gast/avrdude-5.5' make: *** [all] Error 2 ---------------------------------------------------------------- Danach wird abgebrochen. Das ganze kommt bei jedem make, also auch schon bei den binutils aus der Anleitung. Mir scheint das irgendwie so, als ob eine Einstellung oder ein Parameter fehlen würde. Was genau soll denn "yacc" sein, und wieso fehlt das? Gibt es eine Tabelle, wo man sehen kann was Error 127 / Error 1 bedeuten?
yacc ist "yet another compiler compiler", ein Parsergenerator. Den (und auch lex bzw. flex) musst du mit installieren. Ich sehe gerade, es gibt bei MinGW keinen yacc-Port, aber einen von bison. Das ist das GNU-Pendant zu yacc. Du brauchst also: http://downloads.sourceforge.net/mingw/bison-2.3-MSYS-1.0.11.tar.bz2?modtime=1190626772&big_mirror=1 http://downloads.sourceforge.net/mingw/flex-2.5.33-MSYS-1.0.11.tar.bz2?modtime=1190626832&big_mirror=1
Wo genau muss ich die denn hinkopieren? Wenn ich den /usr Ordner in meinem /mingw Ordner kopiere ändert sich gar nichts. Kopiere ich den /usr/bin Ordner (mit den bison.exe / flex.exe) dateien in meinen /mingw/bin Ordner, dann bleibt der Fehler bestehen, nur mit anderen Pfadangaben. yacc -d config_gram.y /mingw/bin/yacc: /usr/bin/bison: No such file or directory /mingw/bin/yacc: exec: /usr/bin/bison: cannot execute: No such file or directory
Ok, das mit dem Pfad hat sich erledigt. Habe es jetzt in den richtigen Ordner kopiert, allerdings erhalte ich jetzt beim configure eine Windows-Errorbox mit der Meldung, dass msys-regex-0.dll nicht im angegebenen Pfad gefunden wurde.
Dann musst du wohl das regex-Paket auch noch mit installieren. :-/ Wenn mich nicht alles täuscht, ist das: http://downloads.sourceforge.net/mingw/regex-0.12-MSYS-1.0.11.tar.bz2?modtime=1190249198&big_mirror=1 Früher[tm] hatten die glaub ich mal einen Installer, der einen das interaktiv auswählen lassen hat, was man alles installiert haben will.
Super, es funktioniert. Habe gerade erfolgreich mein erstes eigenes avrdude erstellt. Danke für deine Geduld mit mir :-) Nun werde ich mich mal ans Einbinden der USB Unterstützung wagen.
Mathias Reinhard wrote:
> Nun werde ich mich mal ans Einbinden der USB Unterstützung wagen.
OK, hier das Kochrezept:
Du installierst irgendwohin die libusb-win32. Nehmen wir mal an, sie
steht in C:\Programme\LibUSB-Win32-0.1.10.1. Du schreibst dir jetzt
folgendes in eine kleine Datei, landläufig "script" (kurz für
"shell script") genannt:
1 | LIBUSB=/c/Programme/LibUSB-Win32-0.1.10.1 |
2 | export CFLAGS="-g -O -I$LIBUSB/include" |
3 | export CXXFLAGS="-g -O -I$LIBUSB/include" |
4 | export CPPFLAGS="-I$LIBUSB/include" |
5 | export LDFLAGS="-L$LIBUSB/lib" |
Diesen script ziehst du dir innerhalb des Msys-Fensters vor dem Konfigurieren und Bauen in deine laufende Shell rein mit dem Punkt-Kommando:
1 | . yourscript.sh |
Damit werden die daring genannten Environment-Variablen in deiner laufenden Msys-Shell wirksam. Im einzelnen bedeuten sie: CFLAGS - Optionen für den C-Compiler CXXFLAGS - Optionen für den C++-Compiler (braucht avrdude nicht, aber vielleicht willst du ja als nächstes avarice machen?) CPPFLAGS - Optionen für den C-Präprozessor, werden zuweilen von den configure-Scripts gebraucht LDFLAGS - Optionen für den Linker Die -I-Optionen in den ersten drei Variablen bewirken, dass der Compiler das libusb.h findet. Die -L-Option in LDFLAGS bewirkt, dass der Linker die libusb selbst beim Linken findet (libusb0.dll oder wie auch immer sie konkret heißt), wenn er ein -lusb gesagt bekommt. Damit sollte dann der USB-Teil auch funktionieren. Alternativ kannst du im Script auch gleich noch das ./configure und make mit reinschreiben und ihn mit
1 | sh yourscript.sh |
ausführen. Ist geupft wie gesprungen.
Ok, habe jetzt die Schritte genau befolgt. Es hat auch alles fehlerfrei funktioniert, nur meldet meine avrdude.exe nach dem Aufruf immer noch, dass sie ohne USB Unterstützung sei. Muss die libusb.h auch genauso heissen? Bei mir ist nur eine usb.h vorhanden. Möglicherweise sucht ja der Compiler nach der falschen Datei?
Mathias Reinhard wrote: > Ok, habe jetzt die Schritte genau befolgt. Es hat auch alles fehlerfrei > funktioniert, nur meldet meine avrdude.exe nach dem Aufruf immer noch, > dass sie ohne USB Unterstützung sei. Hmm, beim ./configure muss sowas zu sehen sein:
1 | checking for usb_get_string_simple in -lusb... yes |
Wenn dort "no" steht, hat er sie noch nicht gefunden. Dann kannst du mal ins config.log gucken, dort nach usb_get_string_simple suchen. Das hier steht da bei mir:
1 | configure:3656: checking for usb_get_string_simple in -lusb |
2 | configure:3686: gcc -o conftest -g -O2 -I/tmp/suse868/include -I/tmp/suse868/include -L/tmp/suse868/lib conftest.c -lus |
3 | b -lreadline -lncurses -ltermcap >&5 |
4 | configure:3692: $? = 0 |
5 | configure:3696: test -z |
6 | || test ! -s conftest.err |
7 | configure:3699: $? = 0 |
8 | configure:3702: test -s conftest |
9 | configure:3705: $? = 0 |
10 | configure:3718: result: yes |
Da sollte bei dir dann mehr über den Fehler zu finden sein. > Muss die libusb.h auch genauso heissen? Bei mir ist nur eine usb.h > vorhanden. Das ist korrekt, da hatte ich mich geirrt.
Ok, es funktioniert nun alles so wie es sollte. Besten dank für die Hilfe. Ich suche jetzt mal nach dem entsprechenden Codeabschnitt der den Fehler verursacht, und werde mich nochmal melden wenn ich es (hoffentlich) gelöst habe.
Tja, das kompilieren klappt mittlerweile ganz gut, aber die in den obigen Foren vorgeschlagene Lösung hilft bei mir leider nicht, der Fehler bleibt bestehen. Ich habe mal über einen USB Sniffer versucht mitzulesen was denn da tatsächlich übertragen wird, aber es scheint überhaupt keine Kommunikation seitens AVRDude stattzufinden. Unter AVRStudio werden mir Daten angezeigt, aber beim Dude kommt gar nichts, was mich nur umso mehr verwirrt. An der selbst kompilierten Version kann es nicht liegen, denn die tut auf meinem WinXP Rechner ihren Dienst einwandfrei.
Das klingt dann irgendwie nach einem Treiberproblem, oder? Die libusb besitzt auch noch irgendwelche Debugschalter, die kann man auch im Sourcecode setzen.
Hallo, ich habe die Anleitung hier befolgt, und habe es nun auch geschafft mit MinGW/Msys avrdude selber kompiliert, da ich auch den seltsamen Fehler bei meinem AVRISP MKII hatte (Win XPSP2, CoreDuo). wie ich nun danach gesucht habe, bin ich auch auf den patch gestossen, den Jörg Wunsch anspricht, und auf einen anderen der von einem Mac User in einer Mailingliste stammt. vielleicht liegt es an Intel Macs, aber das ist nur reine Vermutung von mir. Vielen Dank nochmals für die Hilfestellungen :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.