AVR Entwicklungsumgebungen

Um AVR Mikrocontroller zu programmieren, brauchst du im Prinzip nur drei Dinge:

Toolchains

XC8

Als Toolchain bietet Microchip das MPLAB XC8 Compiler Paket an, welches den eigentlich freien GNU avr-gcc in Version 5.4.0 von 2015 enthält. Darin hat Microchip aber einige Optimierungen entfernt, um sie als "pro" Version gegen extra Geld zu verkaufen: -O2, -O3, -Os, -flto, -fwhole-program, -fuse-linker-plugin. Außerdem fehlt bei der XC8 Toolchain das "make" Kommando. Mir fällt kein plausibles Argument ein, mit dem man diese Toolchain empfehlen könnte. Benutze lieber die originale freie Toolchain.

für Linux

Alle gängigen Linux Distributionen stellen die Toolchain über ihren Paketmanager bereit. Bei Debian und Ubuntu heißen die Pakete: make, avr-libc, gcc-avr und avrdude.

Wer unbedingt die neueste GNU Toolchain benutzen will, findet sie auf der Github Seite von Zak, wobei diese nicht immer eine gute Wahl ist. Die älteren Versionen erzeugen oft kompakteren Code und sind gründlicher getestet.

Zum manuellen Testen von serieller Kommunikation empfehle ich dazu das Hammer Terminal (hterm) oder Cutecom.

Für Windows

Die GNU Toolchain wurde von Linux nach Windows portiert. Du hast die Wahl zwischen:

Falls Avrdude in deiner Toolchain fehlt oder zu alt ist, verwende diesen download. Die Dateien in dem ZIP Archiv kannst du einfach in das bin Verzeichnis deiner Toolchain kopieren.

Zum manuellen Testen von serieller Kommunikation empfehle ich das Hammer Terminal (hterm) oder Putty.

Integrierte Entwicklungsumgebungen

Für mittlere bis große Projekte eignen sich integrierte Entwicklungsumgebungen (kurz IDE) besser, als simple Text-Editoren. Sie machen während der Eingabe Vorschläge (was Tipparbeit erspart) und markieren Fehler schon vor dem Compilieren. Wenn man mit gedrückter Strg Taste auf einen Namen klickt, springt der Editor automatisch zu der relevanten Datei. Die meisten Entwicklungsumgebungen unterstützen Refactoring, zum Beispiel das Dateiübergreifende Ändern von Namen. Auch das Generieren von trivialem Code gehört bei manchen Entwicklungsumgebungen zum Funktionsumfang.

Viele Entwicklungsumgebungen stellen eine dialog-basierte Projekt-Konfiguration bereit, wo man einstellen kann, mit welchen Parametern der Compiler aufgerufen werden soll. Diese werden oft automatisch sinnvoll konfiguriert so dass man sicht direkt auf den C/C++ Quelltext konzentrieren kann. Derartige Projekte brauchen kein Makefile, allerdings hängen sie von dieser einen IDE ab, mit der sie erstellt wurden. Ich bevorzuge Makefiles (Beispiel) oder selbst geschriebene Build Scripte.

Wenn du einen In-Circuit Debugger verwenden möchtest, musst du je nach Gerät die MPLAB X IDE oder das ältere Microchip Studio benutzen, sowie einen Programmieradapter von Microchip. Es gibt keine Open-Source Lösungen zum Debuggen von AVR, weil das dazu nötige Kommunikationsprotokoll geheim ist.

Microchip MPLAB X

Die MPLAB X Entwicklungsumgebung ist schon länger für die Programmierung von Mikrocontrollern von Microchip bekannt. Microchip hat inzwischen die AVR Mikrocontroller von Atmel gekauft, und seine IDE entsprechend erweitert. Die MPLAB X IDE enthält einen Simulator für viele AVR Modelle, so dass man deren Programmierung ohne Mikrocontroller ein bisschen üben kann.

MPLAB X basiert auf Netbeans und ist für Windows 10, Linux und Mac OS verfügbar. Du brauchst einen PC mit mindestens 8 GB RAM und 6 GB freiem Speicherplatz. Festplatten sind für diese IDE zu langsam. Die Toolchain muss separat installiert werden. Die MPLAB X IDE läuft deutlich flotter, als das Atmel/Microchip Studio.

Ich habe MPLAB X bisher nur kurz angetestet. Offenbar ist es nicht vorgesehen, bestehende Projekte mit Makefile zu importieren. Die IDE generiert immer ihr eigenes Makefile, das zwar an der Kommandozeile nutzbar ist, aber MPLAB X muss dennoch installiert sein. Abgesehen davon konnte ich meine bestehenden Quelltexte problemlos in ein leeres Projekt hinein kopieren und compilieren.

Die Anzeige der emulierten Register vom Simulator wurde im Menü "Window / Debugging / I/O View" versteckt.

Wer ältere Entwicklungsumgebungen von Atmel gewöhnt ist, wird womöglich die Unterstützung seines alten Programmieradapters vermissen. Das ist aber nicht Schlimm, weil die neuen Adapter von Microchip preisgünstig sind.

Arduino IDE

Die Arduino IDE richtet sich primär an Anfänger und Leute, die schnelle Ergebnisse wollen. Arduino nutzt die Programmiersprache C++. Das Arduino Framework vereinheitlicht die Programmierung unterschiedlicher Mikrocontroller-Boards, so weit es geht. Auf diese Weise kann man nicht alle Funktionen der Mikrocontroller nutzen, allerdings hindert Arduino niemanden daran, den Mikrocontroller am Framework vorbei zu programmieren.

Das folgende Programm (auch Sketch genannt) lässt eine LED blinken. Es funktioniert auf jedem Arduino kompatiblen Board:

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.println("Hello World!");
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

Arduino generiert die main() Funktion automatisch und fügt die Zeile #include <Arduino.h> automatisch ein. Diese inkludiert viele weitere häufig verwendete Bibliotheken, so daß der obige Quelltext wirklich vollständig ist.

Obwohl alle Arduino Funktionen scheinbar leicht verständlich dokumentiert sind, solltest du dennoch immer die Dokumente der Chip-Hersteller lesen, denn in der Arduino Dokumentation fehlen oft wichtige Details. Kläre vor der Verwendung fremder Bibliotheken, ob sie zu deiner Arduino Version und deinem Mikrocontroller kompatibel sind. Das ist nicht immer der Fall.

Die Arduino IDE Version 1.8 enthält Unterstützung für einige Boards mit AVR Mikrocontroller. Für alle weiteren Boards muss man einen sogenannten "Cores" über den Boardmanager der IDE hinzufügen. Ab Version 2.0 wird auch der AVR Core nur bei Bedarf installiert. Die oben genannte Toolchain ist im Core Paketfür AVR enthalten, man muss sie nicht separat installieren.

Die Arduino IDE Version 1.8 kann man auf einen mobilen Datenträger auspacken und dann ohne Installation auf anderen Computern benutzen. Dazu muss man einfach nur einen Ordner mit Name "portable" anlegen (dort wo die arduino.exe liegt). Mit der Arduino IDE 2.x geht das nicht mehr, da sie zahlreiche Dateien in das Home-Verzeichnis des Benutzers nach-installiert.

Microchip Studio

Das Microchip Studio (ehemals Atmel Studio) erfordert einen Computer mit Windows 7 (oder neuer) und 6 GB Speicherplatz. Ich empfehle eine 4-Kern CPU mit mindestens 8 GB RAM. Festplatten sind für diese IDE zu langsam. Das Microchip Studio basiert auf Microsoft Visual Studio. Die IDE enthält einen Simulator für viele AVR Modelle, so dass man deren Programmierung auch ohne Mikrocontroller ein bisschen üben kann.

Seit der Übernahme durch Microchip enthält das Programm nicht mehr die freie GNU Toolchain, sondern die beschränkte XC8 Toolchain. Man kann die GNU Toolchain jedoch separat installieren und mit der IDE benutzen. Die optionale Komponente "Advanced Software Framework" wird normalerweise nicht benötigt, es sei denn man möchte die fertigen Programmbeispiele oder Libraries von Atmel verwenden.

Beim Microchip Studio ist es nicht vorgesehen, bestehende Projekte mit Makefile zu übernehmen. Du kannst aber ein neues Projekt anlegen und deine Quelltexte dann hinein kopieren. Im Solution Explorer (rechts oben) musst du alle Quelltext-Dateien hinzufügen, damit sie compiliert werden.

Wenn dein Projekt ein Makefile hat, klicke mit der rechten Maustaste auf den Projektnamen (die Zeile mit dem orangenem Symbol) und dann auf Properties. Aktiviere die Checkbox "Use External Makefile" und gebe darunter den Pfad zum Makefile ein.

Der Installer richtet im Startmenü den "Microchip Studio Command Prompt" ein, das ist eine cmd Shell, wo alle nötigen Umgebungsvariablen richtig gesetzt sind. In dieser Shell kann man Makefile-basierte Projekte mit dem make Befehl compilieren.

Das Microchip Studio wird nicht mehr weiter entwickelt, allerdings pflegt der Hersteller noch seine "Device Packs", um neue Mikrocontroller zu unterstützen.

AVR Studio

Das alte AVR Studio 4 zeichnet sich durch eine schlichte Anfänger-freundliche Bedienoberfläche mit geringer Codegröße aus. Selbst auf uralten Computern läuft es flott. Es enthält einen Assembler und Simulatoren für viele AVR Modelle, so dass man deren Programmierung auch ohne Mikrocontroller ein bisschen üben kann.

AVR Studio 4 läuft zuverlässig unter Windows XP und Windows 7 mit 1 GB RAM. Neuere Windows Versionen sind problematisch. Das AVR Studio läuft gut in einer virtuellen Maschine mit VirtualBox.

Für die Programmierung in C oder C++ muss zusätzlich WinAVR 2010 installiert werden. Alternativ eignet sich die neuere Prebuilt Windows Toolchain 5.3.0, allerdings funktioniert damit der Debugger nicht zuverlässig.

In den Projekteinstellungen unter "Custom Options" musst du den Pfad zu avr-gcc.exe und make.exe angeben:

Wenn dein Projekt ein Makefile hat, stelle das in diesem Dialog weiter oben im Abschnitt "General" ein.

Im AVR Studio ist ein Programm zum Bedienen einiger Programmieradapter eingebettet. Der dazu mitgelieferte (Jungo) USB Treiber lässt sich ab Windows 8 nur mit deaktivierter "Treibersignatur" installieren. Folge dazu dieser Anleitung.

Das Atmel Studio wird schon lange nicht mehr gepflegt. Ich bedanke mich bei Atmel für die Genehmigung, eine Kopie davon hier anbieten zu dürfen.

Visual Studio Code

Visual Studio Code (vscode) ist eine kostenlose Entwicklungsumgebung von Microsoft. In vielen Linux Distributionen ist sie als optionales Paket enthalten.

Zum Compilieren rufst du "make" im Terminalfenster auf, bzw. das Build-Script des Projektes.

Qt Creator

Qt Creator ist eine kostenlose IDE für C/C++ Projekte mit speziellen Features für das Qt Framework. Qt Creator hat von allen hier genannten IDEs die beste Quelltext-Analyse, was das Erkennen von potentiellen Fehlern betrifft. Qt Creator gibt es für Linux, Windows und Mac OS. Die IDE ist in C++ geschrieben, und läuft daher auf jedem Computer flott.

Du kannst dass bestehende Projekt über das Menü "Datei/Neu/Projekt importieren/Import eines existierenden Projekts" importieren. In der Datei "Projektname.files" kannst du angeben, welche Dateien du in Qt Creator bearbeiten willst.

In der Datei "Projektname.includes" gibst du alle Verzeichnisse an, wo die Header Dateien der C-Bibliotheken gesucht werden sollen. Zum Beispiel:

/usr/lib/avr/include

Definiere in der Datei "Projektname.config" ein Makro mit dem Typ des Mikrocontrollers. Die richtige Schreibweise findest du in der Datei avr/io.h. Zum Beispiel:

#define __AVR_ATtiny2313__

Zum Compilieren rufst du "make" im Terminalfenster auf.

NetBeans

NetBeans war primär für Java Anwendungen gedacht, hat aber auch einen guten C/C++ Editor als Plugin. Du musst vorher eine Java Runtime installieren. Im Menü Tools/Plugins kannst du das C/C++ Plugins nachinstallieren. Konfiguriere es so:

Dieses Bildschirmfoto zeigt die richtigen Einstellungen für Linux:

Anschließend kannst du das Mikrocontroller-Projekt über das Datei Menü von NetBeans öffnen:

Damit NetBeans die SFR Register (zum Beispiel PORTB) erkennt,

Ich habe diese Anleitung gefunden, wo erklärt wird, wie man den Editor von NetBeans benutzt.

Zum Compilieren rufst du "make" im Terminalfenster auf.

Eclipse

Eclipse war ebenfalls ursprünglich eine Entwicklungsumgebung für Java, unterstützt nun jedoch viele andere Sprachen. Eclipse fällt durch extrem viele Einstellmöglichkeiten und Plugins auf. Die Einarbeitungszeit ist deutlich länger, als bei den anderen Alternativen. Du musst vorher eine Java Runtime installieren.

Downloade die Eclipse IDE für C/C++ Entwickler oder installiere das C/C++ Plugin in eine bereits vorhandene Eclipse IDE. Importiere das Projekt über das Menü File/New/Makefile Projekt With Existing Code.

Klicke dann mit der Rechten Maustaste auf den Namen des soeben importierten Projektes, und dann auf Properties.

Zum Compilieren rufst du "make" im Terminalfenster auf.

Startseite