AVR ISP Programmer

Aus c't-Bot Wiki
Wechseln zu: Navigation, Suche

ISP

ISP ist eine Abkürzung für "In System Programming" oder "In System Programmer" und bezeichnet eine Programmierschnittstelle für Prozessoren. Durch eine relativ einfache Zusatzhardware ist es möglich, den Mikrocontrollers im System (d.h. auf der Platine) zu programmieren.

BlueMP3 bzw. STK200 kompatible Flasher

Der BlueMP3 ISP Programmer gehört eigentlich zum c't-Projekt BlueMP3. Dieser wird von Segor electronics als optionales Zubehör vertrieben. Jeder andere STK200 kompatible Programmer funktioniert natürlich genauso gut. Eine Aufbauanleitung für den BlueMP3 ISP Programmer findet man hier.

Der Flasher wird an die LPT Schnittstelle des PC angeschlossen und mit einem 10poligen Flachbandkabel an ST6 des c't-Bots angeschlossen.

Vorsicht: Beim BlueMP3 ISP Programmer ist unbedingt darauf zu achten zuerst den c't-Bot einzuschalten und dann den ISP Steckverbinder zu stecken. Und nach dem Flashen zuerst den ISP Steckverbinder zu ziehen und dann den c't-Bot auszuschalten. Sonst riskiert man, das die LPT Schnittstelle des PCs zerstört wird. Bei anderen STK200 kompatiblen Programmern mit eingebauter Schutzdiode besteht diese Gefahr nicht.

Zum Flashen der Firmware und setzen der Fusebits benötigt man ein Flasher Tool. Neben dem Kommandozeilen-orientiertem Avrdude (ist bei WinAVR dabei, für Linux als extra Paket verfügbar) gibt es u.a. noch Ponyprog mit grafischer Bedienoberfläche (ebenfalls für Windows und Linux).

Firmware flashen und Fusebits setzen

Vor dem ersten Beschreiben ist es sinnvoll, erst mal zu prüfen, ob die Verbindung zum c't-Bot in Ordnung ist. Dazu liest man am besten zuerst einmal den Flash Inhalt unter Windows:

avrdude -p m32 -c stk200 -P lpt1 -U flash:r:flash.hex:i

Ein fabrikfrischer ATmega32 enthält kein Programm und die Fusebits sind auch nicht korrekt (interner Takt 1MHz, JTAG enabled) Damit der c't-Bot korrekt funktioniert müssen einmalig die Fusebits richtig gesetzt werden (externer Takt, JTAG disabled), was mit

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

geschieht, wobei lfuse.hex, hfuse.hex und lock.hex sich im aktuellen Verzeichnis befinden müssen. Diese Dateien befinden sich im CVS-Verzeichnis unter ct-Bot/contrib/flash_n_fuse. Auch die zusätzlich darin enthaltenen Dateien STK200.bat und STK200fuses.bat sollten zum Flashen und zum Setzen der Fuse-Bits verwendet werden. Sind die Fuses nicht richtig gesetzt funktioniert auch der c't-Bot nicht richtig (z.B funktioniert das LCD-Modul nicht)


Das beschreiben der Firmware erfolgt dann mit Hilfe des avrdude unter Windows:

avrdude -p m32 -c stk200 -P lpt1 -U flash:w:%1:i

wobei %1 für die Datei steht, die in den ATMega geflasht werden soll.

Flashen mit Linux

Zum Flashen unter Linux über den Parallelport wird ist das Gerät parport0 benötigt. Zudem werden Schreibrechte für das Gerät parport benötigt. Das passiert mit:

sudo mknod /dev/parport0 c 99 0
sudo chmod a+rw /dev/parport0

Auslesen des Firmware:

avrdude -p m32 -c stk200 -P parport0 -U flash:r:flash.hex:i

Setzen der Fusebits (aus dem CVS Verzeichnis ct-Bot/contrib/flash_n_fuse):

avrdude -p m32 -c stk200 -P parport0 -u -U lfuse:w:lfuse.hex:i -U hfuse:w:hfuse.hex:i -U lock:w:lock.hex:i

Schreiben der Firmware:

avrdude -p m32 -c stk200 -P parport0 -U flash:w:ct-bot.hex:i

myAVR mySmartUSB bzw. AVR910 kompatible Flasher

Den hier betrachteten Programmer findet man hier: [myAVR].

Der Programmer kann in zwei verschiedenen Modi betrieben werden, dem Programmiermodus und dem Datenmodus. In letzterem ist er dazu geignet, als Bot-2-USB Adapter zu arbeiten.

mySmartUSB Programmer im Programmier Modus


Die Programmierung des ATMega32 erfolgt mit dem beiliegenden Kabel am ST6. Die DIP-Switches des Programmers sollten alle auf off, also Richtung Stecker gestellt sein. Ausgeliefert wird der Programmer mit Switch 1 auf on. Man sollte auch diesen Schalter auf off stellen, da sonst der Bot mit Spannung aus der USB-Schnittstelle versorgt wird, was eventuell bei einigen Mainboards zu Problemen führen könnte.

Treiber Installation

Für die Benutzung des mySmartUSB Programmers ist unter Windows ein Treiber erforderlich. Diesen findet man mit einer ausführlichen Installationsanleitung auf der myAVR Website unter Downloads. Für Linux braucht man keinen Treiber.

Unter Windows muß man zuerst einmal den COM-Port herausfinden, unter dem sich der mySmartUSB Programmer angemeldet hat. Da der Programmer über USB angeschlossen ist, ist dieser COM-Port ein sogenannter virtueller COM-Port. Sobald der Programmer an einem freien USB-Port angesteckt wurde, findet man den entsprechenden COM-Port in der Systemsteuerung unter System - Hardware - Gerätemanager - 'Anschlüsse (COM und LPT)' von Windows bzw. im Verzeichnis /dev unter Linux. Den gefundenen COM-Port trägt man in die avrdude Befehlszeile bzw. den Batchfiles bzw. Bash-Skripten im CVS-Verzeichnis ct-Bot/contrib/flash_n_fuse ein.

Firmware flashen und Fusebits setzen

Vor dem ersten Beschreiben ist es sinnvoll, erst mal zu prüfen, ob die Verbindung zum c't-Bot in Ordnung ist. Dazu liest man am besten zuerst einmal den Flash Inhalt:

avrdude -p m32 -c avr910 -P com3 -U flash:r:flash.hex:i

Ein fabrikfrischer ATmega32 enthält kein Programm und die Fusebits sind auch nicht korrekt (interner Takt 1MHz, JTAG enabled) Damit der c't-Bot korrekt funktioniert müssen einmalig die Fusebits richtig gesetzt werden (externer Takt, JTAG disabled), was mit

avrdude -p m32 -c avr910 -P com3 -u -U lfuse:w:lfuse.hex:i -U hfuse:w:hfuse.hex:i -U lock:w:lock.hex:i

geschieht, wobei lfuse.hex, hfuse.hex und lock.hex sich im aktuellen Verzeichnis befinden müssen. Diese Dateien befinden sich im CVS-Verzeichnis unter ct-Bot/contrib/flash_n_fuse. Ebenso kann man zum Setzen der Fusebits auch die Batchdatei setfuses.bat verwenden. Sind die Fuses nicht richtig gesetzt funktioniert auch der c't-Bot nicht richtig (z.B funktioniert das LCD-Modul nicht).

Das beschreiben der Firmware erfolgt dann mit Hilfe des avrdude:

avrdude -p m32 -c avr910 -P com3 -U flash:w:%1:i

wobei %1 für die Datei steht, die in den ATMega geflasht werden soll, bzw. mit der Batchdatei flash.bat <filename> aus dem CVS-Verzeichnis ct-Bot/contrib/flash_n_fuse.

Flashen mit Linux

Unter Linux wird anstelle des COM-Ports -P /dev/ttyUSB0 ersetzt werden.

Auslesen des Firmware:

avrdude -p m32 -c avr910 -P /dev/ttyUSB0 -U flash:r:flash.hex:i

Setzen der Fusebits (aus dem CVS Verzeichnis ct-Bot/contrib/flash_n_fuse) :

avrdude -p m32 -c avr910 -P /dev/ttyUSB0 -u -U lfuse:w:lfuse.hex:i -U hfuse:w:hfuse.hex:i -U lock:w:lock.hex:i

oder durch Aufruf des Skriptes setfuses.sh <filename>.

Schreiben der Firmware:

avrdude -p m32 -c avr910 -P /dev/ttyUSB0 -U flash:w:%1:i

oder durch Aufruf des Skriptes flash.sh <filename>.

Überarbeitet am 30.04.2006 um 14:13 von Nightwulf

Bearbeitet am 25.04.2006 um 23:40 von Galdo

USBprog mit AVRISP mk2 Klon Firmware

Den hier betrachteten Programmer findet man hier: [Embedded Projects].

Die Programmierung des ATMega32 erfolgt mit einem 10 Poligen Flachbandkabel am ST6. Die Jumper des Programmers sollten alle auf offen gesetzt sein.

Treiber Installation

Für die Benutzung des USBprog Programmers ist unter Windows ein Treiber erforderlich. Eine Installationsanleitung findet man auf der Embedded Projects Website unter [AVRISP Klon II]. Für Linux braucht man keinen Treiber.

Firmware Flashen und Fusebits setzen unter Linux

Vor dem ersten Beschreiben ist es sinnvoll, erst mal zu prüfen, ob die Verbindung zum c't-Bot in Ordnung ist. Dazu liest man am besten zuerst einmal den Flash Inhalt:

avrdude -p m32 -c avrispv2 -P usb -U flash:r:flash.hex:i

Sollten hier Verbindungsprobleme auftreten so muss man noch die Option -B 10 anfügen. Diese Option drosselt die ISP Geschwindigkeit. Nach dem Setzen der Fusebits ist dies nicht mehr notwendig. Die Zeile zum Auslesen würde dann wie folgt aussehen:

avrdude -p m32 -c avrispv2 -P usb -B 10 -U flash:r:flash.hex:i

Ein fabrikfrischer ATmega32 enthält kein Programm und die Fusebits sind auch nicht korrekt (interner Takt 1MHz, JTAG enabled) Damit der c't-Bot korrekt funktioniert müssen einmalig die Fusebits richtig gesetzt werden (externer Takt, JTAG disabled), was mit

avrdude -p m32 -c avrispv2 -P usb -u -U lfuse:w:lfuse.hex:i -U hfuse:w:hfuse.hex:i -U lock:w:lock.hex:i

geschieht, wobei lfuse.hex, hfuse.hex und lock.hex sich im aktuellen Verzeichnis befinden müssen. Diese Dateien befinden sich im CVS-Verzeichnis unter ct-Bot/contrib/flash_n_fuse. Sind die Fuses nicht richtig gesetzt funktioniert auch der c't-Bot nicht richtig (z.B funktioniert das LCD-Modul nicht).

Sollten hier Verbindungsprobleme auftreten so muss man noch die Option -B 10 anfügen. Die Zeile zum setzen würde dann wie folgt aussehen:

avrdude -p m32 -c avrispv2 -P usb -B 10 -u -U lfuse:w:lfuse.hex:i -U hfuse:w:hfuse.hex:i -U lock:w:lock.hex:i

Das beschreiben der Firmware erfolgt dann mit Hilfe des avrdude:

avrdude -p m32 -c avrispv2 -P usb -U flash:w:ct-Bot.hex:i

Wobei ct-Bot.hex hier durch den richtigen Namen der zu flashenden Datei ersetzt werden muss.

Flash Tools in Eclipse integrieren

Unter Eclipse gibt es die Möglichkeit, externe Tools einzubinden und aufzurufen. Das funktioniert natürlich auch mit den Flash Tools. Die Ausgabe von Avrdude erfolgt dann in einem Konsolen-Fenster.

thumb Eclipse Toolbar

Zum Flashen markiert man im Projekt (C/C++ Projects) die HEX-Datei die geflasht werden soll. dann wählt man in"External Tools" den Namen den man seinem externen Tool gegeben hat.

Es gibt zwei Möglichkeiten den Aufruf einzubinden:

1. Man bindet das Batch-File ein und übergibt als Parameter das HEX-file.

thumb Eclipse External Tools


2. Man ruft nur AVRDude auf und übergibt alle Parameter selbst.

thumb Eclipse External Tools

!!Dieses Beispiel passt bei den Parametern nicht zum Bot, verdeutlicht aber die Vorgehensweise.


Weiterer Vorteil : Man sieht bei der Ausführung alle Meldungen im Eclipse-Konsolenfenster Die möglichen Variablen (z.B.:"${resource_loc}") sind in der Hilfe von Eclipse gut beschrieben. (Außerdem gibts natürlich alle Batch-Möglichkeiten)

Weiter ist noch wichtig, daß im Common-Tab des Extern Tools der Haken bei 'Display in Favorites menu' bei External Tools gesetzt wird.

Übrigens kann man so auch bequem die ct-Bot.exe aufrufen, wenn man den Simulator gestartet hat

Installationsanleitung von ct-Bot Forum User rlishere. Ins Wiki übernommen durch Marvin

Weblinks

Autor(en)

Galdo, Nightwulf, Marvin, rlishere