Bootloader; Ein unbekanntes wesen?!

moinsen,

ich wüsste gerne mal, welche Aufgabe der Bootloader auf dem Arduino hat, ob es ein Bauteil ist oder nur ein Softwarecode und wo dieser Sitzt.

gruß da Hool

Hallo,

der Bootloader dient dazu, das von dir geschriebene Programm ohne Benutzung eines gesonderten Hardware-Programmierers (AVRISP, STK500 und diverse andere) in den Flash-Speicher des ATMega zu "brennen".

Ist kein getrenntes Bauteil sondern ein Stück Software, das im hinteren Adressbereich des Flashs "wohnt". Der Bootloader-Code wird hinten im Flash-Speicher ausgeführt und schreibt gleichzeitig vorne das neue Programme in den Flash. Wenn er damit fertig ist wird das Programm "vorne" gestartet.

Weitere Infos hier:
http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung
oder über Google leicht zu finden.

Wolfgang

Hab wenig zuzufügen;
Erst der Bootloader macht den Atmega zum Arduino und ermöglicht das einfache Upload aus der IDE heraus.
Grüße Uwe

moin,

ok, also ist der bootloader dazu da um den AT mehrmals zu beschreiben, quasi zu "Brennen", ein RW vorgang.

Wie muss ich denn arbeiten, wenn ich den AT nur einmal richtig Brennen will, quasi fest drauf, nicht löschbar...?

Der Bootloader ist dazu da, über die serielle Schnittstelle und damit über USB, das Programm zu übertragen.
Alternativ kann man ein Programm mit einem ISP-Programmierer in den ATmega übertragen. Ein Arduino 2009 (nicht Arduino Uno!!) kann als Programmierer verwendet werden.

Grüße Uwe

Hallo,
um den Code unlöschbar zu machen, oder auch das Auslesen des Codes zu verhindern, kann man die sogenannten Fuse-Bits des Atmegas setzen, einige davon sind extra für diesen Zweck. Das geht so viel ich weiss, nicht aus der Software, du benötigst dafür einen Programmieradapter, z.B. einen zweiten Arduino. Geht dabei was schief, kannst Du den Atmega der Tonne beifügen =(

Eigentlich macht der Bootloader den Atmega zum Arduino, wie uwefed schon geschrieben hat. Der Preis dafür sind ein paar kByte Flash und Du kannst nicht alle Parameter des Atmegas ändern.

Das Programmieren über den Bootloader oder mittels Programmer führt zum gleichen Ergebnis, Zuerst fird der Flashspeicher gelöscht, alle Zellen werden auf "1" gesetzt.
Beim Programmieren werden dann die Zellen, wo nötig, auf "0" gelöscht.

Viele Grüße,
Alex

alx:
um den Code unlöschbar zu machen, oder auch das Auslesen des Codes zu verhindern, kann man die sogenannten Fuse-Bits des Atmegas setzen, einige davon sind extra für diesen Zweck. Das geht so viel ich weiss, nicht aus der Software, du benötigst dafür einen Programmieradapter, z.B. einen zweiten Arduino. Geht dabei was schief, kannst Du den Atmega der Tonne beifügen =(

Hallo,

kleine Korrektur: für den Schutz vor Umprogrammieren oder Auslesen des Flashs sind die "Brüder" der Fuse-Bits zuständig, die Lock-Bits.
Die gibt es jeweils für den eigentlichen Programm-Bereich und für den Bootloader-Bereich.

Wenn sie einmal gesetzt sind (d.h auf 0), können sie nicht mehr einfach zurückgesetzt werden. Das geht nur noch über das komplette Löschen des Chips. Auf diese Art kann man die Sperre von Umprogrammieren und Auslesen umgehen, hat aber nix gewonnen, weil das Programm auch futsch ist. Oder doch... Man hat den ATMega vor der Tonne gerettet.

Näheres dazu im Atmel-Datenbuch zum 2560 u.a. im Kapitel 29 Memory Programming:

Eine sicheren Schreibschutz gibt es meines Wissens nicht. Mit einem Programmierer kann man den Chip jedenfalls löschen, wenn man unbedingt Böses vorhat.

[Edit]
Kleiner Nachtrag: ich bin gerade mit meinem AVRISP mkII-Programmer auf die Lockbits losgegangen und habe sie umprogrammiert. Beim Versuch sie wieder zurückzusetzen, gibt es eine Fehlermeldung, und den Hinweis, ich möge doch bitte den Chip löschen. Ausprobiert, stimmt. Danach sind die Lock-Bits wieder im Grundzustand. Also Aussage von oben bestätigt!

Gruß
Wolfgang

Geht dabei was schief, kannst Du den Atmega der Tonne beifügen smiley-cry

voithian hat es bereits richtig erklärt.
Es gibt aber auch noch eine "Hochspannungsprogrammiermethode" wenn der Controller wirklich zerschossen ist, zB eine unmögliche Taktkombination gesetzt wurde.
Dürfte aber in täglichen Gebrauch von Arduino nie vorkommen, daß man zu diesem Punkt kommt.
Grüße Uwe