AVR Butterfly und der Leopard (OS X 10.5.7)
Wie hier im Archiv nachzulesen ist, habe ich immer mal wieder halbherzige Versuche unternommen meinen sog. Microcontroller Evaluation Kit am Mac zu Programmieren. Auf gut deutsch: Ich habe ein AVR Butterfly auf meinem Schreibtisch liegen und krieg es ums verrecken nicht hin ihn sinnvoll mit kompiliertem Code zu füllen. Wobei das Befüllen nicht das Problem darstellt. Zwischenzeitlich funktionierte alles sogar mal halbwegs, mit dem Problem, dass der Linker selbst gebauten Bibliotheken einbinden wollte. In jedem Fall hatte ich mit vielen unterschiedlich dummen Fehler zu tun und da ich im Netz auf viel Zeug, aber nicht auf das gestoßen bin, was ich suchte, gibt es jetzt hier das einzig wahre Tutorial.
Was man braucht:
AVR-Butterfly, Serielles Kabel, USB auf Seriell Adapter, CrossPack for AVR® Development
Serielles Kabel:

Das serielle Kabel (ich habe meins von einer alten Maus abgeschnitten) muss der Grafik entsprechend angeschlossen werden. Im Falle der hoffentlich standardisierten Beschriftung meines Steckers kommt (wenn man das Butterfly-Modul so hält, dass man die Beschriftung richtig herum vor sich hat) Pin5 des Steckers an den unteren der 3 Pins auf dem Modul, Pin 2 an den Mittleren und Pin 3 an den oberen.
USB auf Seriell Adapter:
Hier hatte ich Glück, dass der Adapter, der damals für einen PC gekauft wurde, am Mac funktionierte. Da die "Adresse" des Adapters im Makefile angegeben werden muss, ist es unabdingbar sie herauszufinden, dies geschah in meinem Fall über die Kommandozeile/das Terminal. Mit
ls /dev
bekommt man den Inhalt des Devices-Ordners zu sehen und hier sollte der Adapter nach installation der Treiber oder evtl. auch einfach so auftauchen. In meinem Fall setzt der Name des Gerätes sich zusammen aus tty, einer Unix spezifischen Kennung, PL2303, welches der Typbezeichnung des Adapters entspricht und einer Zufallszahl, die sich bei jedem an und abstecken des Teils ändert.
CrossPack for AVR® Development:
Vormals hies das Projekt AVR® MacPack, wurde aber aus Lizenzgründen umbenannt. Nichts desto trotz, holt man sich hiermit alles auf den Mac, was man braucht, um den Code zu kompilieren und auf das Modul zu schieben. Die Dateien werden in
/usr/local/CrossPack-AVR-"Datum der aktuellen Version"
abgelegt. Um später sinnvolle updaten zukönnen, gibt es das Verzeichnis auch ohne den Datumszusatz, wo dann Links auf die benutzen Dateien liegen, so dass die Systempfade bei jeder Installation erhalten bleiben und nur die Links auf die aktuelle Installation umgebogen werden. Eigentlich könnte der Ort der Files auch egal sein, denn da avr-gcc und avr-dude in den Systempfad eingetragen werden, funktionieren die Kommandos direkt, ohne ins Verzeichnis gehen zu müssen. Es befindet sich dort aber der Ordner
/usr/local/CrossPack-AVR/manual
hier liegen einige HTML-Files, die mehr oder minder Hilfreich sind. In jedem Fall ist die Installation des Pakets ein Kinderspiel (pkg-Installer) und falls man jetzt noch weiß, wie der USB auf Seriell Adapter heißt, ist der Rest quasi ein Kinderspiel.
Ran an den Speck:
Ich habe hier mal alles an Dateien zur Verfügung gestellt, was für ein kleines Beispielprogramm notwendig ist. Das ganze wurde im Rahmen eines Projektes an der Uni genutzt und besteht, aus 2 makefiles (makefile.avr und makefile). In makefile muss selbst noch ein bisschen Hand angelegt werden, denn hier muss an entsprechender Stelle der USB nach Seriell Adapter eingetragen werden (makefile ist gut kommentiert und die Stelle nicht zu verfehlen). Neben dem eigentlichen Programm in der main.c ist auch mit butterfly.h und butterfly.c gleich eine Bibliothek mit eingebunden.
Die vorbereiteten Dateien werden in einem Ordner verstaut und das Terminal geöffnet. Hier wechselt ihr in das entsprechende Verzeichnis und kompiliert alles mit
make all

An dieser Stelle hatte ich den Fehler gemacht den Anweisungen in der Doku vom CrossPack zu folgen, die nicht wirklich zum Ziel führte. Nach dem Kompilieren wuseln ungezählte Dateien im Ordner herum. Das eigentliche Produkt ist die main.hex, die nun mit AVR-Dude auf das Modul geflasht wird.
Also Modul per Adapter und seriellem Kabel an den Rechner stöpseln, die Stromzufuhr des Moduls kurz unterbrechen, um es zurück zu setzen (Batterie kurz anheben), jetzt mit dem Befehl
avrdude -p atmega169 -P /dev/tty.usbserial -c butterfly -V -U flash:w:main.hex
das Flashen anstoßen und den Joystick drücken. Anstatt "/dev/tty.usbserial" sollte natürlich die Adresse des eigenen USB auf Seriell Adapter im Befehl verwendet werden. Das Ergebnis sollte in der Kommandozeile schließlich so aussehen, wie im Bild. Wenn AVR-Dude danke sagt, ist alles gut. Jetzt noch den Stick nach oben bewegen, um das Programm zu starten und das Modul sollte nervig piepen.
Damit wäre der erste Schritt geschafft. Von jetzt an geht es um die "wirklichen" Probleme bei der Programmierung etc. Bei deren Lösung wünsche ich viel Erfolg :)
Weiter als ich dachte…
... bin ich bei meinen Versuchen meinen AVR-Mikrokontroller am Mac zu programmieren.
Nachdem die letzten Versuche in diese Richtung schon etwas her sind, habe ich heute das Butterfly-Modul erfolgreich mit dem Mac geflasht. Somit hängt es nur noch am kompilieren.
Hier hab ich es bis jetzt mit dem Anpassen des Beispiels vom AVR-Mac-Pack und dem versucht, was das IDE unter Windows dem avr-gcc sagt. Leider beides bisher ohne Erfolg. Ich muss aber gestehen, dass die Versuche eher halbherzig waren ;-)
Wenn ich es dann endlich geschafft habe auf dem Mac mein Beispielprogramm ordentlich zu kompilieren und auf das Board zu flaschen, wird der nächste Schritt die Anbindung an XCode sein. Hier hatte ich mit dem Demo vom AVR-Mac-Pack bisher wenig Erfolg. Hier gilt es wohl wenn die einzelnen Schritte im Terminal funktionieren XCode beim Klick auf Build bzw. Run dazu zu bewegen jeweils das Kompilieren bzw. das Flashen auszuführen.
Wie das im einzelnen läuft, ist mir noch Schleierhaft, aber was noch nebulös ist wird schon irgendwann klarer werden.
Ich spare mir jetzt hier die Links zur Software, die ich hier benutzt habe. Ich arbeite wie gesagt hier an einem Schritt für Schritt Tutorial, das ich für diesen Anwendungsfall vermisse, somit wird, wenn alles irgendwann läuft eine ausführliche Anleitung nachgeliefert.