Editing C++ AVR

From Chaosdorf Wiki
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 12: Line 12:
= Programmieren von AVR mit C/C++ =
= Programmieren von AVR mit C/C++ =


== Kurzanleitung für Entwicklungsumgebung unter Debian GNU/Linux ==
== Kurzanleitung für Entwicklungsumgebung unter Linux ==
1. Benötigte Softwarepakete
1.1 gcc-avr: Dies ist der (portable) GNU C Compiler, der mehrere Sprachen unterstützt. Dieses Paket bietet Unterstützung für C.


=== Benötigte Hardware ===
1.2 avr-libc: Standardbibliothek, welche zur Entwicklung von C-Programmen für den Atmel AVR Microcontroller benutzt wird. Dieses Paket enthält die statischen Bibliotheken sowie die nötigen Headerdateien.
# Mikrocontroller: -- to be done --
# Programmieradapter: -- to be done --


=== Benötigte Softwarepakete ===
1.3 avrdude und avrdude-doc: AVRDUDE ist ein Open-Source-Werkzeug für Download, Upload und Manipulation von ROM- und EEPROM-Inhalt der AVR-Mikrocontroller mit Hilfe der ISP-Technik. ISP steht für In-System-Programmierung. Dieses Programmiertool wird durch das makefile
# '''Editor''': Hier kann jede(r) seinen/ihren Lieblingseditor verwenden. Wichtig ist nur, daß damit der Text des Quellcodes geschrieben und gespeichert werden kann. Es kann aber auch eine mehr oder weniger ausgewachsene Entwicklungsumgebung (IDE) verwendet werden, die z.T. noch Debugger u.v.m. enthält. Für erste Gehversuche ist das aber m.E. overkill und führt eher zu Verwirrung, da man sich zunächst mit der Bedienung der IDE auseinander setzen muß. Einen Kompromiß stellt evtl. ein Editor dar, der nützliche Zusatzfeatures wie z.B. Syntaxhighlighting enthält, wie z.B. Geany [http://packages.debian.org/squeeze/geany].
# '''gcc-avr''': Dies ist der (portable) GNU C Compiler, der mehrere Sprachen unterstützt. Dieses Paket bietet Unterstützung für C.
# '''avr-libc''': Standardbibliothek, welche zur Entwicklung von C-Programmen für den Atmel AVR Microcontroller benutzt wird. Dieses Paket enthält die statischen Bibliotheken sowie die nötigen Headerdateien.
# '''make''': GNU Make ist ein Dienstprogramm, das die Erzeugung von ausführbaren und anderen Dateien aus Quelltexten steuert. Es bestimmt selbstständig, welche Teile eines großen Programms (erneut) erstellt werden müssen und führt die dafür erforderlichen Befehle aus. Make ist nicht auf ausführbare Programme beschränkt. Es lässt sich für jede Aufgabenstellung, bei der eine Reihe von Dateien aus anderen Dateien aufgrund von Abhängigkeiten und Verarbeitungsregeln erzeugt werden müssen, gebrauchen. In der Tat ist es ein Allzweckwerkzeug für die Auflösung von Abhängigkeiten. Das Programm benötigt für einen ''makefile'', der auch so heißen muß. Diese Datei muß im Suchpfad vorhanden sein, am einfachsten legt man sie im Arbeitsverzeichnis des aktuellen AVR-Projekts an. Es gibt fertige makefiles, die als Vorlage dienen können und nur wenig angepasst zu werden brauchen.
# '''avrdude''' und '''avrdude-doc''': AVRDUDE ist ein Open-Source-Werkzeug für Download, Upload und Manipulation von ROM- und EEPROM-Inhalt der AVR-Mikrocontroller mit Hilfe der ISP-Technik. ISP steht für In-System-Programmierung. Dieses Programmiertool wird durch ''make'' aufgerufen und überträgt den kompilierten Maschinencode in den Mikrocontroller. Dazu muß der natürlich über einen Programmieradapter mit dem Rechner verbunden sein.


Einige andere Pakete könnten später noch nützlich sein, werden aber am Anfang nicht unbedingt benötigt:
Alternativ evtl. avrp: Avrp ist ein FLASH/EEPROM-Programmierer für Atmels 8-bit-Mikrocontroller-Familie AVR. Er kann außerdem die Mikrocontroller der Atmel-AT89-Reihe programmieren. Er unterstützt mindestens vier verschiedene Programmiergeräte einschließlich Atmels eigenem AVR-Entwicklungs-Board und In-Circuit-Programmierung.
* '''avrp''': Avrp ist ein FLASH/EEPROM-Programmierer für Atmels 8-bit-Mikrocontroller-Familie AVR. Er kann außerdem die Mikrocontroller der Atmel-AT89-Reihe programmieren. Er unterstützt mindestens vier verschiedene Programmiergeräte einschließlich Atmels eigenem AVR-Entwicklungs-Board und In-Circuit-Programmierung.
 
* '''binutils-avr''': The programs in this package are used to manipulate binary and object files that may have been created for Atmel's AVR architecture. This package is primarily for AVR developers and cross-compilers and is not needed by normal users or developers.
1.4 make: GNU Make ist ein Dienstprogramm, das die Erzeugung von ausführbaren und anderen Dateien aus Quelltexten steuert. Es bestimmt selbstständig, welche Teile eines großen Programms (erneut) erstellt werden müssen und führt die dafür erforderlichen Befehle aus. Make ist nicht auf ausführbare Programme beschränkt. Es lässt sich für jede Aufgabenstellung, bei der eine Reihe von Dateien aus anderen Dateien aufgrund von Abhängigkeiten und Verarbeitungsregeln erzeugt werden müssen, gebrauchen. In der Tat ist es ein Allzweckwerkzeug für die Auflösung von Abhängigkeiten.
* '''gdb-avr: source-level debugger
 
* '''simulavr''': Simulator
1.5 binutils-avr: The programs in this package are used to manipulate binary and object files that may have been created for Atmel's AVR architecture. This package is primarily for AVR developers and cross-compilers and is not needed by normal users or developers.
* '''avr-evtd''': ARV-Watchdog-Daemon für Linkstation/Kurobox  
 
1.6. Editor: Hier kann jede(r) seinen/ihren Lieblingseditor verwenden. Wichtig ist nur, daß damit der Text des Quellcodes geschrieben und gespeichert werden kann.
 
Einige andere Pakete könnten später noch nützlich sein, werden aber am Anfang nicht unbedingt benötigt, z.B. "avr-evtd"
(ARV-Watchdog-Daemon für Linkstation/Kurobox), "simulavr" (Simulator), "gdb-avr" (source-level debugger)
   
   
=== Progamm erstellen ===
2. Mit dem Editor ein C-Programm schreiben, als Test kann flash1.c dienen, daß eine LED zum Blinken bringt. Die Datei muß in .c enden
Mit dem Editor ein C-Programm schreiben, als Test kann das ''flash1.c'' im Listing weiter unten dienen, das eine LED zum Blinken bringt. Die Datei muß die Endung .c haben.


Beispielcode flash1.c (freundlicherweise von penma zur Verfügung gestellt)
Beispielcode flash1.c (dankenswerterweise von penma zur Verfügung gestellt)
<pre>
<pre>
#include <avr/io.h>
#include <avr/io.h>
Line 60: Line 58:
</pre>
</pre>


=== Compilieren ===
2. Compilieren
Das erfolgt durch Aufruf des Programms ''make''. Es benötigt den makefile, der im Pfad zu finden sein muß, am besten im Arbeitsverzeichnis.
<pre>
<pre>
"make TARGET=flash1"
"make TARGET=flash1"
Line 67: Line 64:
</pre>
</pre>


=== Übertragen des Hexfiles in den Controller ===
3. Übertragen des Hexfiles in den Controller
Dies geschieht auch durch Aufruf des makefile. Damit wird avrdude aufgerufen, der dann die Hardware des Programmieradapter ansteuert und darüber die Daten in den AVR überträgt.
<pre>
<pre>
   make program TARGET=flash1
   make program TARGET=flash1
</pre>
</pre>
Please note that all contributions to Chaosdorf Wiki are considered to be released under the Attribution 3.0 Unported (see Chaosdorf Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)