<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vogtinator</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vogtinator"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Vogtinator"/>
	<updated>2026-04-13T12:18:40Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVRDUDE&amp;diff=68118</id>
		<title>AVRDUDE</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVRDUDE&amp;diff=68118"/>
		<updated>2012-08-28T13:34:31Z</updated>

		<summary type="html">&lt;p&gt;Vogtinator: Link entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
AVRDUDE (http://www.nongnu.org/avrdude/) ist eine Programmiersoftware für Atmel [[AVR]] Controller. &lt;br /&gt;
&lt;br /&gt;
Funktionen unter Anderem: &lt;br /&gt;
&lt;br /&gt;
* Übertragen von Programmcode in den Flash-Speicher&lt;br /&gt;
* Auslesen ungeschützen Codes aus dem Flash&lt;br /&gt;
* Setzen und Lesen von Fuse- und Lockbits (Siehe auch: [[AVR_Fuses#Vergleich_der_Fuses_bei_verschiedenen_Programmen|Vergleich der Fuses bei verschiedenen Programmen]])&lt;br /&gt;
* Schreiben und Lesen des EEPROMs&lt;br /&gt;
&lt;br /&gt;
AVRDUDE kann das [[STK500]] (auch mit Firmware 2.x als stk500v2), das Atmel AVRISP (auch mit Firmware 2.x als avrispv2 o.ä.), das Atmel AVRISP MKII (USB Ansteuerung mittels lib-usb bzw. lib-usb-W32), [[AVR_In_System_Programmer#USB | AVR910-kompatible]] Programmierer, den [[AVR Butterfly]]/AVR109-kompatible Bootloader, [[STK200]]-Programmierdongles und verschiedene andere Parallelport-Adapter sowie &amp;quot;serielle Statusportprogrammierer&amp;quot; (Siprog) ansteuern. Auch das Atmel JTAGICE (oder Nachbauten wie Bootice oder Evertool), Atmel JTAGICE-MKII und der AVR Dragon können als Programmierhardware genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Das Programm ist unter MS-Windows (Cygwin nicht erforderlich), Linux, BSD, Solaris und Mac OS X lauffähig. Die Version für MS-Windows ist im [[WinAVR]]-Paket enthalten. Der Quellcode ist frei verfügbar (Lizenz beachten).&lt;br /&gt;
&lt;br /&gt;
Da alle AVRDUDE-Funktionen über Kommandozeilenparamter gesteuert werden können, eignet es sich gut zur Integration in Makefiles. Beispiele finden sich in der Makefile-Vorlage von [[WinAVR]] und Mfile. &lt;br /&gt;
&lt;br /&gt;
Die gesamte Konfiguration liegt in einer Textdatei (avrdude.conf), so dass sich bei Bedarf ein beliebiger neuer Parallelport-Programmierdongle oder auch ein noch nicht unterstützter AVR-Controller ergänzen lassen. Die Syntax für die Definition eines AVR-Controllers lehnt sich an die Datenblatt-Tabelle für die serielle Programmierung an, so dass man praktisch nur das Datenblatt &amp;quot;intelligent&amp;quot; abtippen muss.&lt;br /&gt;
&lt;br /&gt;
Für die Ansteuerung von Parallelport-Adaptern unter MS-Windows NT/2000/XP wird ein spezieller Porttreiber (giveio) mitgeliefert. Bei der Installation von [[WinAVR]] wird giveio bereits mitinstalliert. &lt;br /&gt;
&lt;br /&gt;
Programmer mit üblicher serieller Schnittstelle (RS232) benötigen keine zusätzliche Software oder Treiber zum Betrieb mit AVRDUDE. &lt;br /&gt;
&lt;br /&gt;
Für Hardware mit USB-Anschluss muss die lib-usb bzw. lib-usb-win32 installiert sein.&lt;br /&gt;
&lt;br /&gt;
===GUIs===&lt;br /&gt;
Bei [[WinAVR]] wird die grafische Oberfläche avrdude-gui.exe mitgeliefert.&lt;br /&gt;
&lt;br /&gt;
Für Windows, Linux und andere Betriebssysteme gibt zwei weitere GUIs: den in Java geschriebene [[Burn-o-mat|AVR Burn-O-Mat]] und den [http://www.soft-land.de/index.php?page=avrburner avrburner] (avrburner: Link defekt).&lt;br /&gt;
&lt;br /&gt;
Für Mac OS X gibt es noch [http://www.vonnieda.org/software/avrfuses AVRFuses.app]. AVRFuses muss beim ersten Starten auf den verwendeten Programmer und den Speicherort von AVRDUDE eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
GUIs vereinfachen vor allem Programmieren der Fuses.&lt;br /&gt;
&lt;br /&gt;
== Kurzanleitung für Linux und STK200 ==&lt;br /&gt;
&lt;br /&gt;
Dazu muss erst ein Hardware-Link auf die Printerport-Treiber eingerichtet werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su&lt;br /&gt;
mknod /dev/parport0 c 99 0&lt;br /&gt;
chmod a+rw /dev/parport0&lt;br /&gt;
avrdude -p m8535 -c stk200 -e -U qqtraff.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis :&lt;br /&gt;
Bei USB Programmern ist zu beachten, dass diese durch das Betriebssystem auf einen anderen Port gelegt werden können, als im Beispiel angegeben.&lt;br /&gt;
Diesen Port kann man unter Anderem &amp;quot;im Terminal&amp;quot; mit dem Befehl&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@server: dmesg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ermitteln.&lt;br /&gt;
Alternativ kann man sich eine Auflistung der Ports, im Verzeichnis &amp;quot;/dev&amp;quot; anzeigen lassen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@server: ls /dev/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sollte man nicht sicher sein, auf welchem Port der Programmer liegt, kann man den Programmer nochmals ausstecken und &amp;quot;ls /dev/&amp;quot; ausführen. Der nun Fehlende Port, ist der Programmerport.&lt;br /&gt;
Diesen Port muss man statt &amp;quot;parport0&amp;quot; in die oben beschriebenen Terminalkommandos einsetzen.&lt;br /&gt;
&lt;br /&gt;
Siehe auch : &lt;br /&gt;
* [http://wiki.ctbot.de/index.php/AVR_ISP_Programmer#BlueMP3_bzw._STK200_kompatible_Flasher weitere Beispiele für avrdude Kommandos (http://wiki.ctbot.de/index.php)]&lt;br /&gt;
* [[AVR_In_System_Programmer#STK200-kompatibel]]&lt;br /&gt;
* http://www.mikrocontroller.net/topic/200390#new&lt;br /&gt;
&lt;br /&gt;
== Tipps + Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== [[AVR_In_System_Programmer#Parallelport|Parallelport-Programmer]] an aktuellen PCs ===&lt;br /&gt;
Aktuelle PCs sind einfach zu schnell mit dem Bitgewackel an der parallelen Schnittstelle, vor allem für AVRs, die noch mit den 1 MHz im Auslieferungszustand laufen (maximal zulässiger ISP-Takt &amp;lt; 250 kHz). Neuere Versionen von avrdude unterstützen zu diesem Zweck eine Option &#039;&#039;&#039;-i &amp;lt;N&amp;gt;&#039;&#039;&#039;, wobei &amp;lt;N&amp;gt; die Anzahl der Mikrosekunden bezeichnet, die beim Bitwackeln zusätzlich zu warten ist. Einfach mal mit -i 10 anfangen und dann entweder die Fuses auf die Ziel-Taktfrequenz umstellen (falls diese wesentlich höher sein wird als die 1 MHz), oder sukkzessive mit kleineren Werten testen ([http://www.mikrocontroller.net/topic/83524#699933 Forenbeitrag von Jörg]).&lt;br /&gt;
&lt;br /&gt;
Die Option -i ist auch nützlich bei AVRs, die für einen langsamen Takt konfiguriert sind. Bei einem ATmega8, der mit einem 32.768 kHz Quarz läuft, kann es z.B. notwendig sein, die Option -i 90 zu verwenden. Den Zahlenwert ggf. ausprobieren.&lt;br /&gt;
&lt;br /&gt;
Manche Programmer werten die Option -i manchmal nicht aus, dann sollte man einen anderen Programmer versuchen.&lt;br /&gt;
&lt;br /&gt;
Beim USBTINY und USBASP kann man die Geschwindigkeit der SPI-Schnittstelle mit dem Parameter -B [Periodendauer in Mikrosekunden] begrenzen. Da beide Geräte durch Interrupts der Software-USB-Schnittstelle stark belastet werden, handelt es sich hier um die Maximalbitrate.&lt;br /&gt;
&lt;br /&gt;
Unter WinXPsp2 auf einem Thinkpad T40 lies sich die &amp;quot;avrdude: AVR device not responding&amp;quot;-Meldung beheben durch Ändern von Gerätemanager--&amp;gt;Ltp1--&amp;gt;Eigenschaften--&amp;gt;Anschlusseinstellungen--&amp;gt;Interrupt-nie-verwenden in &amp;quot;Jeden dem Anschluss zugewiesenem Interrupt verwenden&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===USB Programmer===&lt;br /&gt;
Die meisten USB- Programmer benötigen [http://sourceforge.net/apps/trac/libusb-win32/wiki libusb-win32] bzw [http://www.libusb.org/ libusb]&lt;br /&gt;
&lt;br /&gt;
Ein Selbstbau USB-Programmer ist unter&lt;br /&gt;
[http://www.rototron.info/?Page=USBAVR/USBAVR.aspx http://www.rototron.info]&lt;br /&gt;
zu finden. Er läuft auch unter VISTA und benötigt mit der neuesten AVRDUDE Version keinen Treiber, da er im HID-Modus betrieben wird.&lt;br /&gt;
&lt;br /&gt;
==== libusb0.dll wird bei WinAvr 20070525 nicht gefunden====&lt;br /&gt;
[http://www.mikrocontroller.net/topic/83524#701461 Forenbeitrag von Paul]: Habe leider noch etwas zu bemängeln, und zwar meckerte avrdude, dass es die &amp;quot;libusb0.dll&amp;quot; nicht fand. Musste dann erst noch manuell den Pfad c:\winavr\utils\libusb\bin in die autoxecec.bat eintragen. Siehe auch [http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;p=373283 Diskussion bei www.avrfreaks.net]&lt;br /&gt;
&lt;br /&gt;
====Aufruf unter Linux als user (non-root)====&lt;br /&gt;
&lt;br /&gt;
Unter Linux kann häufig avrdude nur als user &#039;root&#039; auf den USB-Programmer zugreifen. Als normaler User bekommt man eine Fehlermeldung wie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#avrdude -c usbtiny -p m8&lt;br /&gt;
 &lt;br /&gt;
avrdude: error: usbtiny_transmit: &lt;br /&gt;
error sending control message: &lt;br /&gt;
Operation not permitted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies liegt daran, dass die device-nodes, die beim Einstecken des USB-Programmers von udev angelegt werden, root zugeordnet sind. Man kann dies ändern, indem man udev-Regeln für die verwendeten Programmer anlegt. Unter Debian muß man dazu nur eine neue Datei, z.&amp;amp;nbsp;B. 015_usbprog.rules unter /etc/udev/rules.d anlegen, z.&amp;amp;nbsp;B. mit folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Atmel AVR ISP mkII&lt;br /&gt;
SUBSYSTEM==&amp;quot;usb&amp;quot;, SYSFS{idVendor}==&amp;quot;03eb&amp;quot;, SYSFS{idProduct}==&amp;quot;2104&amp;quot;, GROUP=&amp;quot;users&amp;quot;, MODE=&amp;quot;0660&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# usbprog bootloader&lt;br /&gt;
ATTRS{idVendor}==&amp;quot;1781&amp;quot;, ATTRS{idProduct}==&amp;quot;0c62&amp;quot;, GROUP=&amp;quot;users&amp;quot;, MODE=&amp;quot;0660&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# USBasp programmer&lt;br /&gt;
ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;users&amp;quot;, MODE=&amp;quot;0660&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# USBtiny programmer&lt;br /&gt;
ATTRS{idVendor}==&amp;quot;1781&amp;quot;, ATTRS{idProduct}==&amp;quot;0c9f&amp;quot;, GROUP=&amp;quot;users&amp;quot;, MODE=&amp;quot;0660&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
habe den alten Inhalt nur auskommentiert, weil ich das ganze nur mit dem mkII testen konnte. ...Nur falls sich jemand beschweren sollte.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Atmel AVR ISP mkII&lt;br /&gt;
ATTRS{idVendor}==&amp;quot;03eb&amp;quot;, ATTRS{idProduct}==&amp;quot;2104&amp;quot;, GROUP=&amp;quot;users&amp;quot;, MODE=&amp;quot;0660&amp;quot; &lt;br /&gt;
 &lt;br /&gt;
# usbprog bootloader&lt;br /&gt;
ATTRS{idVendor}==&amp;quot;1781&amp;quot;, ATTRS{idProduct}==&amp;quot;0c62&amp;quot;, GROUP=&amp;quot;users&amp;quot;, MODE=&amp;quot;0660&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# USBasp programmer&lt;br /&gt;
ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;users&amp;quot;, MODE=&amp;quot;0660&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# USBtiny programmer&lt;br /&gt;
ATTRS{idVendor}==&amp;quot;1781&amp;quot;, ATTRS{idProduct}==&amp;quot;0c9f&amp;quot;, GROUP=&amp;quot;users&amp;quot;, MODE=&amp;quot;0660&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach muss in der Regel der udev-Dienst neu gestartet werden, was -- je nach System -- mit einem der beiden folgenden Befehle funktionieren sollte (natürlich nur als root):&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 /etc/init.d/udev restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 service udev restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo /sbin/udevadm control --reload-rules&amp;lt;/pre&amp;gt; bei aktueller udev-version, oder&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo /sbin/udevcontrol --reload-rules&amp;lt;/pre&amp;gt;, bei älteren udev-versionen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach sollte der USB-Programmer erneut angeschlossen werden. Falls es immer noch nicht funktioniert kann es helfen, als GROUP &amp;quot;plugdev&amp;quot; statt &amp;quot;users&amp;quot; zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Hiermit werden der AVR ISP mkII, der usbprog Bootloader, USBasp und USBtiny bekannt gemacht, so daß alle User in der Gruppe &amp;quot;users&amp;quot; darauf zugreifen können.&lt;br /&gt;
&lt;br /&gt;
Für weitere USB-Programmer muß man die entsprechende Zeile (mit ATTRS...) anlegen und die passenden Vendor und Product IDs eintragen.&lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [http://www.reactivated.net/writing_udev_rules.html Writing udev rules]&lt;br /&gt;
&lt;br /&gt;
=== Anzeige unterstützter AVRs ===&lt;br /&gt;
Wie die anderen Atmels bei avrdude heißen zeigt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avrdude -?&lt;br /&gt;
avrdude -p ?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== neuere AVRs hinzufügen ===&lt;br /&gt;
Manch neueres Silizium wird nicht erkannt da sich z.T. die IDs geändert haben. Um diese erfolgreich zu Programmieren empfiehlt sich ein eigenes config-File zu verwenden. Darin werden die &#039;fehlenden&#039; CPUs ergänzt:&lt;br /&gt;
&lt;br /&gt;
z.B. ATmega168P (Programmierung wie ATmega168): einfach den ATmega168 Teil duplizieren und die entsprechenden Änderungen (id, desc, signature) vornehmen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#------------------------------------------------------------&lt;br /&gt;
# ATmega168P&lt;br /&gt;
#------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
part&lt;br /&gt;
    id              = &amp;quot;m168p&amp;quot;;&lt;br /&gt;
    desc            = &amp;quot;ATMEGA168P&amp;quot;;&lt;br /&gt;
     has_debugwire = yes;&lt;br /&gt;
     flash_instr   = 0xB6, 0x01, 0x11;&lt;br /&gt;
     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,&lt;br /&gt;
	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,&lt;br /&gt;
	             0x99, 0xF9, 0xBB, 0xAF;&lt;br /&gt;
    stk500_devcode  = 0x86;&lt;br /&gt;
    # avr910_devcode = 0x;&lt;br /&gt;
    signature       = 0x1e 0x94 0x0b;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
danach kann, unter Angabe des neuen config-Files, auch ein ATmega168P programmiert werden, z.B.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avrdude -pm168p -C ~/.avrdude.config.neu -cstk500v2 -v  -U flash:w:main.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anschluss an COM10 und höher (Windows) ===&lt;br /&gt;
&lt;br /&gt;
Wenn AVRDUDE unter Windows an COM10 und höher betrieben werden soll, ist eine andere Schreibweise für die Schnittstelle in der Kommandozeile nötig. Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avrdude -c stk500v2 -p m16 -P \\.\com13 -uF -vvvv 2&amp;gt; logfile.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird statt der gewohnten Schreibweise &#039;&#039;&#039;com13&#039;&#039;&#039; die spezielle Schreibweise  &#039;&#039;&#039;\\.\com13&#039;&#039;&#039; verwendet und es wird mit &#039;&#039;-vvvv 2&amp;gt; logfile.txt&#039;&#039; eine ausführliche Debugausgabe für Fragen im Forum erzeugt. Näheres hierzu in der  [http://www.mikrocontroller.net/topic/90401 Forumsdiskussion].&lt;br /&gt;
&lt;br /&gt;
=== AVRISPmkII + AVRDUDE + Window Vista (32) ===&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/topic/126594#1157327&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;avrdude was compiled without usb support&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Offenbar enthielt WinAVR-20100110 zunächst fälschlicherweise eine AVRDUDE Version ohne USB Support [http://www.mikrocontroller.net/topic/163022#1554907].&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
 &lt;br /&gt;
1. WinAVR deinstallieren, gleiches Release (WinAVR-20100110) nocheinmal herunterladen und installieren (mindestens seit Anfang März 2010 enthält dieses Release avrdude in der Version 5.10 und bringt USB-Support mit).&lt;br /&gt;
&lt;br /&gt;
2. AVRDUDE selbst compilieren: http://www.mikrocontroller.net/topic/163675&lt;br /&gt;
&lt;br /&gt;
3. Compilierte Version 5.10 downloaden: http://www.mikrocontroller.net/topic/163675#1594689&lt;br /&gt;
&lt;br /&gt;
=== Textausgabe in Datei umleiten? ===&lt;br /&gt;
&lt;br /&gt;
Die Windows-&amp;quot;Shell&amp;quot; &#039;&#039;cmd&#039;&#039; benutzt für die Ausgabeumleitung die gleiche Syntax wie die Bourne-Shell (und damit auch&lt;br /&gt;
Bash): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
programm &amp;gt;datei 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
zur Umleitung von STDOUT und STDERR in die gleiche Datei (Yalu in [http://www.mikrocontroller.net/topic/124509#1135568]).&lt;br /&gt;
&lt;br /&gt;
Beispiel für Windows ([http://www.mikrocontroller.net/topic/124509#1136322], [http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true M$]):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avrdude -c avrispmkII -p m8 -P usb:xx -v &amp;gt; &amp;quot;C:\output.txt&amp;quot; 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder nur STDERR in Datei umleiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avrdude -c avrispmkII -p m8 -P usb:xx -v 2&amp;gt; &amp;quot;C:\output.txt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.franzis.de/elektronik/lernpakete-elektronik/lernpaket-mikrocontroller Franzis] bzw. [http://www.elo-web.de/elo/mikrocontroller-und-programmierung/avr-grundlagen/experimente-mit-dem-attiny13 ELO] Lernpaket Mikrocontroller (Attiny13) ===&lt;br /&gt;
&lt;br /&gt;
Markus hat in [http://www.mikrocontroller.net/topic/169549#1649459] einen Weg beschrieben, wie man den einfachen Programmieradapter des Lernpakets mit AVRDUDE ansteuern kann.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Anleitung [http://www.elektronik-labor.de/AVR/AVRdude.html LP Mikrocontroller und Attiny45 mit Avrdude] gibt es von Ralf Beesner auf der Webseite des Entwicklers Burkhard Kainka. In &#039;&#039;avrdude.conf&#039;&#039; wird dabei ein neuer Programmieradapter namens &#039;&#039;burkhard&#039;&#039; hinzugefügt. Ein zweiter Eintrag &#039;&#039;burkhard2&#039;&#039; in dieser &#039;&#039;&#039;avrdude.conf&#039;&#039;&#039; ist für die Programmierung des Atmega8 auf dem Franzis Retro-Pong Bausatz mit Hilfe des &amp;quot;Mega8-ISP-Programmer&amp;quot; (Layout siehe ELO-Webseite) vorgesehen.&lt;br /&gt;
&lt;br /&gt;
=== AVRDUDE mit Arduino Bootloader benutzen ===&lt;br /&gt;
&lt;br /&gt;
Mit der Option &#039;&#039;-c stk500v1&#039;&#039; kann AVRDUDE den [[Bootloader]] in Arduino Boards ansprechen [http://www.mikrocontroller.net/topic/195963#1919654].&lt;br /&gt;
&lt;br /&gt;
Es existieren auch modifizierte Versionen von AVRDUDE, die einen Programmer namens &#039;&#039;arduino&#039;&#039; kennen (avrdude.conf untersuchen!). Damit lautet die Kommandozeile für ein Arduinoboard mit Atmega168 beispielsweise [http://www.neuraladvance.com/2010/04/08/using-avrdude-with-the-arduino-duemilanove/]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avrdude -c arduino -p m168 -P usb -U flash:w:&amp;lt;filename&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bootloader-Hacks von [http://www.ladyada.net/library/arduino/bootloader.html Ladyada] arbeiten nochmal etwas anders.&lt;br /&gt;
&lt;br /&gt;
Gelegentlich gibt es unter Windows Probleme mit der allgemeinen AVRDUDE Version und deren Handling der DTR/RTS Leitung ([[RS232]]). Es kann helfen, unmittelbar von dem Absenden der Kommandozeile einen RESET auf dem Arduinoboard durchzuführen.&lt;br /&gt;
Ein kurzes Setzen der DTR Leitung auf HIGH bewirkt ein RESET. So ist es möglich eine .bat Datei zu erstellen mit folgendem Code: (com6 ist ein Virtueller USB Comport) &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mode com6 dtr=on&lt;br /&gt;
avrdude -c arduino -p m168 -P \\.\com6 -U flash:w:&amp;lt;filename&amp;gt;&lt;br /&gt;
if %ERRORLEVEL%==0 goto fertig&lt;br /&gt;
Pause&lt;br /&gt;
:fertig&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man den mode-Befehl nicht verwenden kann, etwa weil man cygwin und ein makefile verwendet, so kann man stattdessen &amp;lt;pre&amp;gt;cmd /c mode com6 dtr=on&amp;lt;/pre&amp;gt; verwenden. In cygwin empfiehlt sich &amp;lt;pre&amp;gt;cmd /c mode com6 dtr=on &amp;gt; /dev/null&amp;lt;/pre&amp;gt;, damit wird die unnütze Ausgabe des Befehls verborgen.&lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* http://www.mikrocontroller.net/topic/232367&lt;br /&gt;
* http://www.mikrocontroller.net/topic/238243&lt;br /&gt;
&lt;br /&gt;
=== mysmartUSB V2.11 und ATtiny 13 ===&lt;br /&gt;
&lt;br /&gt;
mysmartUSB V2.11 verlangt -cavr910 als Programmer. Leider ist in avrdude&lt;br /&gt;
5.10 immer noch nich der ATtiny13 damit zu programmieren. Also in die&lt;br /&gt;
avrdude.conf folgendes mit unter ATtiny13 aufnehmen, so kann er dann&lt;br /&gt;
korrekt programmiert werden(inkl. Fuse Bits).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#------------------------------------------------------------&lt;br /&gt;
# ATtiny13&lt;br /&gt;
#------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
part&lt;br /&gt;
    id                  = &amp;quot;t13&amp;quot;;&lt;br /&gt;
    desc                = &amp;quot;ATtiny13&amp;quot;;&lt;br /&gt;
     has_debugwire = yes;&lt;br /&gt;
     flash_instr   = 0xB4, 0x0E, 0x1E;&lt;br /&gt;
     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,&lt;br /&gt;
               0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC,&lt;br /&gt;
               0x99, 0xE1, 0xBB, 0xAC;&lt;br /&gt;
    stk500_devcode      = 0x14;&lt;br /&gt;
    avr910_devcode      = 0x55;&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung! Programmieren geht auch mit -cavr911. Allerdings geht das Fuse&lt;br /&gt;
setzen nicht und man bekommt eine Fehlermeldung.(Programm läuft aber)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reading | ################################################## | 100%&lt;br /&gt;
0.12s&lt;br /&gt;
&lt;br /&gt;
avrdude: verifying ...&lt;br /&gt;
avrdude: 226 bytes of flash verified&lt;br /&gt;
avrdude: reading input file &amp;quot;0x7a&amp;quot;&lt;br /&gt;
avrdude: writing lfuse (1 bytes):&lt;br /&gt;
&lt;br /&gt;
Writing |  ***failed;&lt;br /&gt;
################################################## | 100% 0.00s&lt;br /&gt;
&lt;br /&gt;
avrdude: 1 bytes of lfuse written&lt;br /&gt;
avrdude: verifying lfuse memory against 0x7a:&lt;br /&gt;
avrdude: load data lfuse data from input file 0x7a:&lt;br /&gt;
avrdude: input file 0x7a contains 1 bytes&lt;br /&gt;
avrdude: reading on-chip lfuse data:&lt;br /&gt;
&lt;br /&gt;
Reading | ################################################## | 100%&lt;br /&gt;
0.00s&lt;br /&gt;
&lt;br /&gt;
avrdude: verifying ...&lt;br /&gt;
avrdude: 1 bytes of lfuse verified&lt;br /&gt;
avrdude: reading input file &amp;quot;0xff&amp;quot;&lt;br /&gt;
avrdude: writing hfuse (1 bytes):&lt;br /&gt;
&lt;br /&gt;
Writing |  ***failed;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anpassungen von avrdude.conf an neuere AVRs ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ATtiny167&#039;&#039;&#039; siehe [http://www.mikrocontroller.net/topic/236355 Forumbeitrag von Volker U.]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Offizielle AVRDUDE Homepage unter http://www.nongnu.org/avrdude/&lt;br /&gt;
* User Manual (engl.) unter http://www.nongnu.org/avrdude/user-manual/avrdude.html#Top&lt;br /&gt;
* Kompilierte Windows Version mit USB Support http://yuki-lab.jp/hw/avrdude-GUI/avrdude-5.5-win32-bin.zip&lt;br /&gt;
* Kompilierte Windows Version avrdude 5.10 mit USB Support http://www.mikrocontroller.net/topic/163675#1594689&lt;br /&gt;
* Kompilierte Windows Version avrdude 5.11.1 mit USB Support http://www.mikrocontroller.net/topic/163675#2383773&lt;br /&gt;
* Wer Interesse an der modifizierten Version von AVRDUDE und des AVR910-Programmer hat, kann sich bei http://www.fischl.de/thomas/elektronik/avr910e/ informieren. Der Programmer bleibt auch mit der Modifikation weiterhin kompatibel zu anderer Programmiersoftware.&lt;br /&gt;
* [[Burn-o-mat|AVR Burn-O-Mat]] GUI (Graphic User Interface) für AVRDUDE http://burn-o-mat.net mit FUSE-Editor (Java, für Windows und Linux)&lt;br /&gt;
* [http://www.soft-land.de/ AVRBurner] Ponyprog-ähnliche Oberfläche für AVRDUDE.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.microstar.ir/download/SinaProg.zip SinaProg] SinaProg - avrdude GUI mit AVR Fuse Calculator. &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; LINK IST TOT&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
[[Kategorie:AVR-Programmer und -Bootloader]]&lt;br /&gt;
[[Kategorie:Entwicklungstools]]&lt;/div&gt;</summary>
		<author><name>Vogtinator</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Eclipse&amp;diff=68060</id>
		<title>AVR Eclipse</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Eclipse&amp;diff=68060"/>
		<updated>2012-08-24T18:19:54Z</updated>

		<summary type="html">&lt;p&gt;Vogtinator: opensuse aktualisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt erste Erfahrungen mit Eclipse und der AVR-Toolchain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Allgemeines zu Eclipse ==&lt;br /&gt;
Eclipse ist eine IDE, die sich alleine nicht zur Programmierung von C/C++ eignet. Dafür gibt es dann das Eclipse-Plugin CDT (auch von ECLIPSE.ORG). Die CDT erweitert Eclipse mit der Möglichkeit, C/C++ zu programmieren. Das aber erstmal nur mit dem GCC. Um die Toolchain AVR-GCC (WINAVR) einzubinden, benötigt man noch ein weiteres Plugin (CDT AVRGCC oder auch CDT AVR Plugin). Es ist auch möglich, ohne die beiden letzt genannten Plugins zu arbeiten, dann sind die Einstellungen für den GCC an AVR-GCC anzupassen (unkomfortabler).&lt;br /&gt;
&lt;br /&gt;
==  Allgemeines zu dem AVR Eclipse Plugin ==&lt;br /&gt;
&lt;br /&gt;
Da dieser Artikel nicht immer auf dem neuesten Stand ist, bekommt man weitere Informationen auf der englischen [http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin AVR Eclipse Plugin WIKI] Seite&lt;br /&gt;
&lt;br /&gt;
=== Eclipse Plugin Tutorials ===&lt;br /&gt;
&lt;br /&gt;
* Kurzanleitung zur Installation des [http://winavr.scienceprog.com/other-valuable-tools/using-eclipse-as-ide-for-winavr-compiler.html Plugins] (englisch).&lt;br /&gt;
&lt;br /&gt;
== Installation unter Windows ==&lt;br /&gt;
&lt;br /&gt;
=== Was wird benötigt? ===&lt;br /&gt;
==== Compiler ====&lt;br /&gt;
* [http://winavr.sourceforge.net/ WINAVR] AVR-GCC Compiler Toolchain, siehe auch Artikel [[WinAVR]]&lt;br /&gt;
&lt;br /&gt;
==== IDE ====&lt;br /&gt;
Eclipse braucht eine JAVA Runtime Enviroment, falls diese noch nicht installiert ist muss das auch noch heruntergeladen werden&lt;br /&gt;
* [http://java.sun.com/javase/downloads/index.jsp JDK 6 Update 23]&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn man die Version mit dem integrierten CDT-Plugin verwendet.&lt;br /&gt;
Unter diesem Link die &amp;quot;Helios SR2&amp;quot; &#039;&#039;&#039;Eclipse IDE for C/C++ Developers&#039;&#039;&#039; downloaden.&lt;br /&gt;
(Es kann Probleme mit der aktuellen Eclipse-Version (Indigo) und WinAVR geben [http://www.mikrocontroller.net/articles/AVR-GCC#Tipps_.26_Tricks Quelle])&lt;br /&gt;
* [http://www.eclipse.org/downloads/ Eclipse IDE]&lt;br /&gt;
&lt;br /&gt;
Das zusätzliche AVR Plugin ist notwendig zum Einbinden des AVR-GCC. Kann hier heruntergeladen werden. Oder, besser, in einer installierten Eclipse Umgebung eingebunden werden.&lt;br /&gt;
* [http://sourceforge.net/projects/avr-eclipse CDT AVRGCC Plugin]&lt;br /&gt;
&lt;br /&gt;
==== Programmer / Debugger ====&lt;br /&gt;
Zum Programmieren und Debuggen kann man eingentlich jedes beliebige Programm verwenden. Zum Debuggen kommt unter anderem AVaRICE zum Einsatz, mit dem man auch programmieren kann (JTAG).&lt;br /&gt;
Wahlweise ist auch AVRDUDE zum programmieren zu verwenden. Das kann man machen,&lt;br /&gt;
wie man möchte. Beide Programme sind in WINAVR (siehe oben unter Compiler) enthalten.&lt;br /&gt;
&lt;br /&gt;
=== Wie Installieren ===&lt;br /&gt;
WinAVR sollte auf dem System installiert sein. Siehe [[AVR_Eclipse#Compiler|oben]].&lt;br /&gt;
==== JAVA ====&lt;br /&gt;
&lt;br /&gt;
Java Runtime installieren.&lt;br /&gt;
&lt;br /&gt;
==== IDE ====&lt;br /&gt;
Eclipse ist in einem Zip Archiv, das an einen beliebigen Ort entpackt werden kann. Gestartet wird das Programm mit der Datei eclipse.exe. Meldet Eclipse beim Start einen Fehler, ist wahrscheinlich keine oder eine unpassende JAVA Runtime Enviroment installiert.&lt;br /&gt;
&lt;br /&gt;
==== Plugin ====&lt;br /&gt;
Es gibt zwei Möglichkeiten, wobei die [[AVR_Eclipse#.C3.9Cber_Updatesite:|erste]] empfohlen wird:&lt;br /&gt;
&lt;br /&gt;
===== Über Updatesite: =====&lt;br /&gt;
&lt;br /&gt;
* Eclipse starten. Zum Software Update Dialog gehen (Help &amp;gt; Install New Software ...)&lt;br /&gt;
&lt;br /&gt;
* In der Zeile Work with ... http://avr-eclipse.sourceforge.net/updatesite eintragen. &lt;br /&gt;
*Button Add anklicken. Einen Namen vergeben z.B. AVR-Eclipse. &lt;br /&gt;
*Neuste Version von AVR-Eclipse auswählen und installieren.&lt;br /&gt;
&lt;br /&gt;
===== Direkt installieren: ===== &lt;br /&gt;
Das Plugin ist ebenfalls eine ZIP-Datei die entpackt werden muss. Alle Dateien und Ordner im features Ordner müssen in den features Ordner von Eclipse kopiert werden. Alle Dateien und Ordner im Verzeichnis plugins müssen in den plugins Ordner von Eclipse kopiert werden.&lt;br /&gt;
&lt;br /&gt;
== Installation unter Linux ==&lt;br /&gt;
&lt;br /&gt;
===openSuSE===&lt;br /&gt;
Eclipse läßt sich einfach via zypper oder yast installieren:&lt;br /&gt;
&lt;br /&gt;
 zypper install eclipse&lt;br /&gt;
&lt;br /&gt;
Seit openSUSE 11.4 muss man ein neues Repository hinzufügen:&lt;br /&gt;
&lt;br /&gt;
 http://download.opensuse.org/repositories/CrossToolchain:/avr/openSUSE_12.1/&lt;br /&gt;
&lt;br /&gt;
und dann &lt;br /&gt;
&lt;br /&gt;
 zypper install avr-libc cross-avr-gcc&lt;br /&gt;
&lt;br /&gt;
ausführen.&lt;br /&gt;
Benutzt man noch 11.3, muss man avr-libc-1.7.0.5.1 aus den alten Repos installieren, da die neueste Version von cross-avr-gcc dort verbuggt ist (vllt. io.h vergessen?).&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
==== Eclipse-IDE ====&lt;br /&gt;
* emerge eclipse-sdk -av&lt;br /&gt;
Den Rest per eclipse update oder von Hand:&lt;br /&gt;
* [http://www.eclipse.org/cdt/ Eclipse-CDT-Plugin] Version 3.0.0&lt;br /&gt;
* [http://sf.net/projects/avr-eclipse Eclipse-CDT-Addon for AVR] Version 20070404&lt;br /&gt;
&lt;br /&gt;
==== Compiler ====&lt;br /&gt;
crossdev emergen:&lt;br /&gt;
* emerge crossdev &lt;br /&gt;
Stabile Version der avr-toolchain inkl. g++ kompilieren:&lt;br /&gt;
* USE=&amp;quot;-nocxx&amp;quot; crossdev -s4 -S -t avr --ov-output /usr/local/portage&lt;br /&gt;
&lt;br /&gt;
Es gibt Probleme mit crossdev und den ldscripts. Der Link wird nicht angelegt. Fix für 64Bit:&lt;br /&gt;
* ln -s /usr/lib64/binutils/avr/2.20.1/ldscripts/ /usr/avr/lib/&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
* emerge uisp&lt;br /&gt;
&lt;br /&gt;
=== Debian ===&lt;br /&gt;
==== Eclipse-IDE ====&lt;br /&gt;
* [http://www.eclipse.org/downloads/index.php Eclipse-IDE] Version 3.1.0&lt;br /&gt;
* [http://www.eclipse.org/cdt/ Eclipse-CDT-Plugin] Version 3.0.0&lt;br /&gt;
* [http://sf.net/projects/avr-eclipse Eclipse-CDT-Addon for AVR] Version 20070404&lt;br /&gt;
&lt;br /&gt;
==== Compiler ====&lt;br /&gt;
* binutils-avr 2.15-3&lt;br /&gt;
* gcc-avr 1:3.4.3-2&lt;br /&gt;
* avr-libc 1:1.2.3-3&lt;br /&gt;
&lt;br /&gt;
==== Debugger ====&lt;br /&gt;
* simulavr 0.1.2.2-1&lt;br /&gt;
* gdb-avr 6.3-2&lt;br /&gt;
* ? avra 0.7-1&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
* AVRDUDE und die GUI [http://avr8-burn-o-mat.aaabbb.de/ avr8-burn-o-mat]&lt;br /&gt;
* uisp 20050207&lt;br /&gt;
* ? avrp&lt;br /&gt;
* ? avrprog&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 8.10 (Zum ersten) ===&lt;br /&gt;
==== Eclipse-IDE ====&lt;br /&gt;
* [http://www.eclipse.org/downloads Eclipse IDE for C/C++ Developers] Version 3.3, CDT Version 4.0&lt;br /&gt;
* [http://sourceforge.net/projects/avr-eclipse AVR-Eclipse-Plugin] Version 2.2.0&lt;br /&gt;
&lt;br /&gt;
==== Compiler ====&lt;br /&gt;
* binutils-avr: 2.18-3&lt;br /&gt;
* gcc-avr: 1:4.3.0-2&lt;br /&gt;
* avr-libc: 1:1.6.2-1&lt;br /&gt;
&lt;br /&gt;
==== Debugger ====&lt;br /&gt;
* [ftp://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.bz2 avr-gdb]: 6.6; &#039;&#039;&#039;In den Repositories ist 6.4.90!&#039;&#039;&#039; &lt;br /&gt;
* avarice: 2.7-2&lt;br /&gt;
* simulavr: 0.1.2.2-6.1 (nicht getestet, sollte aber genauso funktionieren)&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
* avrdude: 5.5-3 und GUI [http://avr8-burn-o-mat.aaabbb.de/ avr8-burn-o-mat]&lt;br /&gt;
&lt;br /&gt;
==== Zusätzliche notwendige Programme/Libraries ====&lt;br /&gt;
* gcc&lt;br /&gt;
* binutils-avr&lt;br /&gt;
* build-essential&lt;br /&gt;
* ncurses-dev&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu (Zum zweiten) ===&lt;br /&gt;
==== AVR-Toolchain ====&lt;br /&gt;
Leider ist in den Repositories nur eine veraltete Version von avr-gdb (bzw. gdb-avr) enthalten. Diese Version hat bei mir zu Fehlern geführt. Deshalb wird die aktuelle Releaseversion 6.6 verwendet.&lt;br /&gt;
&lt;br /&gt;
==== Schritt für Schritt ====&lt;br /&gt;
Als erstes werden die notwendigen Programme aus den Repositories installiert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install gcc gcc-avr avr-libc avrdude binutils-avr avarice build-essential ncurses-dev&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu 6.10:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install gcc gcc-avr avr-libc avrdude binutils-avr avarice build-essential libncurses5-dev&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlich können auch noch folgende Packages interessant sein:&lt;br /&gt;
* Simulavr: Ein Simulator für die AVR-Reihe&lt;br /&gt;
* uisp: Alternativer Downloader&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install simulavr uisp&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man bereits das AVR-Target ansprechen, um z.&amp;amp;nbsp;B. die Fuses auszulesen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;avarice -j /dev/ttyUSB0 -P atmega128 -r&amp;lt;/pre&amp;gt;&lt;br /&gt;
* -j: Gibt das Gerät an, mit dem das Target verbunden ist.&lt;br /&gt;
* -P: Zielarchitektur&lt;br /&gt;
* -r: Read Fuses&lt;br /&gt;
&lt;br /&gt;
Dazu ist die Manpage von avarice zu empfehlen: &lt;br /&gt;
&amp;lt;pre&amp;gt;man avarice&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes muss gdb-avr heruntergeladen und dann kompiliert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wget ftp://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.bz2&lt;br /&gt;
tar jxf gdb-6.6.tar.bz2&lt;br /&gt;
cd gdb-6.6&lt;br /&gt;
./configure --target=avr --prefix=/usr/local/avr&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
cd ..&lt;br /&gt;
rm -rf gdb-6.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies installiert die aktuelle Version von gdb-avr unter /usr/local/avr. Diesen Pfad könnte man zur PATH-Variable hinzufügen, dies ist allerdings nicht zwingend notwendig.&lt;br /&gt;
&lt;br /&gt;
Unter Ubuntu 8.10 kommt es bei der Installation zu Problemen.&lt;br /&gt;
Hier gibt es Abhilfe:&lt;br /&gt;
http://www.mikrocontroller.net/topic/76404#1198507&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zitat:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Fehlermeldung lautet ja:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avr-dis.c:xxx: error: format not a string literal and no format arguments&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
und Zeile xxx in dieser Datei lautet: &amp;lt;c&amp;gt;sprintf (buf, xyz);&amp;lt;/c&amp;gt; Wenn man das in &amp;lt;c&amp;gt;strcpy(buf, xyz);&amp;lt;/c&amp;gt; ändert, sollte es funktionieren.&lt;br /&gt;
&lt;br /&gt;
== Einrichten von Eclipse unter Windows ==&lt;br /&gt;
Beim ersten Start muss man einen Workspace angeben, dazu kann das vorgeschlagene Standardverzeichnis verwendet werden, wenn nur ein Benutzer diesen Workspace verwendet, ansonsten sollte man einen Ort auswählen, auf den alle Zugriff haben. Danach sollte das Bild so aussehen. Klicke auf Workbench.&lt;br /&gt;
&lt;br /&gt;
[[Bild:EclipseStart.png]]&lt;br /&gt;
&lt;br /&gt;
== Einrichten von Eclipse unter Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Alternative 1 ===&lt;br /&gt;
&lt;br /&gt;
Das AVR-Eclipse Plugin kann über die Update-Site http://avr-eclipse.sourceforge.net/updatesite/ installiert werden. (Help-&amp;gt;Software Updates...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&amp;gt;Ab AVR-Eclipse Plugin V 2.0.1 ist es nicht mehr nötig was mit avr-objsplit zu machen da die flash und EEPROM Dateien direkt erzeugt werden. (laut Thomas Holland, Forum)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss muss noch, die avr-objsplit.bat-Datei, wie folgt, umgeschrieben, nach /usr/bin/avr-objsplit kopiert und ausführbar gemacht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
avr-objcopy -j .text -j .data -O ihex *.elf flash.hex&lt;br /&gt;
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex *.elf eeprom.hex&lt;br /&gt;
if [ ! -f eeprom.hex ]; then&lt;br /&gt;
        echo &amp;quot;:00000001FF&amp;quot; &amp;gt; eeprom.hex&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ändern der Rechte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x avr-objsplit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Einstellungen ====&lt;br /&gt;
Jetzt müssen noch gewisse Einstellungen in Eclipse angepasst werden:&lt;br /&gt;
Unter Window-&amp;gt;Preferences-&amp;gt;AVR-&amp;gt;AVRdude:&lt;br /&gt;
&lt;br /&gt;
* Programmer auswählen&lt;br /&gt;
* Programmerport auswählen&lt;br /&gt;
* Target MCU Type auswählen&lt;br /&gt;
&lt;br /&gt;
==== Projekteinstellungen ====&lt;br /&gt;
Jetzt kann ein neues C-Project angelegt werden, wobei als Projekttyp &amp;quot;AVR Cross-Target Project&amp;quot; ausgewählt werden muss.&amp;lt;br/&amp;gt;Im &amp;quot;New Project Wizard&amp;quot; kann der MCU-Typ und die Quarzfrequenz eingestellt werden. Weitere Compiler-Optionen sind in den Projekteinstellungen unter &amp;quot;C/C++ Build-&amp;gt;Settings&amp;quot; möglich.&lt;br /&gt;
&lt;br /&gt;
=== Alternative 2 ===&lt;br /&gt;
&lt;br /&gt;
Dabei werden die Projekteinstellungen eines Standard-C-Projekts so verändert, dass die AVR-Toolchain verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Mein erster erfolgreicher Versuch lief mit einen &amp;quot;managed C Projekt&amp;quot;. Ich hoffe in der folgenden Beschreibung fehlt kein Schritt:&lt;br /&gt;
* File / New / Managed Make C Project&lt;br /&gt;
** Project Name &#039;&#039;&#039;&amp;quot;test2&amp;quot; [Next]&#039;&#039;&#039;&lt;br /&gt;
** Project Type &#039;&#039;&#039;&amp;quot;Executable (GNU)&amp;quot; [Next]&#039;&#039;&#039;&lt;br /&gt;
** C/C++ Indexer &#039;&#039;&#039;&amp;quot;full ...&amp;quot; [Finish]&#039;&#039;&#039; (hab ich später geändert siehe unten)&lt;br /&gt;
&lt;br /&gt;
==== Projekteinstellungen ====&lt;br /&gt;
* File / New / SourceFile&lt;br /&gt;
** &#039;&#039;&#039;[Browse] &amp;quot;test2&amp;quot; [OK]&#039;&#039;&#039;&lt;br /&gt;
** Source File: &#039;&#039;&#039;&amp;quot;test2.c&amp;quot; [Finish]&#039;&#039;&#039;&lt;br /&gt;
* Project / Properties&lt;br /&gt;
** C/C++ Build / ToolSettings&lt;br /&gt;
*** GCC-C-Compiler&lt;br /&gt;
**** Command:  &#039;&#039;&#039;gcc&#039;&#039;&#039; ändern auf &#039;&#039;&#039;avr-gcc -mmcu=atmega16 -c&#039;&#039;&#039;&lt;br /&gt;
**** Das &#039;&#039;&#039;-c&#039;&#039;&#039; ist wichtig, damit nur kompliert aber nicht gelinkt wird.&lt;br /&gt;
**** Directorys Eintrag &#039;&#039;&#039;/usr/avr/include&#039;&#039;&#039; einfügen&lt;br /&gt;
**** Debugging  gewünschten Wert einstellen (z.&amp;amp;nbsp;B. -g)&lt;br /&gt;
*** GCC-C-Linker &lt;br /&gt;
**** Command:  &#039;&#039;&#039;gcc&#039;&#039;&#039; auch ändern auf &#039;&#039;&#039;avr-gcc -mmcu=atmega16 &#039;&#039;&#039;&lt;br /&gt;
**** Libraries: Library Search Path= &#039;&#039;&#039;/usr/avr&#039;&#039;&#039;&lt;br /&gt;
**** Miscellaneous: Linker Flags = &#039;&#039;&#039;-Wl,-Map,avr.map&#039;&#039;&#039;&lt;br /&gt;
*** GCC Assembler&lt;br /&gt;
**** Command:  &#039;&#039;&#039;as&#039;&#039;&#039; ändern auf &#039;&#039;avr-as&#039;&#039;&lt;br /&gt;
** C/C++ Build / Build Steps&lt;br /&gt;
*** Post-Build-Step&lt;br /&gt;
**** Command: &#039;&#039;&#039;avr-objcopy -j .text -j .data -O ihex test2 test2.hex&#039;&#039;&#039;&lt;br /&gt;
** C/C++ Indexer&lt;br /&gt;
*** Available Indexers = &#039;&#039;&#039;CTags Indexer (declarations only)&#039;&#039;&#039;&lt;br /&gt;
*** Include Files: Index Include paths &#039;&#039;&#039; einschalten&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== später eingefügt: ====&lt;br /&gt;
* Project / Properties&lt;br /&gt;
** C/C++ Build / Build Steps&lt;br /&gt;
*** Pre-Build-Step&lt;br /&gt;
**** Command: &#039;&#039;&#039;uisp -dprog=dasa2 -dserial=/dev/ttyS0 -dpart=atmega16 --erase&#039;&#039;&#039;&lt;br /&gt;
* Project / Properties&lt;br /&gt;
** C/C++ Build / Build Steps&lt;br /&gt;
*** Post-Build-Step&lt;br /&gt;
**** Command: &#039;&#039;&#039;avr_upload&#039;&#039;&#039;&lt;br /&gt;
* Project / Properties&lt;br /&gt;
** C/C++ Build / Build Settings&lt;br /&gt;
*** Build Output&lt;br /&gt;
**** Artifact Name: &#039;&#039;&#039;avr_main&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
avr_upload ist eine kleine Batchdatei im Verzeichniss &#039;&#039;&#039;/usr/bin &#039;&#039;&#039;, die ich neu angelegt hab:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# .lst-Datei erzeugen (optional)&lt;br /&gt;
# avr-objdump -h -S avr_main &amp;gt; avr.lst&lt;br /&gt;
# Datei in Intel-hex erzeugen&lt;br /&gt;
avr-objcopy -j .text -j .data -O ihex avr_main avr.hex&lt;br /&gt;
# Intel-hex-Datei uploaden&lt;br /&gt;
#uisp -dprog=dasa2 -dserial=/dev/ttyS0 -dpart=atmega16 --upload if=avr.hex&lt;br /&gt;
# Intel-hex Datei uploaden und verifizieren.&lt;br /&gt;
uisp -dprog=dasa2 -dserial=/dev/ttyS0 -dpart=atmega16 --upload if=avr.hex --verify&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Eclipse Plugin ====&lt;br /&gt;
&lt;br /&gt;
Im Forum gibt es ein Plugin für Eclipse, das einen Großteil dieser Einstellungen bereits beinhaltet. Der Thread steht unter: &lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-2-229419.html#new &lt;br /&gt;
&lt;br /&gt;
Das Plugin wird dort zum Download angeboten. Aber es ist sicher hilfreich die dortige Anleitung zu beachten.&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/attachment.php/285349/org.eclipse.cdt.avrgcc_1.0.16.zip&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HINWEIS:&#039;&#039;&#039; Bitte die aktuelle Version benutzen. Folgende Warnung bezieht sich auf die älteren Versionen (vor Version 1.0.14).&lt;br /&gt;
&#039;&#039;&#039;WARNUNG:&#039;&#039;&#039; Bei mir funktionierten Timer-Interrupts mit dem Plugin nicht (die jedoch tadellos mit der WinAVR Makefile funktionierten). Vielleicht habe ich nur eine Option übersehen, seid aber auf der Hut. Wenn ihr Unregelmäßigkeiten bei IRQs feststellt, versucht&#039;s erstmal ohne das Eclipse-Plugin (bevor ihr stundenlang an eurem Code und euch selbst zweifelt :-) ).&lt;br /&gt;
&lt;br /&gt;
== Projekt erstellen ==&lt;br /&gt;
[[Bild:NewProject.png]]&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, dass man &#039;&#039;&#039;AVR Cross Target Application&#039;&#039;&#039; auswählt&lt;br /&gt;
&lt;br /&gt;
[[Bild:CreateProject.png]]&lt;br /&gt;
&lt;br /&gt;
Beim nächsten Schritt kann man auswählen, was für Konfigurationen man will. In den meisten Fällen reicht es aus, wenn man nur &#039;&#039;&#039;Release&#039;&#039;&#039; auswählt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:SelectConfigurations.png]]&lt;br /&gt;
&lt;br /&gt;
In diesem Schritt wählt man den Prozessor und die Taktfrequenz aus, wobei die Taktfrequenz in Hz angegeben werden muss&lt;br /&gt;
&lt;br /&gt;
[[Bild:TargetHardwareProperties.png]]&lt;br /&gt;
&lt;br /&gt;
== Erster Test ==&lt;br /&gt;
Die jeweiligen Alternativen beziehen sich auf die oben genannten verschiedenen Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
Die folgenden Angaben beziehen sich auf ein sehr einfaches Entwicklungsboard von Pollin, welches aber auch einfach nachgebaut werden kann. Den Schaltplan gibt&#039;s [http://www.pollin.de/shop/downloads/D810022B.PDF als PDF hier].&lt;br /&gt;
&lt;br /&gt;
==== Programm eintippen ====&lt;br /&gt;
(oder einfach von hier kopieren)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
#define running  1  &lt;br /&gt;
&lt;br /&gt;
// Unterprogramm mit Zeitschleife fuer ATMega16 ohne Quarz&lt;br /&gt;
void delay_ms( unsigned int ms )&lt;br /&gt;
{&lt;br /&gt;
    unsigned int  i;&lt;br /&gt;
    unsigned int  j;&lt;br /&gt;
       &lt;br /&gt;
    for ( i = ms;  i;  i-- ) &lt;br /&gt;
    {&lt;br /&gt;
        for ( j = 51;  j;  j-- )&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
    }    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
    // PortD6 als Output konfigurieren&lt;br /&gt;
    DDRD |= _BV(PD6);&lt;br /&gt;
&lt;br /&gt;
    // Hauptschleife des Programms&lt;br /&gt;
    while ( running )&lt;br /&gt;
    {&lt;br /&gt;
    	// LED einschalten, und dann warten&lt;br /&gt;
        PORTD |= _BV(PD6);&lt;br /&gt;
        delay_ms( 1000 ); &lt;br /&gt;
        &lt;br /&gt;
    	// LED ausschalten, und dann warten&lt;br /&gt;
        PORTD &amp;amp;= ~_BV(PD6);&lt;br /&gt;
        delay_ms( 29000 );         &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um dass Programm zu kompilieren muss links im &#039;&#039;&#039;Project Explorer&#039;&#039;&#039; der Projektordner angeklickt werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MakeTarget.png]]&lt;br /&gt;
&lt;br /&gt;
Eine Konfiguration fügt man mit &#039;&#039;&#039;Add&#039;&#039;&#039; hinzu. In neuen Fenster gibt man als &#039;&#039;&#039;Target Name&#039;&#039;&#039; einen Namen ein. Der Name wird später unter anderem für den Dateinamen der HEX-Datei verwendet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:MakeTargetOptions.png]]&lt;br /&gt;
&lt;br /&gt;
Die Einstellungen mit &#039;&#039;&#039;Create&#039;&#039;&#039; bestätigen und das andere Fenster mit &#039;&#039;&#039;Cancel&#039;&#039;&#039; schliessen. Ändert man nun eine Datei und speichert sie ab, wird das Projekt automatisch kompiliert. Das kann übrigens über &#039;&#039;&#039;Project&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;Build Automatically&#039;&#039;&#039; geändert werden, da es bei grossen Projekten nachteilig ist, wenn der da die ganze Zeit kompiliert. Ob das ganze funktioniert hat kann man überprüfen, indem man auf &#039;&#039;&#039;Console&#039;&#039;&#039; klickt. Wenn das Kompilieren erfolgreich war, sollte die Ausgabe etwa so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
**** Build of configuration Release for project AVRTest ****&lt;br /&gt;
&lt;br /&gt;
make &lt;br /&gt;
Building target: AVRTest.elf&lt;br /&gt;
Invoking: AVR C Linker&lt;br /&gt;
avr-gcc -Wl,-Map,AVRTest.map -mmcu=atmega8 -o&amp;quot;AVRTest.elf&amp;quot;  ./main.o   &lt;br /&gt;
Finished building target: AVRTest.elf&lt;br /&gt;
 &lt;br /&gt;
Invoking: AVR Create Extended Listing&lt;br /&gt;
avr-objdump -h -S AVRTest.elf  &amp;gt;&amp;quot;AVRTest.lss&amp;quot;&lt;br /&gt;
Finished building: AVRTest.lss&lt;br /&gt;
 &lt;br /&gt;
Create Flash image (ihex format)&lt;br /&gt;
avr-objcopy -R .eeprom -O ihex AVRTest.elf  &amp;quot;AVRTest.hex&amp;quot;&lt;br /&gt;
Finished building: AVRTest.hex&lt;br /&gt;
 &lt;br /&gt;
Create eeprom image (ihex format)&lt;br /&gt;
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex AVRTest.elf  &amp;quot;AVRTest.eep&amp;quot;&lt;br /&gt;
Finished building: AVRTest.eep&lt;br /&gt;
 &lt;br /&gt;
Invoking: Print Size&lt;br /&gt;
avr-size --format=avr --mcu=atmega8 AVRTest.elf&lt;br /&gt;
AVR Memory Usage&lt;br /&gt;
----------------&lt;br /&gt;
Device: atmega8&lt;br /&gt;
&lt;br /&gt;
Program:     108 bytes (1.3% Full)&lt;br /&gt;
(.text + .data + .bootloader)&lt;br /&gt;
&lt;br /&gt;
Data:          0 bytes (0.0% Full)&lt;br /&gt;
(.data + .bss + .noinit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finished building: sizedummy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projekteinstellungen ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Die Einstellungen können unter &#039;&#039;&#039;Project&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;Properties&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;C/C++ Build&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;Settings&#039;&#039;&#039; vorgenommen werden. Auch hier muss man zuerst das Projekt im &#039;&#039;&#039;Project Explorer&#039;&#039;&#039; erstmal anklicken.&lt;br /&gt;
&lt;br /&gt;
[[Bild:ProjectProperties.png]]&lt;br /&gt;
&lt;br /&gt;
=== Prozessor / Taktfrequenz ===&lt;br /&gt;
Den Prozessor oder die Taktfrequenz kann man hier verändern&lt;br /&gt;
&#039;&#039;&#039;Project&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;Properties&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;AVR&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;Target Hardware&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Prozessor brennen ==&lt;br /&gt;
=== AVRDude ===&lt;br /&gt;
Den Prozessor kann man mit dem &#039;&#039;&#039;AVR&#039;&#039;&#039; Button in der Symbolleiste direkt aus Eclipse heraus mit AVRDude programmieren, dafür muss man aber gewisse Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
=== Programmierhardware auswählen ===&lt;br /&gt;
&#039;&#039;&#039;Project&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;Properties&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;AVR&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;AVRDude&#039;&#039;&#039; Danach klickt man auf den Tab &#039;&#039;&#039;Programmer&#039;&#039;&#039; und dann auf &#039;&#039;&#039;New&#039;&#039;&#039;. In der Liste wählt man einen Programmer aus und nimmt gegebenen falls zusätzliche Einstellungen vor.&lt;br /&gt;
&lt;br /&gt;
=== HEX-Datei auswählen ===&lt;br /&gt;
&#039;&#039;&#039;Project&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;Properties&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;AVR&#039;&#039;&#039; --&amp;gt; &#039;&#039;&#039;AVRDude&#039;&#039;&#039; Danach klickt man auf den Tab Flash/EEPROM. Eigentlich reicht es aus, &#039;&#039;&#039;from Build&#039;&#039;&#039; auszuwählen.&lt;br /&gt;
&lt;br /&gt;
=== Fuse- / Lockbits ===&lt;br /&gt;
Zu den Fuse- bzw. Lockbits gibt es in den jeweiligen Tabs diverse Einstellmöglichkeiten.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
Debuggen funktioniert mit Eclipse entweder mit &#039;&#039;&#039;avarice&#039;&#039;&#039; oder &#039;&#039;&#039;simulavr&#039;&#039;&#039;, wobei ersteres zum OnDeviceDebugging dient und zweiteres einen Simulator darstellt. Zusätzlich ist &#039;&#039;&#039;avr-gdb&#039;&#039;&#039; notwendig, welches wie unter &#039;&#039;&#039;Installation unter Ubuntu&#039;&#039;&#039; beschrieben, installiert werden kann.&lt;br /&gt;
Einen Link zu einer Anleitung für das Debuggen mit Eclipse unter Windows findet ihr unten bei den [http://www.mikrocontroller.net/articles/AVR_Eclipse#Links Links].&lt;br /&gt;
&lt;br /&gt;
=== simulavr ===&lt;br /&gt;
&amp;lt;pre&amp;gt;simulavr -g -p 1212 -d atmega16 -P simulavr-disp&amp;lt;/pre&amp;gt;&lt;br /&gt;
startet den Simulator.&lt;br /&gt;
&lt;br /&gt;
=== avarice ===&lt;br /&gt;
&amp;lt;pre&amp;gt;avarice -j /dev/ttyS0 -P atmega128 :1212&amp;lt;/pre&amp;gt;&lt;br /&gt;
startet einen Server, der auf Port 1212 lauscht und das OnDeviceDebugging übernimmt.&lt;br /&gt;
&lt;br /&gt;
=== Eclipseeinstellungen ===&lt;br /&gt;
Unter Eclipse muss ein neues Debug-Target erzeugt werden, was in den Projekteinstellungen unter &#039;&#039;Run/Debug-Settings&#039;&#039; funktioniert. Es muss &#039;&#039;C/C++ application&#039;&#039; ausgewählt werden und folgende Einstellungen müssen geändert werden: &lt;br /&gt;
* Debugger&lt;br /&gt;
** gdbserver auswählen&lt;br /&gt;
** GDB debugger: Pfad zu avr-gdb (/usr/local/avr/bin/avr-gdb)&lt;br /&gt;
** &#039;&#039;verbose console mode&#039;&#039; einschalten&lt;br /&gt;
* Connection&lt;br /&gt;
** TCP, localhost, port 1212 (siehe simulavr/avarice-Aufruf).&lt;br /&gt;
&lt;br /&gt;
Unter Debugger muss für die Verwendung des Simulators Command-Datei mit folgendem Inhalt angegeben und daher auch erstellt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
file link.elf&lt;br /&gt;
targ rem :1212&lt;br /&gt;
load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
link.elf ist die Datei, welche durch den Build erstellt wird. Dies muss daher angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Beim On Device Debugging muss keine Command-Datei angegeben werden.&lt;br /&gt;
&lt;br /&gt;
=== Auslesen von IO-Registern ===&lt;br /&gt;
Wenn &#039;&#039;verbose console mode&#039;&#039; eingeschaltet ist, kann in diesem Konsolenfenster direkt mit avr-gdb kommuniziert werden. Dadurch können unter anderem die Register ausgelesen werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;p/x *(char *)Adresse&amp;lt;/pre&amp;gt; &lt;br /&gt;
gibt den Wert der Adresse als char aus.&lt;br /&gt;
&amp;lt;pre&amp;gt;p/t *(char *)Adresse&amp;lt;/pre&amp;gt;&lt;br /&gt;
returniert den Binärwert.&lt;br /&gt;
&lt;br /&gt;
Die Adresse setzt sich aus einer Startadresse und einem Offset zusammen, wobei diese sich im entsprechenden io-Header der Architektur befindet. Beispielweise setzt sich die Adresse für das UCSR0B-Register eines Atmega128 aus der Startadresse 0x800020 und dem Offset 0x0A zusammen.&lt;br /&gt;
&lt;br /&gt;
Für oft verwendete Register empfiehlt es sich, diesen mittels &lt;br /&gt;
&amp;lt;pre&amp;gt;set $name=(char *)Adresse&amp;lt;/pre&amp;gt;&lt;br /&gt;
einen Namen zuzuweisen. Diese könnte man in einer Datei speichern und diese als command-Datei beim Debugger angeben, wodurch man sich diese händischen Eingaben spart und mittels &lt;br /&gt;
&amp;lt;pre&amp;gt;p/x *$name&amp;lt;/pre&amp;gt; bzw. &amp;lt;pre&amp;gt;display *$name&amp;lt;/pre&amp;gt;&lt;br /&gt;
zugegreifen kann.&lt;br /&gt;
&lt;br /&gt;
=== AVR Studio ===&lt;br /&gt;
&lt;br /&gt;
Hinweise zum Debuggen mit [[AVR Studio]] (Windows) in einem Eclipse-Projekt gibt Marcel K. in http://www.mikrocontroller.net/topic/152059#1428733&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
[http://www.torsten-horn.de/techdocs/java-eclipse.htm Erste Schritte mit Eclipse]&lt;br /&gt;
&lt;br /&gt;
[http://avr-eclipse.sourceforge.net/wiki/index.php/Debugging Anleitung zum Debuggen mit Eclipse unter Windows]&lt;br /&gt;
&lt;br /&gt;
[http://www.wiki.elektronik-projekt.de/mikrocontroller/avr/avr_tutorials 3 Tuts für Eclipse mit AVRs]&lt;br /&gt;
&lt;br /&gt;
[http://www.it-gecko.de/avr-eclipse-falsche-autovervollstaendigung-syntaxpruefung-korrigieren.html AVR-Eclipse falsche Autovervollständigung/ Syntaxprüfung korrigieren]&lt;br /&gt;
&lt;br /&gt;
= Weiteres =&lt;br /&gt;
Bei Problemen kann dieser [http://www.mikrocontroller.net/topic/79965#667525 Thread] verwendet werden, in den ich, wann immer es sich bei mir ausgeht, schauen werde.&lt;br /&gt;
&lt;br /&gt;
Jeder ist aufgerufen hier weiterzumachen, wenn er mehr weiss, oder es besser gestalten kann.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR ]]&lt;/div&gt;</summary>
		<author><name>Vogtinator</name></author>
	</entry>
</feed>