AVRISP MKII mit AVRDude?

OP #691139
Lesenswert?

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
OP #691230
Lesenswert?

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?
Moderator Persönliche Seite #691249
Lesenswert?

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.
Moderator Persönliche Seite #691352
Lesenswert?

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.
OP #693416
Lesenswert?

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?
Moderator Persönliche Seite #693436
Lesenswert?

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
OP #693475
Lesenswert?

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
Moderator Persönliche Seite #693541
Lesenswert?

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.
Moderator Persönliche Seite #693620
Lesenswert?

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.
OP #693646
Lesenswert?

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?
Moderator Persönliche Seite #693667
Lesenswert?

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.
OP #694607
Lesenswert?

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.
Gast #706366
Lesenswert?

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 :-)

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