Anmerkungen zum "Butterfly-Artikel" im Linux-Magazin 07/04
Im Linux-Magazin Ausgabe 07/04 wurde unter dem Titel "Vielfältiger Schmetterling"
eine Einführung in AVR-Controller, die gnu-Toolchain und einiger Tools am Beispiel
des AVR-Butterfly gegeben. Verwiesen wird unter anderem auch auf meine Seite.
Einige Abmerkungen zu dem Artikel:
- Laut Butterfly
Bedienungsanleitung sollte die Versorgungsspannung 4,5V nicht übersteigen,
Zwar kann der ATmega169V-Mikrocontroller auf dem Butterfly mit höheren Spannungen betrieben werden,
aber zumindest der auf dem Board vorhandene 4mBit Dataflash-Speicher wird mit 4,5V bereits
über Spezifikation betrieben. Für das Display liegen keine Spezifikationen vor, man
tut somit gut daran, sich an die Angabe der Bedienungsanleitung zu halten und maximal 4,5V
anzulegen. (Die Knopfzelle auf dem Board ist durch eine Schaltung geschützt.)
- Das im Artikel beschriebene Parallelport-Interface ist zwar sehr einfach zu
bauen, aber besitzt keinerlei Schutz vor versehentlichem Vertauschen von Kontakten.
Sicherer, aber aufwendiger ist ein Adapter nach
dieser Schaltung. Ansonsten sollte man mindestens beim beschriebenen Interface ein paar
Widerstände zwischenschalten, die den Strom im Fall eines Kurzschlusses begrenzen und damit
die PC-Schnittstelle abzusichern.
- Die von Atmel zur Verfügung gestellten Quellcodes sind nicht für die Windows-Entwicklungsumgebung
AVR-Studio gedacht, sondern für den C-Compiler von IAR-Systems.
AVR-Studio ist in der kostenlosen Version lediglich eine Entwicklungsumgebung für AVR-Assembler und
seit Version 4.11 auch für den freien GNU c-Compiler. Der Originalcode von Atmel für den IAR-Compiler
kann nur mit dem (teueren) IAR-Compiler übersetzt werden. Meine Portierung des Quellcodes für gcc/avr-libc
kann dagegen mit der freien avr-gcc-Toolchain compiliert werden. AVRStudio ab Version 4.11 kann zusammen
mit WinAVR als IDE genutzt werden (avr-gcc-plugin, WinAVR muss ebenfalls auf dem Rechner installiert sein).
Die gcc-Portierung enthält seit Version 0.6.1 eine Projektdatei für AVR-Studio. (Update dieses
Abschnitts: 4/2006)
- Das zur gcc-Portierung mitgelieferte Makefile enthält
einige Pfadangaben im "Windows-Stil", diese führen mglw. zu Problemen, können aber leicht
auf "Unix-Stil" geändert werden. Falls es Probleme bei der Übersetzung des Quellcodes gibt,
also zuerst die Pfade prüfen, bevor man Probleme in der Toolchain-Installation sucht.
- Tja, und vielleicht die wichtigste Anmerkung: Man muss mitnichten ein Parallelport-Schnittstellenkabel
zusammenlöten, um den Butterfly mit einem neuen Programm zu versehen.
Auf dem ATmega169V des AVR Butterfly ist ein Bootloader ab Werk vorinstalliert, der es ermöglicht
Programme über die serielle ("RS232") Schnittstelle eines PC auf den Controller zu übertragen.
Diese Art der Übertragung ist "elektrisch sicherer" und
es besteht auch damit keine Möglichkeit Grundeinstellungen (fuse- und lockbits) zu ändern.
Einige solche Änderungen können nur mit hohem Aufwand rückgängig gemacht werden.
Auch kann der Bootloader nicht gelöscht werden (siehe auch Anmerkung weiter unten).
Zur Übertragung eines Programms mithilfe des Bootloaders reicht ein wenig 3-adriges (vorzugsweise abgeschirmtes)
Kabel und ein DSUB Stecker aus. Das Kabel einer alten/defekten seriellen Maus bietet sich an. Mit
einem solchen Kabel kann man auch den Namen für das Butterfly-Namesschild setzen und
eigene Experimente mit dem AVR an der seriellen Schnittstelle durchführen,
wie z.B. das beliebte "cpu-load" auf LCD (siehe auch UART-Test auf der
Leitseite).
Unter MS-Windows dient zur Programmierung über seriellen Anschluss das Tool AVRProg, welches
Bestandteil des frei erhältlichen
AVRStudio
ist. Für Unix/Linux/BSD gibt es das Programm
avrdude, das ab Version 4.3.0
den Butterfly-Bootloader unterstützt (programmer-type "butterfly"). Die Nutzung von
AVRStudio/AVRProg ist in der
Anleitung zum
Butterfly beschrieben, für avrdude finden sich in der avrdude-Anleitung und auf
meiner Leitseite Informationen.
- Die im Artikel abgedruckte Belegung der Programmierschnittstelle ist laut
einer e-mail von Tobias Jahn falsch. Hier seine Korrektur:
Pin| LM("falsch")| Atmel ("richtig")
---+-------------+------------------
1 | RST | PB3
2 | VCC | VCC
3 | PB3 | PB1
4 | PB2 | PB2
5 | PB1 | RST
6 | GND | GND
Weiteres dazu auf der Seite von Tobias Jahn.
-
Wenn der Butterfly nach einem "Jump to Bootloader" einen Reset auslöst,
die Programmierung ueber RS232 nicht funktioniert oder man
nach Einlegen der Batterie sofort und ohne den Joystick in die "Hoch"-Richtung
zu bewegen die Willkommensmeldung erhält, wurde wahrscheinlich der Bootloader
gelöscht (oder - unwahrscheinlicher - BOOTRST ist nicht programmiert).
Programmiersoftware, wie die im Artikel beschriebene, loescht normalerweise
bei der Programmierung über die ISP/SPI-Schnittstelle (wie im Artikel beschrieben)
den gesamten Speicher vor dem eigentlichen Programmiervorgang ("Chip Erase") und damit auch den
Bootloader. Der Bootloader wird nicht automatisch mit der Applikation
zusammen auf den BF gebrannt. Die Applikation enthält weder im Original noch im
gcc-Port den entsprechenden Code. Sobald der Bootloader wieder installiert ist
(mittels ISP), sollte alles wieder o.k. sein und man kann unter Unix/Linux und MS-Windows
mittels avrdude (ab Version 4.3.0) bzw. AVRStudio/AVRProg über die serielle Schnittstelle
Programme auf den AVR des Buttefly übertragen.
Der original Bootloader-Quellcode (fuer IAR-Compiler) inkl. einer hex-Datei befindet sich auf der
Atmel "Butterfly-Seite".
Ein gcc-Port des Bootloader-Quellcodes (ebenfalls inkl. hex) findet man auf meiner
Leitseite und dort auch Informationen ueber die
Standardeinstellungen der Butterfly/ATmega169 Lock- und Fusebits.
Auf der Seite von Tobias Jahn finden
sich weitere Informationen dazu.
Das war's von meiner Seite - Viel Spass mit dem Butterfly.
zurück zu meiner AVR-Projekte Seite
Martin Thomas
15218 hits since June 11, 2004
Last mod.: Tuesday, 04-Apr-2006 05:29:53 CEST