Hallo, ich habe ein AVRISP2 besser ein ATAVRISP mk ii der Programmer mit USB Anschluss. Vorher hatte ich den 1er. Der 1er ging ihne Probleme mit WinAvr direkt aus dem Pn ein AVR zu programmieren. Mit folgenden einstellungen: AVRDUDE_PROGRAMMER = STK500v2 AVRDUDE_PORT = com1 Was muss ich einstellen das der mk ii funktioniert. Habe WINAVR 20060421. Oder wird der noch nicht unterstützt? Angeblich soll der ja gehen? Habe folgendes schon probiert AVRDUDE_PROGRAMMER = avrisp2 AVRDUDE_PORT = usb AVRDUDE_PROGRAMMER = avrispmkii AVRDUDE_PORT = usb Was ist eigentlich der Unterschied zwischen AVRISP2 und ATAVRISP mkii. Da man im makefile bei programmer
WinAVR's AVRDUDE ist nicht gegen libusb gelinkt (bislang), daher kannst du das Teil damit (noch) nicht benutzen. > Was ist eigentlich der Unterschied zwischen AVRISP2 und > ATAVRISP mkii. Was ist eigentlich der Unterschied zwischen einem VW Golf von 1970 und einem VW Golf, wie er jetzt im Schaufenster steht? Ungefähr genauso ist das mit dem AVRISP auch: der Name ist gleich. Alles andere nicht mehr.
Ok. Das avrdude nicht gegen die libusb gelinkt ist habe ich schon gelesen. Habe aber auch bei avr freaks von dir in englisch gelesen das es versionen mit libusb-w32 gibt und es funktionieren würde. Kann man die irgendwo downloaden?
Ich habe mal eine solche Version gebaut als Test, als ich die libusb-Adaption gemacht habe. Aber sorry, das war auf einer Maschine auf Arbeit, die schon lange den Bach runter gegangen ist (die Windowsen werden bei uns from scratch neu installiert, wenn sie nicht mehr ordentlich funktionieren), und es war wirklich nur ein Test. Mittlerweile ist an AVRDUDE viel weiter entwickelt worden (*), sodass es jemandes bedarf, der das auch regulär für Win32 baut. Es sieht so aus, als hätte Eric Weddington sich das für das nächste WinAVR vorgenommen. Falls du dir das AVRDUDE also nicht gerade selbst compilieren willst (was auch kein großer Akt ist, du musst dir nur vorher MinGW und Msys installieren), dann wirst du dich wohl bis dahin gedulden müssen. Sorry, ich selbst mag nicht auch noch Win32 supporten müssen. (*) U. a. ist der Support für AVRISP mkII erst danach reingekommen, der initiale libusb-Support war damals nur für das JTAG ICE mkII da.
Achso OK. Dann bau ich es mit selber. Aber wie? Mit welchem Compiler? Ich bin in PC Programmierung nicht so bewandert. Ich mache manchmal sachen mit dem lcc32 oder J-Builder. Das heist also die Quellen die es bei der gnu seite gibt einfach neu compilieren auf ner win32 maschiene? Muss dann am Quellcode nocht etwas angepasst werden? Oder nur eine Lib dazu gelinkt werden ?
Unter Win32 kann man sich mit stk500.exe behelfen. Anpassung des Makefiles duerfte deutlich schneller sein, als eine "Umgebung" zum avrdude-Selbstbau aufzusetzen. stk500.exe wird mit AVRStudio mitinstalliert (USB-Treiber ebenfalls). Beschreibung in der AVR-Studio online-Hilfe/Tools/AVRISP MKII User Guide/Frontend Software/Command Line Software. Selbst bauen: bisher nur unter Cygwin gemacht (mit no-cygwin-Schalter), allerdings noch zu avrdude 4.x-Zeiten. Bei mingw/msys wird man wohl noch einen lexer (flex) zusaetzlich ins bin-Verzeichnis kopieren muessen, bei Cygwin gibt des den lexer als Installationsoption im Setup. Es wird eine gnu-Toolchain fuer Win32 benoetigt (ist bei Cygwin und MinGW/msys dabei). Es ist nicht wirklich kompliziert, aber man muss es sich fuer Windows nicht wirklich antun, zumal Atmel eine Software liefert, die auch ueber Kommandozeile angesprochen werden kann. Martin Thomas
@Martin Thomas Eigentlich hast du recht. Warum nicht einfach STK500 nehemn?
Naja, ich habe es auf Arbeit auch bereits testhalber für Win32 gebaut. MinGW war eigentlich simpel: du lädst (ähnlich wie bei Cygwin) einen Installer und sagst dem dann, dass er das normale Standardpaket installieren soll. Da ist alles drin, was du brauchst, außer der libusb-win32. Zusätzlich installierst du noch Msys, das ist eine simple Unix-Kommandozeile (bash), die in einem Windows-Fenster läuft. Aus der heraus startest du dann ./configure und make. Die libusb-win32 gibt's auf sourceforge.net, du musst dabei die Filterversion installieren. Beim ./configure und make muss der Compiler noch mit einer -I und einer -L-Option wissen, wo die libusb installiert ist. Falls du das ernsthaft vorhast zu tun (kannst ja erstmal testhalber den Rest machen ohne libusb), dann meld dich, und ich schreib dir cut&paste-fähig auf, was dafür noch nötig ist. Ansonsten ist AVRDUDE selbst compilieren kein Akt: ich mache das an manchem Abend mehr als ein Dutzend mal. :) Wenn du einmal an dem Punkt bist, dass du die nötigen Schritte kannst, wirst du dich fragen, warum du dich vorher davon gescheut hast. ;-)
Ok habe alles installiert. Inkl lib usb. Frage: Muss man dann diese lib usb.exe auch auf dem PC installieren wo das neue AVRDUDE läuft? Ich dachte das wäre ein lib und wird mit ins neu gebaute AVRDUDE eingelinkt? Welche AVRDUDE quelldateien benötige ich ?
> Muss man dann diese lib usb.exe auch auf dem PC installieren wo das > neue AVRDUDE läuft? Ich dachte das wäre ein lib und wird mit ins neu > gebaute AVRDUDE eingelinkt? Es ist eine dynamische Bibliothek (DLL), insofern musst du sie auch auf dem Zielsystem installieren, ja. > Welche AVRDUDE quelldateien benötige ich ? Alle. ;-) > Wo finde ich die AVRDUDE Quelldateien? http://download.savannah.gnu.org/releases/avrdude/
http://download.savannah.gnu.org/releases/avrdude/ Das die da sind weis ich. Aber welche? Ich denke mal 5.1. Aber ich kann diese nicht öffnen. Endung .tar.gz. Ist wahrscheinlich Linux oder? Gäbe es auch eine Möglichkeit ohne lib-usb wo der Programmer genutzt wird? Aber egal ich will eerst mal schauen das ich das eine hinbekomme
Upss Sorry. WinRar kann es entpacken. So habe jetz die Quellen nach C:\avrdude-5.1 entpackt. Werde mir sie jetzt mal anschauen
Schon iweder eine Frage. In den Quellen ist schon eine usb_libusb.c enthalten? Wozu? Kann man die nicht verwenden. Aber trotzdem einfach genial. In den Quellen kann man als anfänger viel dazu lernen. Ok aber nun zum neuen bauen. Ich weis absolut nicht was ich jetzt machen muss
So habe folgendes eingeben make -f C:/avrdude/Makefile.am Dann kommt folgende Meldung Backing up avrdude.conf in
> Das die da sind weis ich. Aber welche? > Ich denke mal 5.1. Ja, ist das letzte bisher existierende. Ein 5.2 wird's aber bald geben. > Endung .tar.gz. Ist wahrscheinlich Linux oder? tar ist der historische Unix tape archiver, aber das ist seit langem ein gängiges Format für source code distributions, insbesondere zusammen mit einem Komprimierungsprogramm wie hier gzip. Neuerdings wird gern bzip2 genommen, weil es (mit mehr CPU-Verbrauch) besser komprimiert, der Suffix ist dann normalerweise .tar.bz2, zuweilen auch als .tbz abgekürzt. Suffixe sind in Unix nichts besonderes, die kann man frei erfinden. > WinRar kann es entpacken. WinZip sollte es auch entpacken können. > In den Quellen ist schon eine usb_libusb.c enthalten? > Wozu? Kann man die nicht verwenden. Die musst du sogar verwenden. Aber das ist nicht die libusb selbst, sondern der ,Leim' zwischen AVRDUDE und der libusb. > Aber trotzdem einfach genial. Nö, Opensource Software. ;-) > Ok aber nun zum neuen bauen. Ich weis absolut nicht > was ich jetzt machen muss > make -f C:/avrdude/Makefile.am Umm, nö. Das ist das Original, aus dem mal irgendwann ein Makefile werden soll. Das kann man nicht direkt als Makefile benutzen. Du musst erst einmal ./configure aufrufen. Aber wart mal, das hat Kai Klenovsek doch mal aufgeschrieben... Vielleicht passender, als ich das als langjähriger Unix-Benutzer erklären könnte. http://kk.elektronik-4u.de/index.php?Sid=12 Ist schon ein wenig ,,angestaubt'', und AVRDUDE ist leider nicht dabei beschrieben, aber im Prinzip funktioniert das überall gleich: ./configure make make install Der configure-Script kann noch angepasst aufgerufen werden, insbesondere wirst du --prefix benötigen. Ich glaube, Eric Weddington schrieb mal, dass er es so aufruft: ./configure --prefix=c:/winavr --sysconfdir=c:/winavr Damit wird letztlich festgelegt, dass sowohl avrdude.exe als auch avrdude.conf nach c:/winavr installiert werden. Wenn du bei dir ein anderes Verzeichnis magst, dann pass das entsprechend an. Das Ganze sollte man übrigens in einer MSys-Shell machen, nicht im cmd.exe. Wenn du das alles erst einmal ohne libusb-win32 und ohne dem USPasp-Patch durch hast, dann melde dich hier noch mal, dann beschreibe ich dir, wie du diese beiden Dinge noch hinzufügst. Das Compilieren wird dir dann wohl schon gut von der Hand gehen. ;-)
Moment jetzt bin ich ein wenig überfordert. Ich habe jetzt die unix shell msys. Dann habe ich mingw32. Brauch ich jetzt noch einen Compiler? Etwa einen GCC für win32? Ich dachte der wäre bei mingw dabei? Ich weis jetzt echt nicht was ich tun soll. Ich kann am PC nur auf Knopfdruck Programme erstellen. Mit makefiles und so kenn ich mich nur in der Welt der AVR´s und co aus. Ich dachte jetzt da bei mir im Verzeichniss c:\avrdude die Quellen liegen musste ich jetzt das make von mingw aufrufen und schon wird alles gebaut. Aber das ist dann doch nicht so. Also noch mal zusammen fassen was ich habe. 1. MinGw runtergeladen installiert. 2. MSys installiert und funktioniert. 3. lib-usb32 runtergeladen und installiert. 4. Quellen von avrdude nach c:\avrdude entpackt. Mehr habe ich nicht. Und nun? Ich habe keine Ahnung. Ich dachte jetzt einfach mit make -f c:\avrdude\makefile.am wäre alles erledigt. Ist aber nicht so? Schade :(
Es funktioniert. Ich bin begeistert. Ok wie binde ich jetzt die usb lib32 dazu?
> Brauch ich jetzt noch einen Compiler? MinGW enthält einen GCC. Sorry, Kai Klenovsek's Seite hat das natürlich auch nochmal beschrieben, dass man sich MinGW und MSys beschaffen muss. > ... musste ich jetzt das make von mingw aufrufen ... Naja, eben nur fast. Da nicht alle Umgebungen gleich sind, gibt's dort noch eine Anpassungsschicht, und die heißt "configure". Damit legt man teilweise fest, was das "make" dann bauen soll (--enable-doc oder --disable-doc zum Beispiel), außerdem findet es bestimmte Details der Umgebung, in der es läuft (wie heißt der Compiler genau usw.). Wenn configure fertig ist, heißt das Makefile auch Makefile, und dann muss man es dem "make" auch nicht mit -f noch sagen.
> Es funktioniert. Oh, dann haben wir uns gekreuzt. > Ok wie binde ich jetzt die usb lib32 dazu? Gut, gehen wir mal davon aus, deine libusb in c:/libusb-win32 installiert sei, dann gibst du in der MSys-Shell vor dem ./configure folgendes ein: export CFLAGS="-g -O -Ic:/libusb-win32/include" export CPPFLAGS="-Ic:/libusb-win32/include" export LDFLAGS="-Lc:/libusb-win32/lib" Ich habe die Struktur der libusb-win32 nicht genau in Erinnerung, ich hoffe mal, dass die angegebenen Verzeichnisse so passen, ansonsten pass das bitte entsprechend an. Das Verzeichnis nach dem -I muss die Date libusb.h enthalten, das Verzeichnis nach dem -L muss die Bibliothek selbst enthalten (vermutlich eine libusb32.dll oder sowas -- in Windows-Dingen bin ich nicht so firm). Wenn das alles OK ist, sollte ./configure sowas hier ausgeben ... checking for tputs in -ltermcap... XXX checking for tputs in -lncurses... XXX checking for readline in -lreadline... XXX checking for usb_get_string_simple in -lusb... yes ^^^ Danach müssten "make" und "make install" die passende AVRDUDE- Version mit libusb-Unterstützung gebaut haben. Die libusb-win32 hat irgendein Tool mit dabei, mit dem du dir angucken kannst, welche USB-Geräte sie alles sieht. Lass das mal laufen, da muss dein Gerät mit zu finden sein. Wenn es dort nicht dabei ist, wird später AVRDUDE es auch nicht finden. OK, wenn du damit fertig bist, kommt noch der USPaps-Patch dazu... Ich weiß gar nicht, vielleicht gibt's ja dort sogar eine Patchanleitung? Ansonsten ist das Prinzip, dass man die Datei mit dem Patch in das Quellcode-Verzeichnis hinlegt (nennen wir sie usbasp.diff), und dann aufruft: patch -p0 < usbasp.diff Danach nochmal configure; make; make install. Wenn du zwischendrin die MSys-Shell nicht zumachst, dann bleiben auch deine obigen export-Anweisungen noch aktiv.
Ok hat bis jetzt alles super funktioniert. Aber wo bekomme ich den USPaps-Patch her?
Doch nicht alles ok. Wenn ich ./configure mache kommt zwar checking for usb_get_string_simple in -lusb... yes Aber nach make bekomme ich ein Fehlermeldung und es wird auch keine exe gebaut $ make make all-recursive make[1]: Entering directory `/c/avrdude' Making all in windows make[2]: Entering directory `/c/avrdude/windows' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/c/avrdude/windows' make[2]: Entering directory `/c/avrdude' gcc -mno-cygwin -DWIN32NATIVE -static -o avrdude.exe avrdude-config_gram.o avrdude-lexer.o avrdude-avr.o avrdude-avr910.o avrdude-avrpart.o avrdude-bitbang.o avrdude-butterfly.o avrdude-config.o avrdude-confwin.o avrdude-crc16.o avrdude-fileio.o avrdude-jtagmkI.o avrdude-jtagmkII.o avrdude-lists.o avrdude-main.o avrdude-par.o avrdude-pgm.o avrdude-ppi.o avrdude-ppiwin.o avrdude-safemode.o avrdude-serbb_posix.o avrdude-serbb_win32.o avrdude-ser_posix.o avrdude-ser_win32.o avrdude-stk500.o avrdude-stk500v2.o avrdude-term.o avrdude-usb_libusb.o -lusb c:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lusb collect2: ld returned 1 exit status make[2]: *** [avrdude.exe] Error 1 make[2]: Leaving directory `/c/avrdude' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/c/avrdude' make: *** [all] Error 2
So das von www.fischl.de habe ich mir runtergeladen. Aber das sind ja auch wieder ganz viele dateien. Was muss ich jetzt wohin schieben?
Ich glaube der findet die libusb nicht oder? Ich habe die libusb in das Verzeichniss C:\libusb-win32 installiert und nur da. Danach habe ich die export anweisungen geschireben wie du sie gesagt hast. Danach kam auch das YES bei ./configure. Nur wenn ich jetzt make mach kommt halt die oben genannt Fehlermeldung. Aber ganz oben hast du mal geschireben ich müsste dem compiler noch sagen wo die usb lib zu finden ist oder? Wurde das mit den Export anweisungen gemacht? Oder war das nur für das configure die export anweisung?
Ok. Habe jetzt die libusb.a ins MinGw lib Verzeichniss kopiert nun geht das make und die avrdude.exe wird ohne Fehlermeldung gebaut. Nur das Patchen funktioniert noch nicht.
> Habe jetzt die libusb.a ins MinGw lib Verzeichniss kopiert nun geht > das make und die avrdude.exe wird ohne Fehlermeldung gebaut. Das hätte eigentlich nicht nötig sein sollen. Wenn configure sie findet, sollte make sie auch finden. Irgendwie hat das configure in deinem Makefile nicht die nötige -LC:/libusb-win32 Option hinterlassen. Ach so: du solltest innerhalb der MSys-Shell und der Makefiles bitte immer Vorwärtsstriche (/) als Verzeichnistrenner nehmen, keine Rückwärtsstriche (\). Sieht für Windows-Jünger erstmal ungewohnt aus, konnte aber MS-DOS schon mindestens seit Version 3.x (intern). Nur command.com und cmd.exe können es nicht. In den Unix-Shells (sowohl MSys ruft eine solche auch als auch das make selbst) hat der Backslash eine Sonderbedeutung. > Nur das Patchen funktioniert noch nicht. Hast du denn einen richtigen Patch dort irgendwo bekommen? Also irgendwas, das das patch-Kommando als Eingabe akzeptieren würde? Typische Dateiendung wäre .patch oder .diff. Wenn du das hast, aber der Patch nicht funktioniert, dann poste bitte mal die Fehlermeldungen.
Ja habe folgendes bekommen in einem Verzeichniss. usbasp.c usbasp.h avrdude_usbasp.patch dann kommt folgendes patch -p0 < avrdude_usbasp.patch can't find file to patch at input line 4 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |diff -Naur avrdude-5.0/Makefile.am avrdude-5.0-usbasp/Makefile.am |--- avrdude-5.0/Makefile.am Sun Sep 18 22:12:23 2005 |+++ avrdude-5.0-usbasp/Makefile.am Mon Nov 14 20:57:20 2005 -------------------------- File to patch:
Ja, dann musst du das Patchen mit -p1 statt -p0 machen. Die Zahl sagt, wie viele Schrägstriche er aus den Dateinamen des Patches entfernen soll, um anschließend selbst nach den Namen zu suchen. Da im Patch alles relativ zu avrdude-5.0 ist, muss eine Hierarchieebene entfernt werden. Aber die schlechte Nachricht: da Makefile.am gepatcht wird, muss man danach mittels ./bootstrap den configure-Script und die Makefile.in's neu generieren. Ich hoffe mal, dass die bei MinGW befindlichen Tools das ohne Haken und Ösen erledigen...
Endlich patchen hat funktioniert. Jetzt habe ich aber ein neues Problem. Und zwar folgendes $ ./bootstrap You need to use autoconf version 2.59. ./bootstrap: autoconf: command not found You are using . Und noch ein ganz anderes Probelm habe ich. Ich weis absolut nicht wofür ich das Patchen mache. Bis zum Patchen ist mir alles bewust was ich getan habe
Hmm, autoconf und automake müsstest du dir irgendwie als Bestandteil von MinGW beschaffen. Gehört offenbar nicht zur Standardinstallation. Wenn du die gar nicht findest, kann ich dir einen gepatchten avrdude-Sourcecode irgendwo hinlegen, den ich schon bootstrapped habe. Mehr heute abend.
OK, ich habe dein Interesse zum Anlass genommen, den von Thomas Fischl seinerzeit bei AVRDUDE eingereichten Patch mal ins CVS aufzunehmen sowie die fehlende Doku noch zu ergänzen. Eigentlich wollte das dazumal ein anderer Entwickler tun, aber der hat wohl nie die Zeit dafür gefunden. Den CVS-Snapshot der aktuellen Version habe ich unter http://www.sax.de/~joerg/avrdude-5.1cvs-20060910.tar.gz hingelegt. Der ist bereits "bootstrapped", du brauchst also kein autoconf und automake bei dir zu haben. Einfach configure und make. Ich hoffe auf eine Erfolgsmeldung von dir. :-) Ich habe den Code nämlich nur im Blindflug hinzugefügt, das mache ich sonst nicht gern. Wenn mir einer eine Platine für ein USBasp spendiert (reines PCB, unbestückt genügt), dann nehme ich das gern in die routinemäßigen Tests von AVRDUDE mit auf.
Ach so, ich bin dir noch die Erklärung schuldig geblieben, was der Patch gemacht hat. Du hast ja die beiden neuen Dateien usbasp.c und usbasp.h gesehen. Diese Implementieren AVRDUDE's Zugriff auf das USBasp. Damit sie aber auch von AVRDUDE wirklich genutzt werden können, müssen sie noch in das gesamte Programm ,,hineinverdrahtet'' werden. Dafür war einerseits ein Patchen von Makefile.am nötig (das dann über autoconf/automake und configure letztlich sich im Makefile niederschlägt), damit diese Dateien überhaupt erst einmal mit gebaut werden. Außerdem mussten sie noch zur avrdude.conf hinzugefügt werden, damit man mit -c usbasp das USBasp ansprechen kann. Neben dem reinen avrdude.conf-Eintrag war hier auch noch ein neues Schlüsselwort für die Konfigurations- syntax notwendig ("usbasp"), über das dann letztlich der Code in usbasp.c angesprochen wird.
Hmm. Hmm. Wenn ich nochmal drüber nachdenke, bin ich hier wohl in Konfusion geraten... Du wolltest doch gar kein USBasp in Betrieb nehmen, sondern nur das AVRISP mkII, nicht wahr? Dann war natürlich die Patcherei nicht notwendig... Sorry. Da hat sich in meinem Gehirn was verknotet, weil zwischenzeitlich jemand das USBasp ins Spiel gebracht hat. Anyway, vielleicht liest ja hier jemand mit, der das USBasp testen könnte?
@Jörg Wunsch Richtig ich möchte ledeglich den AVRISP mkII mit AVRDUDE nutzten. So das mit der usb-lib hat je geklappt zu bauen. Das heisst ja jetzt es müsste rein theoretisch funktionieren. Leider habe ich den mkII nur auf der Arbeit. Deswegen werde ich das morgen testen. könntest du mir vieleicht noch sagen was ich im Makefile bei AVRDUDE_PROGRAMMER = avrisp2 AVRDUDE_PORT = usb hinschreiben muss das ich dort kein Fehler mache. Wenn es funktioniert werde ich dies mitteilen und natürlich dann das avrdude wen gewünscht in der Codesammlung hinterlegen
Ja, das sollte so gehen. avrisp2 ist dasselbe wie stk500v2. Die Unterscheidung zwischen beiden ist, dass der eine nur über USB und der andere nur seriell angesteuert werden, intern benutzen sie gleiche Kommandos.
hallo, es wäre toll wenn jemand von euch die aktuellen binaries (für windoze) in dieses forum stellen könntet danke im voraus gerhard
Ok habe es getestet. Nur ist mir jetzt ein weiteres Problem aufgefallen. Wenn ich die usb lib daz linke läst sich avrdude nicht ausführen. Es wird folgene Fehlermeldung dann erzeugt This Programm cannot run under DOS-Mode
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.