AVR Programmer
Allgemein
Um ein generiertes Programm (.hex- File) bzw. EEProm-Daten (.eep- File) in einen Microcontroller zu laden, ist ein Porgrammer nötig. Diese werden meist als ISP (Incircuit Serial Programmer) bezeichnet. Der Name sagt es bereits aus, dass der AVR Controller zum Programmieren nicht ausgebaut werden muss, sondern in der Schaltung Programmiert werden kann. Dazu ist allerdings ein ISP-Steckplatz in der Schaltung erforderlich. Es besteht aber auch die Möglichkeit, die Software mit Hilfe eines sog. Bootloaders in den Controller zu übertragen. Es gibt Versionen für die Serielle Schnittstelle, I2C und Netzwerk. Der Bootloader muss aber zunächst per ISP in den Controller übertragen werden. Der Bootloader empfängt das zu programmierende .hex - File und legt es im Controller ab (selfprogramming).
ISP-Programmer
Incircuit Serial Programmer gibt es zahlreiche. Und obwohl das Serial in ISP darauf schließen lassen könnte, werden die meisten ISP's nicht per RS232 Schnittstelle mit dem PC verbunden. Es gibt Versionen für Parallel-Port, Seriell-Port und USB.
Parallel
Seriell
USB
ISP Stecker
Zum Anschluss der Programmer an die Zielhardware z.B. Developmentboard existieren zwei gängige Steckertypen. Der 6polige und 10polige Stecker.
6 poliger ISP Stecker
10 poliger ISP Stecker
Programmiersoftware
Um das .hex -File in den Controller zu übertragen ist neben der Programmier- Hardware auch Software nötig, die den Programmer ansteuert. Unter Linux kommt avrdude zum Einsatz. Dieses unterstützt zahlreiche verschiedene ISP-Programmer und AVR Mikrocontroller. AVRDude für die meisten Distributionen erhältlich, sodass die Installation unter Linux kein Problem darstellt. AVRDude wird unter Windows zusammen mit WinAVR installiert. Dieses kann sämtlich parallel- und seriell- Programmer ansteuern. Für die Ansteuerung von USB-Programmern sind einige Hürden zu überwinden, sodass besser der in AVRStudio integrierte Programmer verwendet wird. Dieser kann direkt die ATMEL- ISP-Programmer (bzw. diejenigen, die einen ATMEL ISP emulieren) ansteuern.
AVRDude (Linux)
Installation
apt-get install avrdude
USB Programmer
Ubuntu erlaubt standardmäßig nur mit root-Rechten Zugriff auf einen USB-Programmer. Damit dies auch mit Userrechten funktioniert, wird eine neue UDEV-Regel angelegt, die den Programmer für Zugriff mittels Userrechten freigibt. Hierzu sind folgende Schritte nötig:
- USB-Programmer anschließen
- Vendor und Device-ID des Programmers ermitteln:
lsusb
- Die Ausgabe sieht für einen Atmel AVRIspMKII folgendermaßen aus:
... Bus 002 Device 004: ID 03eb:2104 Atmel Corp. AVR ISP mkII ...
- Hier ist nur die ID 03eb:2104 wichtig. Dabei stellt der Teil vor dem Doppelpunkt die Vendor-ID (hier Atmel) und der Teil danach die Product-ID (hier AVRIspMKII) dar.
- gedit /etc/udev/rules.d/50-usbprog.rules
- Folgende Zeile einfügen:
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", MODE="0777"
- Dabei die eben ermittelte Vendor-ID und Product-ID einsetzen.
- USB-Programmer vom USB-Port trennen und wieder verbinden, damit die neue Regel zur Anwendung kommt.
Benutzung
AVRDude kennt eine Reihe von Kommmandozeilenoptionen. Eine Auflistung aller möglicher Optionen erscheint durch den Aufruf von
avrdude
Hier einige Aufrufbeispiele:
- Mikrocontroller löschen:
avrdude -c <PROGRAMMER> -P <PORT> -p <DEVICE> -e
- Programm FILE.HEX in Microcontroller übertragen
avrdude -c <PROGRAMMER> -P <PORT> -p <DEVICE> -U <FILE.HEX>
<PROGRAMMER>:
Auswahl des benutzten Programmers, z.B.
- stk500
- stk200
- avrispmkii
- dragon_isp (ISP-Mode)
- dragon_jtag (JTAG-Mode)
- jtag2 (JTAGIceMKII)
- jtag2_isp (ISP-Mode)
- jtag2_dw (Debug-Wire Mode)
<PORT>: Port an dem der Programmer angeschlossen ist
- /dev/ttyS0 (Serielle Schnettstelle - "COM1")
- /dev/parport0 (Parallelport - "LPT1")
- usb
<DEVICE>: Verwendeter Mikrocontroller z.B.
- ATMEGA8
- ATMEGA32
- ATtiny44
Hinweis: | |
Im AVRDude Konfigfile /etc/avrdude.conf sind alle verfügbaren Programmer und Mikrocontroller aufgeführt. |