avrdude mit dem AVR-ISP-MKII

Für mein Abschlussprojekt habe ich mich in den Bereich von selbstgebauten USB-Geräten vorgewagt. Ich habe verschiedenste AVRs abgewogen und mich dann für die xMega-Serie entschieden. Vorteile der xMega-Serie sind nicht nur die Software-Fuses, welche den AVR so gut wie nicht brick-bar machen sondern auch die dedizierte Programmierschnittstelle "PDI", wodurch ein anderes IC, dass ich verwenden wollte das SPI-Interface für sich allein hatte. Also musste ich einen neuen Programmer haben, da mein "mySmartUSB light" zwar bestens mit allen möglichen AVRs funktioniert, aber halt kein PDI kann. Nach etwas suchen und ein paar Empfehlungen von bekannten, habe ich mich dann für den AVR-ISP-MK2 Klon von Olimex entschieden. Der Link zum Produkt ist [hier]

So weit, so gut. Als der neue Programmer dann endlich angekommen war hab ich ihn natürlich sofort ausprobiert. Die xMega waren zu dem Zeitpunkt noch nicht da, weil sie ein AES128-Modul enthalten und ich deshalb noch eine Exporterklärung einreichen musste. Ich habe also mein Linux-Laptop gebootet, folgenden Befehl ausgeführt und leider einen Error bekommen:

sudo avrdude -p m8 -c avrispmkii
avrdude: stk500v2_recv_mk2: error in USB receive
avrdude: stk500v2_recv_mk2: error in USB receive
avrdude: stk500v2_recv_mk2: error in USB receive

Das war natürlich alles andere als das, was ich erwartet hatte. Ich habe also den Fehler 1:1 gegen Google geworfen und wurde [hier] fündig. Dieser Beitrag exakt ist von einem gewissen "abcminiuser", der richtige Name ist "Dean Camera", er ist der Entwickler des USB-Stacks "LUFA", den ich auch für mein Projekt nutzen wollte. "Toller erster Eindruck", dachte ich mir, "Ein Gerät mit LUFA und es geht nicht...". Wenn man nun aber diesen Post etwas weiter verfolgt findet man heraus, dass es einen Bugreport zu diesem Problem gibt. Dieser ist allerdings auch schon etwas älter (Juli 2013) aber noch immer offen. Dann müssen wir wohl von selbst dran.

Zuerst müssen wir alle abhängigkeiten installieren. Bisher habe ich nur "subversion", "libusb-compat", "autoconf" und "yacc". Wenn ihr mehr/weniger habt, dann sagt mir bitte bescheid, damit ich es hier ändern kann.

Als nächstes holen wir uns den Quellcode und betreten den Ihn enthaltenden Ordner:

svn co svn://svn.sv.gnu.org/avrdude/trunk/avrdude
cd avrdude/

In dem Zustand, den der Code aktuell hat ist es allerdings nicht möglich ihn zu bauen, hierzu bereiten wir ihn mit folgenden Befehlen vor:

./bootstrap
autoconf

Jetzt ist der Code bereit für den Build, allerdings müssen wir ja noch den patch anwenden:

wget https://savannah.nongnu.org/file/endpointdetect_pass1.patch?file_id=32171
cat endpointdetect_pass1.patch | patch -p0

Jetzt sind wir bereit zum kompilieren und installieren, was wir mit den beiden folgenden befehlen tun können:

make
sudo make install

Und schon sind wir fertig, avrdude wurde nach "/usr/local/bin/" installiert und wir können es testen:

sudo avrdude -p m8 -c avrispmkii

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9307 (probably m8)

avrdude: safemode: Fuses OK (E:FF, H:D9, L:FF)

avrdude done.  Thank you.

Ich hoffe ich konnte euch weiterhelfen. Wenn ihr Ergänzungen habt, dann meldet euch einfach.