wemaus

Font Size

Cpanel

USB/ISP-Programmer

In diesem Beitrag soll die Programmierung von AVR-Mikroprozessoren mit Hilfe der Software AVRDude im Terminal gezeigt werden. Ist bereits eine Arduino-IDE auf dem Rechner installiert, läßt sich relativ einfach auf AVRDude zur Programmierung zugreifen. Unter OS X ist AVRDude und die Konfigurationsdatei allerdings etwas versteckt in der Arduino.app enthalten und wird hier über den entsprechenden Pfad, so wie weiter unten dargestellt, angesprochen.

Zusätzlich sind noch einige Parameter nötig, die AVRDude aufruft, um die nötigen Aktionen ausführen zu können. Einige der wichtigsten Parameter werden hier kurz angesprochen.

Der grundsätzliche Aufbau der Befehlssequenz sieht dabei folgendermaßen aus:

 Pfad/avrdude -C Pfad/avrdude.config -c Programmierer -p Prozessor -P Port

Für die folgenden Beispiele wird ein Programmieradapter vom Type STK500 Vers. 2 und ein ATmega8 verwendet.

 

USB/ISP Programmer  

 

Dieser Adapter ermöglicht es, das Target sowohl mit 5 V, als auch mit 3,3 V zu versorgen. Ebeso kann die Targetversorgung auch ausgeschaltet werden.

 

 

Parameter   Bedeutung Beispiel
-C   Konfigurationsfile -C avrdude.conf
-c   Programmieradater -c stk500v2
-P   Port -P /dev/cu.usbmodem1411
-p   Mikroprozessor -p m8
-U  

Flash auslesen, Intel-Format

Flash schreiben

-U flash:r:m8file.hex:i

-U flash:w:filename.hex

Weitere Parameter sind hier unter AVR Option beschrieben.

 

Im folgenden Beispiel soll nun die Signatur eines ATmega8 ausgelesen werden:

/Pfad_zur_App/Arduino_1_6_5.app/Contents/Java/hardware/tools/avr/bin/avrdude -C /Pfad_zur_App/Arduino_1_6_5.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -c stk500v2 -p m8 -P /dev/cu.usbmodem1411

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9307

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

avrdude done.  Thank you.

 

Erhält man eine solche Ausgabe im Terminal, kann man ziemlich sicher sein, dass der Prozessor richtig angeschlossen ist und auch die Befehlssequenz richtig eingegeben wurde.

 

In einem weiteren Beispie soll nun der Inhalt des ATmeg8 ausgelesen werden:

/Pfad_zur_App/Arduino_1_6_5.app/Contents/Java/hardware/tools/avr/bin/avrdude -C /Pfad_zur_App/Arduino_1_6_5.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -c stk500v2 -p m8 -P /dev/cu.usbmodem1411 -U flash:r:m8file.hex:i

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9307
avrdude: reading flash memory:

Reading | ################################################## | 100% 1.56s

avrdude: writing output file "m8file.hex"

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

avrdude done.  Thank you.

 

Nach dem Ausführen des Kommandos wird der Inhalt des ATmega8 in der Datei m8file.hex im Intel-Format (filename:i) abgelegt.

 

Im nächsten Beispiel wir eine Datei in den Flash-Speicher geschrieben:

/Pfad_zur_App/Arduino_1_6_5.app/Contents/Java/hardware/tools/avr/bin/avrdude -C /Pfad_zur_App/Arduino_1_6_5.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -c stk500v2 -p m8 -P /dev/cu.usbmodem1411 -U flash:w:ATMega_FIFO.hex

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9307
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "ATMega_FIFO.hex"
avrdude: input file ATMega_FIFO.hex auto detected as Intel Hex
avrdude: writing flash (370 bytes):

Writing | ################################################## | 100% 0.10s

avrdude: 370 bytes of flash written
avrdude: verifying flash memory against ATMega_FIFO.hex:
avrdude: load data flash data from input file ATMega_FIFO.hex:
avrdude: input file ATMega_FIFO.hex auto detected as Intel Hex
avrdude: input file ATMega_FIFO.hex contains 370 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.09s

avrdude: verifying ...
avrdude: 370 bytes of flash verified

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

avrdude done.  Thank you.

 

Weitere Beispiele zur Programmierung mit AVRDude sind hier zu finden.