FAQ für c't-Bot und c't-SIM
Seite 2: Übertragen der Firmware, Flashen und Setzen der Fuse-Bits
Übertragen der Firmware, Flashen und Setzen der Fuse-Bits
Wie bekomme ich die Firmware in den c't-Bot?
Der c't-Bot führt lediglich seine für die Programmierung benötigten Leitungen auf zwei Standard-Steckern heraus. Um Firmware in den Bot zu bekommen, braucht man also immer einen Programmieradapter. Dieser verbindet dann einen der beiden Stecker ST5 oder ST6 mit dem PC. Solche Adapter gibt es fertig für RS-232, LPT und USB zu kaufen. Desweiteren braucht man auch eine Programmiersoftware. Details dazu beschreibt der Artikel zur Inbetriebnahme in c't 4/06. Ist die Firmware übertragen, wird dieser Adapter abgezogen und der Bot fährt sofort los.
Wie beschreibe ich den Flash mit dem avrdude?
Zum Beispiel so: avrdude -p m32 -c stk200 -P lpt1 -U flash:w:ct-Bot-test-digital.hex:i
Oder auf dem Windows-Desktop eine Verknüpfung zur Batch-Datei flash.bat erstellen und da per Drag'n'Drop das Hexfile drauffallen lassen.
Warum muss ich die Fuse-Bits setzen?
Damit der Mikrocontroller auf dem c't-Bot korrekt funktioniert, muss man unbedingt die Fuse-Bits des Prozessors richtig setzen. Diese legen unter anderem die Taktquelle fest. Macht man hier einen Fehler, lässt sich der Chip nicht mehr im System programmieren. Mit einem parallelen Programmiergerät kann man ihn aber wieder zum Leben erwecken. Alle, die Ponyprog verwenden können, finden in c't 04/06 einen Screenshot mit den korrekten Einstellungen. Für alle anderen haben wir ab sofort im CVS-System hex-Dateien mit unseren korrekten Einstellungen. Das Datenblatt des ATmega32 enthält alle nötigen Details und hier gibt es einen Fuse-Bit-Rechner.
Muss ich die Fuse-Bits jedesmal neu schreiben?
Nein, wir raten davon sogar ab.
Mein Controller gibt nichts mehr von sich, auch Flashen kann ich ihn plötzlich nicht mehr. Was ist los?
Dann sind wohl die Fuse-Bits falsch eingestellt, der Controller ist für die falsche Taktquelle konfiguriert und tut daher nichts mehr. Er ist jedoch nicht defekt. Versorgt man ihn von außen mit einem Takt, kann man ihn wieder in Betrieb nehmen. Eine Bastelenanleitung, wie man das mit wenigen Bauteilen machen kann (ohne den Chip auszubauen), haben wir als Hotline-Meldung geliefert. Wem das zu fummelig ist, kann einen externen Programmieradapter verwenden, der den Takt selbst erzeugt. Alternativ dazu finden sich hier einige Tipps.
Ponyprog unterstützt meinen ISP-Adapter nicht. Wie kann ich die Fuse-Bits korrekt setzen?
Das Kommandozeilen-Tool avrdude (unter windows gibt es auch eine GUI) kann mit fast allen Daptern umgehen. Zum Schreiben der Fuse-Bits, kann man die vorgefertikten .hex-Files aus dem CVS-Repository (contrib/fusebits) verwenden:
avrdude -p m32 -c stk200 -P lpt1 -u -U lfuse:w:lfuse.hex:i -U
hfuse:w:hfuse.hex:i -U lock:w:lock.hex:i
Die Schnittstelle (-P) und den Adapter (-c) muss man an die lokalen Gegebenheiten anpassen.
Für den von uns vorgestellten Adapter aus dem Blue-MP3-Projekt gilt: -c stk200 -P lpt1
Für dem mysmartUSB gilt: -c avr911 -P com5
Wer statt des ATmega32 den ATmega644 verwendet, muss noch den Parameter -U efuse:w:efuse.hex:i anfügen. Im CVS befindet sich auch schon eine fertige Windows-Batch-Datei zum setzen der Fuse-Bits
Da ich noch keinen Programmieradapter besitze, will ich nicht zwei Adapter kaufen. Kann ich den USB-2-Bot-Adapter zum programmieren verwenden?
Ohne einen ISP-Programmieradapter, um die initiale Firmware in den Bot zu spielen und die Fuse-Bits zu setzen, kommt man nicht aus. Allerdings gibt es im Code mittlerweile einen Bootloader, der -- wenn er erst einmal auf dem Controller ist -- dann über den USB-2-Bot-Adapter die Firmware aktualisiert. Weitere Informationen finden sich im Code unter ct-Bot/Documentation/Bootloader.html. Bei einem unprogrammierten Chip hilft das jedoch nicht.
Wenn ich den Bot neu geflasht habe, geht der Maussensor nicht. Wenn ich ihn dann aus- und wieder anschalte funktioniert der Sensor korrekt. Ist das normal?
Ja. Der Maussensor und der Programmieradapter nutzen die selben Leitungen. Daher verschluckt sich der Maussensor beim Flashen an den Daten vom PC und schaltet sich ab. Nach einem Kaltstart wacht er wieder auf.
Was muss ich bei Ponyprog2000 einstellen, um den BlueMP3-ISP-Adapter zu nutzen?
Im Menüpunkt Setup/Interface Setup sind folgende Einstellungen nötig: Parallel, Avr ISP I/O und alle Polarity-Haken aus. Bei manchen Mainboards muss man im BIOS des PC noch mit den Modi für den Parallel-Port experimentieren. USB-nach-Parallel-Konverter können Probleme bereiten. Des Weiteren muss man im Hauptfenster das Device ATMega32 auswählen.
Ich möchte an Stelle ATmega32 einen ATmega644 verwenden, worauf muss ich achten?
Der ATmega644 hat mehr Fuse-Bits als der ATmega32. Außerdem sind die Fuse-Bits teilweise anders belegt. Im CVS befinden sich auch die Fuse-Bits als Hex-Files für den ATmega644. Außerdem muss der Quelltext natürlich für einen ATmega644 und nicht für den ATmega32 übersetzt werden.
Ich habe einen mySmartUSB-Programmierer und will einen ATmega644 programmieren, wie geht das?
Das klappt nur, wenn sie den mySmartUSB-Programmierer vorher mit der Firmware V 1.5 oder neuer befüllen.
Ich habe einen mySmartUSB-Programmierer und das programieren dauert lange, wie kann ich es beschleunigen?
Wenn Sie avrdude oder ein Frontend dazu verwenden, nutzen sie als Programmiergerätekennung nicht avr910, sondern avr911. Dann überträgt er größere Blöcke auf einmal.
Wenn ich meinen Programmieradapter an J14 des Erweiterungsmoduls anschließe, funktioniert das übertragen der Firmware nicht. Ohne Funkmodul geht es. Was ist kaputt?
Der Programmierstecker auf dem Erweiterungsmodul (J14) ist leider verdreht. Wer ihn benutzen will, muss das Flachbandkabel um 180 Grad gedreht einstecken (Pin 1 zeigt dann nach vorne, in Richtung Transportfach des Bots). Damit das klappt muss man unter Umständen die kleine Nase am Flachbandstecker entfernen.