<?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=Greye</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=Greye"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Greye"/>
	<updated>2026-04-10T10:08:53Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_und_Linux&amp;diff=98663</id>
		<title>AVR und Linux</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_und_Linux&amp;diff=98663"/>
		<updated>2018-04-05T09:03:03Z</updated>

		<summary type="html">&lt;p&gt;Greye: /* Debian */ Link zu http://blog.coldtobi.de entfernt, da die Adresse zu https://sviech.de und Nextcloud weiterleitet.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Was ist zu beachten, wenn man mit einer Linux-Distribution AVRs programmieren möchte? Hier ist eine offene Liste von verschiedenen Tipps dazu...&lt;br /&gt;
&lt;br /&gt;
==Toolchain beschaffen==&lt;br /&gt;
&lt;br /&gt;
Eventuell sind die benötigten Pakete in der verwendeten Distribution enthalten. Einfach mal die Paketnamen und -beschreibungen nach &amp;quot;avr&amp;quot; durchsuchen.&lt;br /&gt;
&lt;br /&gt;
Diese fertigen Pakete sind aber nicht selten mit Vorsicht zu genießen, denn es gibt ein ganz grundsätzliches Problem. Im Prinzip kann man einen avr-gcc &amp;quot;bauen&amp;quot;, indem man sich die offiziellen GCC-Quellen besorgt und dann einfach für das Target avr übersetzt. Und in der Tat scheinen die in den Distributionspaketen enthaltenen Compiler nicht selten auf genau diesem Wege entstanden zu sein. Das Problem dabei ist, dass ein solcher avr-gcc niemals vollständig/aktuell ist, denn es gibt immer zusätzliche AVR spezifische Patches, die nicht in den offiziellen GCC-Quellen enthalten sind. Zum einen, weil der jeweilige Patch noch zu neu ist (die Übernahme in die offiziellen Quellen dauert seine Zeit), zum anderen weil er grundsätzlich nicht offiziell übernommen werden kann, da der Autor des Patches kein FSF-Assignment hat.&lt;br /&gt;
Ähnliches gilt auch für die weiteren Komponenten der Toolchain, z.B. binutils.&lt;br /&gt;
&lt;br /&gt;
Wer eine Distribution benutzt, die keine AVR-Pakete enthält, oder wer obigem Problem aus dem Weg gehen will, kann sich selber eine Toolchain mit den aktuellen Patches übersetzen. Ziemlich einfach geht das mit einem Skript von Bingo600, das man hier bekommen kann:&lt;br /&gt;
* http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=95328 (mit avr-libc 1.7.x)&lt;br /&gt;
* http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=42631 (mit avr-libc 1.6.x)&lt;br /&gt;
&lt;br /&gt;
Es gibt auch fertige Deb-Pakete, die auf der Basis dieses Skripts entstanden sind:&lt;br /&gt;
* http://www.wrightflyer.co.uk/avr-gcc/&lt;br /&gt;
&lt;br /&gt;
==Editor==&lt;br /&gt;
&lt;br /&gt;
Der Editor sollte das Bearbeiten vom Programm einfach machen. Evtl. nützlich sind Features, um z.&amp;amp;nbsp;B. per Knopfdruck zu kompilieren und das Programm auf den AVR zu übertragen. Ansonsten: Editoren sind Geschmackssache, d.h. ausprobieren. Hier eine Auswahl (alphabetisch):&lt;br /&gt;
&lt;br /&gt;
: [http://www.codeblocks.org/ Codeblocks] [gtk]&lt;br /&gt;
: [[AVR_Eclipse|Eclipse]] [http://www.eclipse.org/] [Java]&lt;br /&gt;
: [http://www.gnu.org/software/emacs/ Emacs] bzw. [http://www.xemacs.org/ XEmacs] [Textterminal oder X]&lt;br /&gt;
: [http://www.geany.org/ Geany] [gtk]&lt;br /&gt;
: [http://www.gnome.org/projects/gedit/ gedit] [GNOME]&lt;br /&gt;
: [http://kate-editor.org/ kate] [KDE]&lt;br /&gt;
: [http://www.kdevelop.org/ KDevelop] [KDE]&lt;br /&gt;
: [http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab Kontrollerlab] [KDE]&lt;br /&gt;
: [http://quanta.kdewebdev.org/ Quanta+] [KDE] (eigentlich Webentwicklungsumgebung)&lt;br /&gt;
: [http://www.scintilla.org/ SciTE]&lt;br /&gt;
: [http://www.sublimetext.com/ Sublime Text 2] (Windows, Linux und OS X)&lt;br /&gt;
: [http://www.vim.org/ Vim bzw. GVim] [Textterminal oder X]&lt;br /&gt;
&lt;br /&gt;
Es lassen sich aber Programme auch in &#039;fremden&#039; Desktopumgebungen ausführen, z.B KDevelop in GNOME.&lt;br /&gt;
&lt;br /&gt;
==C-Compiler: avr-gcc==&lt;br /&gt;
&lt;br /&gt;
Macht aus dem C-Code den vom AVR ausführbaren binären Programmcode.&lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [[AVR-GCC]]&lt;br /&gt;
* [[AVR-GCC-Tutorial]]&lt;br /&gt;
&lt;br /&gt;
==Laufzeitbibliothek: avr-libc==&lt;br /&gt;
&lt;br /&gt;
Enthält Makros und Hardwaredefinitionen wie Registernamen für (die meisten) AVRs. Man muss sich deswegen um die echten Adressen in der Prozessor-Logik nicht mehr selbst kümmern, sondern kann direkt die Namen und Werte aus dem Datenblatt benutzen.&lt;br /&gt;
&lt;br /&gt;
http://www.nongnu.org/avr-libc/user-manual/index.html&lt;br /&gt;
&lt;br /&gt;
==Makefile==&lt;br /&gt;
&lt;br /&gt;
Enthält Informationen zum Kompilieren. Das Programm make startet damit den angegeben Compiler. Im einfachsten Fall muss man also nur &#039;&#039;&#039;make all&#039;&#039;&#039; im entsprechenden Projektverzeichnis aufrufen, der Rest läuft automatisch. Die Datei heisst einfach nur Makefile.&lt;br /&gt;
&lt;br /&gt;
Hier ein Skript, mit dem man die Einstellungen zusammenklicken kann (benötigt aber auch wieder anderes, z.&amp;amp;nbsp;B. TCL/TK, ..): http://www.sax.de/~joerg/mfile/ Dessen Aufruf erfolgt dann z.&amp;amp;nbsp;B. mit &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ wish mfile.tcl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über ein Menü kann man dann die Einstellungen zusammenklicken. Das Editieren des Makefiles für Spezialanpassungen lässt sich aktivieren.&lt;br /&gt;
&lt;br /&gt;
Wer sie von Windows kennt und sucht: Die Definition F_CPU der Taktfrequenz ist in der aktuellen Linux-Version nicht vorgesehen. Macht nichts, siehe dazu http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Taktfrequenz&lt;br /&gt;
&lt;br /&gt;
==Programmierprogramm==&lt;br /&gt;
&lt;br /&gt;
Das Programmierprogramm schreibt mit entsprechender Hardware auf den Mikrocontroller bzw. liest ihn aus. AVR Programmierprogramme unter Linux sind z.&amp;amp;nbsp;B. [[AVRDUDE]] oder [[uisp]].&lt;br /&gt;
&lt;br /&gt;
Mit dem Makefile-Generator mfile kann man das Programmierprogramm und dessen Aufrufzeile in das Makefile eintragen lassen und später z.&amp;amp;nbsp;B. mit &#039;&#039;make program&#039;&#039; starten.&lt;br /&gt;
&lt;br /&gt;
Für eine interaktive Bedienung von AVRDUDE mit einer grafischen Benutzerschnittstelle (GUI) gibt es [http://avr8-burn-o-mat.aaabbb.de/ avr8-burn-o-mat].&lt;br /&gt;
&lt;br /&gt;
Für &#039;&#039;&#039;USB-Programmer&#039;&#039;&#039; ist die Einstellung der non-root Zugriffsrechte im Artikel [[AVRDUDE#Aufruf_unter_Linux_als_user_.28non-root.29|Aufruf unter Linux als User (non-root)]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
===Fuses, Lockbits===&lt;br /&gt;
&#039;&#039;(In Bearbeitung)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wer bislang Atmels AVR Studio unter Windows zum Programmieren der [[AVR_Fuses]] benutzt hat, kann das z.&amp;amp;nbsp;B. mit dem oben beschriebenen grafischen [[Burn-o-mat|AVR Burn-O-Mat]] oder eben mit AVRDUDE (über die Shell) machen. Wer die Dokumentation sucht, findet sie mit Sicherheit im [http://download.savannah.gnu.org/releases/avrdude/ gepackten Programmpaket]. &lt;br /&gt;
&lt;br /&gt;
*TODO: Ein aktuelles PDF&lt;br /&gt;
&lt;br /&gt;
Z.B. bekommt man als Resultat folgenden Aufrufes den Hexwert der lfuse eines Tiny13 über einen [http://www.mikrocontroller.net/articles/AVR_In_System_Programmer AVR-ISP] mit aktueller Firmware, der an einem USB-Seriell-Wandler angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Durch die Option -v ([http://en.wiktionary.org/wiki/verbose verbose]) wird aber noch viel mehr [http://www.mikrocontroller.net/forum/read-1-399733.html?#399834 angezeigt]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avrdude -p t13 -c avrispv2 -P /dev/ttyUSB0 -v -U lfuse:r:-:i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das &#039;-&#039; anstelle von FILENAME leitet die Ausgabe auf &amp;lt;stdout&amp;gt; (Bildschirm).&lt;br /&gt;
&lt;br /&gt;
Anstelle des &#039;i&#039; können verwendet werden:&lt;br /&gt;
* &#039;h&#039; - hexadezimal, z.B. 0xdf&lt;br /&gt;
* &#039;o&#039; - oktal, z.B. 0337&lt;br /&gt;
* &#039;b&#039; - binär, z.B. 0b11011111&lt;br /&gt;
&lt;br /&gt;
[Quelle: man avrdude, Beschreibung des Schalters &#039;-U&#039;]&lt;br /&gt;
&lt;br /&gt;
*TODO: Frontend?&lt;br /&gt;
&lt;br /&gt;
Eine Anleitung zum Umgang:&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-152502.html&lt;br /&gt;
&lt;br /&gt;
Eine 0 steht für eine gesetzte Fuse.&lt;br /&gt;
&lt;br /&gt;
Die Bedeutung der Bits findet sich im Datenblatt unter &amp;quot;Memory Programming -&amp;gt; Fuse Bytes&amp;quot; (tiny13).&lt;br /&gt;
&lt;br /&gt;
===Program/Burn Flash===&lt;br /&gt;
&#039;&#039;(In Bearbeitung)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Mikrocontroller wird wie beim Kompilieren mithilfe von make und der eingestellten Programmiersoftware mit dem Befehl &#039;&#039;make program&#039;&#039; geflasht&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Anwendung&lt;br /&gt;
&lt;br /&gt;
==Konfiguration, Probleme, Erfahrungen==&lt;br /&gt;
&lt;br /&gt;
===Debian===&lt;br /&gt;
==== Etch (Netinst) ====&lt;br /&gt;
* Installation: gcc-avr, libc-avr, avrdude aus Standardquellen&lt;br /&gt;
* Emacs21 als Editor&lt;br /&gt;
* Makefile&lt;br /&gt;
... läuft problemlos.&lt;br /&gt;
&lt;br /&gt;
===Gentoo===&lt;br /&gt;
Gentoo bietet mit dem Shellscript &amp;quot;crossdev&amp;quot; eine einfache automatisierte Möglichkeit die Toolchain zu erstellen. Genauere Versionen von binutils/gcc/libc können via parameter übergeben werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge crossdev&lt;br /&gt;
crossdev --target avr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Falls &#039;crossdev --target avr&#039; nicht fehlerfrei durchlaufen sollte mit &#039;crossdev -t avr --without-headers&#039; versuchen (2009-01-28).&lt;br /&gt;
&lt;br /&gt;
crossdev ist nich empfehlenswert, da anscheinend ein compiler erstellt wird ohne passende patches. Das kann zu problemen führen, muss aber nicht, z.B. kann der , damit erstellte, gcc keine 64bit werte verarbeiten.&lt;br /&gt;
&lt;br /&gt;
===Mandrake===&lt;br /&gt;
&lt;br /&gt;
* Toolchain-Build: http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=42631&lt;br /&gt;
* 2007: benötigt &amp;quot;texinfo&amp;quot; Package &lt;br /&gt;
&lt;br /&gt;
===openSUSE===&lt;br /&gt;
&lt;br /&gt;
* Halbwegs aktuelle RPMs für openSUSE gibt es unter http://download.opensuse.org/repositories/CrossToolchain:/avr/ . Entsprechend der verwendeten openSUSE-Version das jeweilige Verzeichnis als Repository zu yast hinzufuegen (Achtung: Pfade fuer gcc-Binaries sind unterschiedlich zu den von openSUSE normalerweise mitgebrachten Paketen!).&lt;br /&gt;
&lt;br /&gt;
===Ubuntu 6.06===&lt;br /&gt;
&lt;br /&gt;
* Pakete veraltet; ist bereits als bug gemeldet&lt;br /&gt;
* Toolchain selbst kompilieren:&lt;br /&gt;
** default system path steht in /etc/environment&lt;br /&gt;
** Toolchain-Build: http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=42631&lt;br /&gt;
&lt;br /&gt;
===Ubuntu 7.04===&lt;br /&gt;
&lt;br /&gt;
* Toolchain-Build: http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=42631&lt;br /&gt;
&lt;br /&gt;
===Ubuntu 8.04===&lt;br /&gt;
* einfach eine universe-Paketquelle von Ubuntu 8.10 (Intrepid Ibex) hinzufügen. Dort gibt es dann aktuelle AVR-Pakete (gcc 4.3, libc 1.6.2 usw.). Anleitung hier: http://packages.ubuntu.com/de/intrepid/i386/gcc-avr/download&lt;br /&gt;
&lt;br /&gt;
===Ubuntu neuer===&lt;br /&gt;
* Die Pakete sind im Paketmanagement System schon enthalten. Ein &amp;quot;sudo apt-get install gcc-avr avr-libc&amp;quot; installiert sie.&lt;br /&gt;
&lt;br /&gt;
===rCOS LiveCD===&lt;br /&gt;
&lt;br /&gt;
Die [http://wiki.rcos.eu/index.php/RCOS-LiveCD rCOS LiveCD] (Download: http://www.rcos.eu/tools/livecd/index.html) ist eine angenehm schlanke Debian-LiveCD mit etlichen installierten Toolchains ([[AVR]], [[ARM]], [[Cortex-M3]], ...) extra für die µC Arbeit. Auf der LiveCD befindet sich auch ein [[AVRDUDE]] v5.5.&lt;br /&gt;
&lt;br /&gt;
===Arch Linux===&lt;br /&gt;
installation mittels: pacman -S avr-binutils avr-gcc avr-gdb avr-libc avrdude&lt;br /&gt;
&lt;br /&gt;
===Fedora===&lt;br /&gt;
&lt;br /&gt;
Unter Fedora 20 reicht es die Pakete avr-gcc und avr-libc (ohne dieses Paket gibt es kein avr/io.h, der compiler funktioniert aber auch ohne es) zu installieren. Auch avrdude kann per gleichnamigem Paket installiert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install avr-gcc avr-libc avrdude&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]]&lt;br /&gt;
[[Kategorie:Linux]]&lt;br /&gt;
[[Kategorie:Entwicklungstools]]&lt;/div&gt;</summary>
		<author><name>Greye</name></author>
	</entry>
</feed>