Dienstag, 15. Mai 2012

Der Bootloader und die Schnittstelle zum PC

Was ist denn ein Bootloader? Wer die Arduino-Plattform kennt, ist vermutlich schon ein paar mal über diesen Begriff gestolpert, da dieser ein wesentlicher Bestandteil der Programmierumgebung ist.
Im Grunde ist dieser Bootloader ein kleines, schlankes Programm auf dem Mikrocontroller (im folgenden auch µC genannt). Dieses sorgt dafür, dass wir ohne zusätzliche Hardware (zusätzlich zum Arduino-Board) unsere Sketche auf den µC brennen können. Schön, mit dieser Formulierung muss man ebenso vorsichtig sein, uneingeschränkt gilt sie für Arduino-Boards wie das Uno, das Duemilanove und auch den Mega 2560. Sonderfälle wie das Arduino Ethernet und das Arduino Mini schließe ich vorerst aus.

Im Unterschied zu anderen Programmiermethoden sorgt der Bootloader nun dafür, dass nach einem Reset bzw. nach Anlegen der Spannung am Board wenige Sekunden nach einer Programmaktualisierung "gelauscht" wird. Dies geschieht über die serielle Schnittstelle, die hardwareseitig von allen in Arduinio-Boards verwendeten Mikrocontrollern enthalten ist.
Wie diese jedoch von außen zu erreichen ist, steht auf einem anderen Blatt. Das etwas veraltete Duemilanove nutzte hierfür noch einen speziellen Schnittstellenchip der Firma FTDI, der verwendete FT232 beherrschte die Umsetzung auf USB, noch ältere Boards brachten nur eine Pegelwandlung der TTL-Pegel des µC mittels eines Max232 mit - eine serielle Schnittstelle am Programmierrechner war somit Pflicht.
Neuere Modelle wie das Uno-Board, welches mittlerweile in Revision 3 vorliegt, nutzt einen zweiten Mikrocontroller, der ausschließlich mit dieser Aufgabe betraut ist.

Recht aktuell ist das zuvor angesprochene Arduino Ethernet. Neben der Möglichkeit, eine Mikro-SD-Karte auf dem Board zu nutzen, sind auch sämtliche notwendigen Teile zur Einbindung in eine Netzwerkstruktur auf dem Board vorhanden. Diese erweiterte Funktionalität kostet auf dem Board aber auch Platinenfläche, auf einen Schnittstellenchip zu USB und auf eine entsprechende USB-Buchse musste verzichtet werden. Damit stellt sich die Frage, wie dieses Ding nun programmiert werden kann. Die Antwort ist recht einfach: Über die serielle Schnittstelle! Wie zuvor angesprochen, gibt es sie ja hardwareseitig als UART des Mikrocontrollers, die entsprechenden Pins sind als zusätzliche sechspolige Buchsenleiste herausgeführt. Hier kann man eine Schnittstellenschaltung anschließen, die dann die selbe Funktionalität bietet wie bspw. der FT232 des Duemilanove.

http://arduino.cc/en/Main/ArduinoBoardEthernet

Aber auch aus dem immer größer werdenden Arduino-Sortiment gibt es diese Programmierschaltung:

http://arduino.cc/en/Main/USBSerial

Nun lässt sich natürlich darüber streiten, ob das noch im Interesse der Arduino-Anwender ist. Erklärtes Ziel war es schließlich, die Mikrocontroller ohne weitere Hardware programmieren zu können.
Wurde diese Idee hinterrücks übergangen? Man kann da durchaus geteilter Meinung sein. Kritiker werden sicher anführen, dass zusätzlich zum Board weitere Anschaffungskosten anfallen, durch Verpolung neue Fehlerquellen entstehen könnten.
Ökölogisch macht das aber durchaus Sinn, sagen Befürwoter dieser Auslagerung: Was zählt ist nicht nur die Programmierung, sondern die Endanwendung. Eine Mikrocontrollerschaltung mit Netzwerkverbindung brauch in den seltensten Fällen eine Anbindung über eine zusätzliche Schnittstelle. Warum also nicht konsequent darauf verzichten, die Programmierschaltung kann man ja auch wieder für andere Projekte verwenden.

Keine Kommentare:

Kommentar veröffentlichen