MikroKopter

en/AVRDude

Einleitung

Avrdude ist ein Kommandozeilentool zur Programmierung von (Atmel) Mikrocontrollern. avrdude ist sowohl für Windows als auch für Linux verfügbar. Wobei es unter Linux die bevozugte Variante ist Atmel Mikrocontroller zu beschreiben, da Programme wie ponyprog o.ä. nicht verfügbar sind und auch nicht (zuverlässig) in Virtuellen Maschinen wie z.B. vmware oder Virtualbox funktionieren.

Es muss mindestens die aktuelle Version 5.11 von avrdude installiert sein.

(Es ist wohl nicht mehr notwendig das avrdude zu patchen seit der Offiziellen 5.11 Version von avrdude ist es als "butterfly_mk" anzusprechen (https://github.com/ndim/avrdude/commit/45fa3bd5b5d5fbf30776331148e74c30f0f2ff83))

Anwendung

mit Bootloader (seriell)am nativen Seriellen Port

avrdude -p m644 -P /dev/ttyS0 -c butterfly_mk -b 57600 -U flash:w:<Flight-Ctrl_MEGA644_V0_xy.hex>

USB2Serial Adapter .

avrdude -p m644 -P /dev/ttyUSB0 -c butterfly_mk -b 57600 -U flash:w:<Flight-Ctrl_MEGA644_V0_xy.hex>

Bluetooth .

rfcomm bind 0 <MAC-ADRESSE>

avrdude -p m644 -P /dev/rfcomm0 -c butterfly_mk -b 57600 -U flash:w:<Flight-Ctrl_MEGA644_V0_xy.hex>

Anwendung via ISP

Die Programmierung des Mikrocontrollers unter Verwendung des ISP-Anschlusses kann folgende Gründe haben: Der Bootloader soll erst eingespielt werden (Erstinbetriebnahme) oder Verzicht des Bootloaders und direktes einspielen der Firmware.

Um die In-System-Programmierung an der FL-CTRL nutzen zu können, muss zu aller erst das 6-polige Flachbandkabel mit dem einen Ende an ISP2 der Sercon (Jumper muss gesetzt sein) und das andere Ende natürlich an die FL-CTRL (SV1).

Testen der Verbindung zwischen PC und Mikrocontroller:

avrdude -p m644 -F -c ponyser -P /dev/ttyS0 -v -U lfuse:r:-:i

Kurze Erläuterung:

Dann erhalten wir eine Ausgabe des gesetzten lfuse. Praktischerweise gibt avrdude dank der Option -v gleich alle gesetzten Fusebits aus. Solltet Ihr ein Timeout erhalten stimmt irgendetwas bei der Kommunikation nicht und Ihr solltet nicht fortfahren. Evtl. müsst Ihr avrdude als "root" oder mittels "sudo" starten damit Ihr die Rechte habt auf den COM-Port zuzugreifen. Auf jeden Fall sollte man sich die Statusausgaben von avrdude nach jeder Aktion genau ansehen, denn Fehler im Ablauf erkennt man meist nur an der Statusausgabe oder einem Verify-Error nach der durchgeführten Aktion.

Die konfiguration der Fusebits sollte auf bereits benutzten Controllern unnötig sein. Setzen der Fusebits:

avrdude -p m644 -F -c ponyser -P /dev/ttyS0 -v -U lfuse:w:0xFF:m -U hfuse:w:0xDC:m -U efuse:w:0xFD:m

Achtung: Dies sind die Fusebits die bei mir gesetzt waren, sollte woanders auch gehen, ist aber zumindest von mir ungetestet da bereits konfiguriert gewesen

Sollten sich die Fusebits nicht setzen lassen --zu erkennen am "verify Error"--, kann man versuchen den gesamten Chip (Flash+EEPROM) zu löschen. Avrdude bietet dazu die Option -e

avrdude -p m644 -F -c ponyser -P /dev/ttyS0 -v -e

Sollte bis hier her alles geklappt haben kann man entweder den Bootloader oder direkt die FL-CTRL Firmware einspielen:

Flashen des Bootloaders (Bevorzugte Variante):

avrdude -p m644 -F -c ponyser -P /dev/ttyS0 -v -U flash:w:BootLoader_MEGA644_20MHZ_V0_1.hex

Alternativ - direktes Flashen der Firmware (ohne Bootloader):

avrdude -p m644 -F -c ponyser -P /dev/ttyS0 -v -U flash:w:Flight-Ctrl_MEGA644_V0_69k.hex

Sollte die Firmware direkt geflasht werden ist es nicht möglich weitere Firmwareupdates seriell (z.B. übers MK-Tool) einzuspielen, es ist dann notwendig dies ebenfalls über ISP (6-pol. Stecker) zu erledigen.


MikroKopter: AVRDude (zuletzt geändert am 15.11.2011 00:43 durch nirgal)