Bootloader

Der Bootloader ist ein kleines Stück Software, das bereits auf dem Microcontroller Chip des Arduinos geladen ist. Es erlaubt das Hochladen von Sketches auf den Arduino ohne die Verwendung von zusätzlicher, externer Hardware.

Wenn Du den Reset Knopf von Deinem Arduino Board drückst, so wird der Bootloader (sofern vorhanden) geladen. Der Bootloader sendet ein Blinksignal an Pin 13 als Bestätigung seiner Funktionstüchtigkeit. Du kannst eine LED and Pin 13 anschließen, um es zu überprüfen. Der Bootloader ist dann empfangsbereit für Signale oder Daten vom Computer. Normalerweise ist dies ein Sketch, das der Bootloader dann in den Flashspeicher des ATmega168 oder ATmega8 Chips schreibt. Danach wird das neu upgedatete Programm gestartet. Wenn der Computer kein Sketch gesendet hat, so wird das zuletzt upgedatete Programm gestartet. Wenn der Chip noch jungfräulich ist, ist der Bootloader das einzige Programm auf dem Chip und startet sich selber.

Warum verwenden wir einen Bootloader?

Die Verwendung eines Booloaders vermeidet externe, zusätzliche Hardware Programmer. Den Bootloader allerdings auf den Chip zu schreiben erfordert solche externen Programmer.

Warum startet mein Sketch nicht?

Es ist möglich den Arduino Bootloader zu 'verwirren', so dass er niemals Deinen Sketch startet. Das kann vor allem der Fall sein, wenn du serielle Daten zu dem Board sendest und es gerade resetet wurde. Das ist der Moment, in dem der Bootloader gerade läuft. Die seriellen Daten werden dabei für Programmcode gehalten, der nie aufhört.

Im Speziellen bedeutet die Auto-Reset Funktion auf dem Diecimila, dass sich das Board selber neu startet (und damit den Bootloader aktiviert) immer wenn eine serielle Verbindung aufgebaut wird. Um das Problem zu vermeiden, solltest du zwei Sekunden zwischen Verbindungsaufbau und dem Senden von Daten warten. Auf dem Arduino NG, startet das Board nicht neu, wenn Du eine serielle Verbindung aufbaust. Dafür dauert der Resetprozess bedeutend länger, ungefähr 8 bis 10 Sekunden.