AVR Dragon unter Linux

Der AVR Dragon ist ein vielseitiger preiswerter USB-Programmer für AVR Mikrocontroller.

Mit Avrdude lässt er sich auch unter Linux betreiben.

Installation

Nach dem Anstecken wird überprüft, ob der Dragon vom System erkannt wurde:

tux@machine:~$ lsusb
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 006: ID 03eb:2107 Atmel Corp.
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

USB-Devices werden von Avrdude ab Version 5.2 unterstützt. Ich verwende momentan Version 5.4. Als erstes werden die Quellen von Avrdude heruntergeladen und entpackt.

Zum Umgang mit USB-Geräten benötigt Avrdude libusb. Diese muss ggf. installiert werden.

Jetzt Avrdude kompiliert und ggf. ein Paket erzeugt werden:

tux@machine:~$ ./bootstrap
...
tux@machine:~$ ./configure --enable-usb=yes
...
tux@machine:~$ make
...
tux@machine:~$ make install

Um auch als normaler User via Avrdude auf USB-Geräte zugreifen zu können muss Avrdude suid root aufgeführt werden. z.B.:

tux@machine:~$ chown root:root /usr/local/bin/avrdude
tux@machine:~$ chmod 4755 /usr/local/bin/avrdude

Anwendung

Der Avr-Dragon beherscht folgende Programmiermodi, welche bei der Angabe des Programmertyps (-c) an Avrdude übergeben werden.

  • dragon_isp – ISP
  • dragon_jtag – JTAG
  • dragon_dw – Debugwire
  • dragon_hvsp – High voltage serial
  • dragon_pp – High voltage parallel

Avrdude kann Programmer an Hand der Seriennummer absprechen. Dadurch kann man mehrere AVR-Dragons an einem System betreiben. Als Port (-P) wird usb bzw. usb+Seriennummer angegeben.

Um die Seriennummer(n) festzustellen wird eine ungültige Seriennummer übergeben und der verbose mode (-v) eingeschaltet. Ein µC-Typ(-p) muss dabei mit übergeben werden, braucht aber nicht mit dem Dragon verbunden zu sein.

tux@machine:~$ avrdude -p ATMEGA16 -c dragon_isp -P usb:x -v
...
         Using Port            : usb:00:a2:00:01:43:ff
         Using Programmer      : dragon_isp
avrdude: usbdev_open(): Found AVRDRAGON, serno: 00A2000043FF
...

Die Seriennummer kann auch als Teilmaske angegeben werden (z.B. usb:43:ff) sofern sie eindeutig im System ist.

Nachdem der AVR mit dem Dragon verbunden wurde kann dieser z.B. im Terminalmode von Avrdude bearbeitet werden:

tux@machine:~$ avrdude -p ATMEGA64 -c dragon_isp -P usb -t

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9602
avrdude> part
>>> part

AVR Part              : ATMEGA64
Chip Erase delay      : 9000 us
PAGEL                 : PD7
BS2                   : PA0
...

Vorsicht Falle

Der AVR-Dragon ist werksseitig auf eine ISP-Frequenz 1MHz eingestellt. Atmel liefert die AVRs werksseitig mit einer Taktfrequenz von 1MHz (intern RC) aus.

Um programmieren bzw. Fuses ändern zu können, muss f_ISP < f_CLK/4 sein. Auch Schaltungen mit entsprechenden externen Quarz lassen nicht ansprechen, da die Fuse für den externen Oszillator nicht gesetzt werden kann.

Die ISP-Frequenz des Dragon lässt sich mit AVR-Studio unter Windows ändern. Sinnvoll sind 125kHz – so kann jeder AVR angesprochen werden.

2007/12/21

 
linux/avr_dragon_unter_linux.txt · Zuletzt geändert: 2010/09/14 20:58 von Marko Mueller