Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.
Anmerkung: Diese Seite dient als Einstieg zur Mikrocontrollerprogrammierung. Es fehlen noch weitere Artikel zu anderen Mikrocontrollern
Mikrocontroller (µC) sind Halbleiterchips, bei denen Prozessor und Peripherie in einem Chip integriert sind. Oft sind auch der Arbeits- und Programmspeicher teilweise oder komplett in dem gleichen Chip integriert. Mikrocontroller befinden sich in vielen technischen Geräten (z.B. MP3-Player, Router, Mobiltelefone), die heute im Alltag weit verbreitet sind und Elektronikbastler verwenden sie bei ihren Hobbyprojekten.
Für Linux existieren viele Werkzeuge für die Entwicklung von Mikrocontroller-Software, wie Cross-Compiler für verschiedene Prozessorarchitekturen und Programme für das Übertragen des Programmcodes auf den jeweiligen Mikrocontroller. Mikrocontroller werden meistens in Assembler oder C programmiert. Andere Programmiersprachen wie Ada, BASIC, C++ oder Pascal kommen jedoch auch zum Einsatz. Es gibt für einige Chips sogar Implementierungen von Python- oder Java-VMs.
Die Programmentwicklung für Mikrocontroller, d.h. das Erstellen und Compilieren des Quellcodes, geschieht gewöhnlich auf dem PC. Zum Testen muss das Programm dann auf den Mikrocontroller übertragen werden. Ausnahme sind Prozessorarchitekturen, für die ein Software-Emulator zur Verfügung steht. In diesem Fall ist es auch möglich, ein Programm direkt auf dem PC zu testen. Oft ist ein Programmtest in einem Software-Emulator jedoch nicht ausreichend, denn Mikrocontroller werden in der Regel verwendet, um externe Geräte (LED-Anzeigen, Motoren, ...) anzusteuern und man möchte bei einem Test natürlich auch überprüfen, ob man diese Geräte korrekt ansteuert.
Um in die µC Welt einzusteigen benötigt man nicht nur Programmierkenntnisse. Es ist ratsam sich anfangs so genannte Evaluationsboards zu kaufen, welche einem fertig verschaltete µC's bieten. Dabei hat der User die qual der Wahl, jedoch langen für den Anfang preiswerte Boards vollkommen aus. Hier seien mal einige genannt:
ASURO
Pollin Evaluationsboard + AddOn Board
Der Vorteil bei dem Pollin AddOn Board ist, dass es relativ frei verdrahtbar ist. Es sind lediglich die Pins der Bauteile nach außen geführt, so dass der User die Schaltung selbst bestimmen kann ohne das Vorkenntnisse im Bereich Elektrotechnik von Nöten sind.
Ein Cross-Compiler erzeugt Maschinencode für ein System, dessen Prozessorarchitektur anders ist und/oder bei dem ein anderes Betriebssystem installiert ist, als bei dem System, auf dem der Cross-Compiler ausgeführt wird. Für Linux existieren Cross-Compiler für verschiedene Prozessorarchitekturen:
Programme für die In-System-Programmierung (ISP) stehen für die folgenden Mikrocontroller-Familien zur Verfügung:
AVR
Zum Programmieren eins Atmel AVR Chips benötigt man einen beliebigen Editor und den entsprechenden Compiler samt Bibliotheken welches dann den C-Code übersetzt. Im Falle des AVR benötigt man folgende Pakete:
avr-gcc
avr-libc
Beim compilieren muss der Chip Typ angegeben werden, dies wird aber wie bei jedem anderen Programm mittels Optionen angefügt. Es ist ratsam sich eine Makefile anzulegen, da die Befehle nicht gerade kurz sind.
Hier ein Beispiel wie eine Makefile für den Atmega32 aussehen kann:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # PROG = <name>, von <name>.c CC = /usr/bin/avr-gcc CFLAGS = -g -mmcu=atmega32 -Wall -Os -mcall-prologues $(PROG): $(PROG).c $(CC) $(CFLAGS) -Os -c $(PROG).c $(CC) $(CFLAGS) -o $(PROG).out -Wl,-Map,$(PROG).map $(PROG).o avr-objcopy -R .eeprom -O ihex $(PROG).out $(PROG).hex clean: rm -f $(PROG).map $(PROG).o $(PROG).out |
Als Beispiel würde das Programm test.c mittels
make PROG=test
compiliert und mit Hilfe
make clean PROG=test
würden überschüssige Dateien gelöscht werden.
Nachdem nun ein gültiges Dateiformat vorliegt welches der µC versteht. Gilt es nun diesen zu übertragen. Dies kann mittels:
RS232
IR
USB
erfolgen.
Im Falle der Schnittstelle RS232 kann man das Programm
PonyProg
nutzen. Dabei ist aber darauf zu achten, dass im Bereich Setup der entsprechende Com Port eingestellt wird (ACHTUNG: PonyProg unterstützt kein USB). Es empfiehlt sich außerdem, sofern man weiß welcher Chip einem vorliegt diesen manuell dem Programm zu sagen. Nachdem nun der Chip ordnungsgemäß an den PC angeschlossen ist. Kann das Programm welches nach der Makefile in der Form <name>.hex vorliegt mit Hilfe von PonyProg auf den µC geschrieben werden.
Es ist nicht empfehlenswert USB - RS232 Konverter zu gebrauchen. Der µC lässt sich zwar auslesen jedoch nicht beschreiben.