# Arduino Bootloader anpassen?

**URL:** <https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373>\
**Category:** Deutsch\
**Created:** [November 26, 2012, 3:28pm UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373 "2012-11-26T15:28:25Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Addi](https://avatars.discourse-cdn.com/v4/letter/a/898d66/32.png) [@Addi](https://forum.arduino.cc/u/Addi)\
**Post date:** [November 26, 2012, 3:28pm UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373/1 "2012-11-26T15:28:25Z")

</div>

Hallo,  
ich habe mir hier([https://github.com/arduino/Arduino/blob/master/hardware/arduino/bootloaders/atmega/ATmegaBOOT\_168.c](https://github.com/arduino/Arduino/blob/master/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c))  
den Bootloader geholt, und wollte wissen, wie ich den Code ändern muss, damit der Bootloader z.B. immer Pin 13  
anschaltet. Ich möchte dafür sorgen, dass ein Teil eines Sketches immer ausgeführt wird, egal ob  
nun einer neuer Sketch draufgeladen wurde oder nicht.

Addi

---

<div class="post-metadata">

**Author:** ![michael\_x](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/michael_x/32/628623_2.png) [@michael\_x](https://forum.arduino.cc/u/michael_x)\
**Post date:** [November 26, 2012, 4:54pm UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373/2 "2012-11-26T16:54:29Z")

</div>

Schau mal in Zeile 425 oder am Ende in flash\_led().

Statt digitalWrite(PIN, HIGH); wird hier mit Ports und Bitmasken gearbeitet,  
aber dein Beispiel Pin13 ist schon drin ( du musst nur an/aus umdrehen, dann bleibt's am Ende an )

---

<div class="post-metadata">

**Author:** ![Addi](https://avatars.discourse-cdn.com/v4/letter/a/898d66/32.png) [@Addi](https://forum.arduino.cc/u/Addi)\
**Post date:** [November 26, 2012, 5:18pm UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373/3 "2012-11-26T17:18:54Z")

</div>

Kann man auch die "einfachen" Befehle nutzen, wenn man alle Liberies einfügt?  
Wo müsste man dann die Befehle im Quellcode setzen?

Addi

---

<div class="post-metadata">

**Author:** ![michael\_x](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/michael_x/32/628623_2.png) [@michael\_x](https://forum.arduino.cc/u/michael_x)\
**Post date:** [November 26, 2012, 5:30pm UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373/4 "2012-11-26T17:30:22Z")

</div>

> wenn man alle Liberies einfügt

... wird der Bootloader ziemlich groß, aber wenn es dir darauf nicht ankommt ...  
Kannst ja auch mal in core den Code von digitalWrite ansehen, der meiste Aufwand ist die Fall-Unterscheidung zwischen verschiedenen Boards.

Wenn der pin eine Compilezeit-Konstante ist, wird alles einfacher, da bietet digitalWrite (unnötigen ?) Schnickschnack.

Mit Ports und |= und &=~ zu arbeiten, ist Gewöhnungssache.  
Ist halt nicht mehr Arduino IDE Level , am Bootloader rumzufummeln 😉

---

<div class="post-metadata">

**Author:** ![Addi](https://avatars.discourse-cdn.com/v4/letter/a/898d66/32.png) [@Addi](https://forum.arduino.cc/u/Addi)\
**Post date:** [November 26, 2012, 5:36pm UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373/5 "2012-11-26T17:36:00Z")

</div>

Kann ich dann die Befehle irgendwo in der main() schreiben, oder  
muss ich das an einer Bestimmten Stelle einfügen?

Edit: Hab ertmal versucht den Quellcode zu compillieren, erhalte aber diese Fehlermeldung:  
booting\_168.cpp: In function 'int main()':  
booting\_168:424: error: 'NUM\_LED\_FLASHES' was not declared in this scope  
booting\_168.cpp: In function 'char getch()':  
booting\_168:974: error: 'MAX\_TIME\_COUNT' was not declared in this scope

Verwende den Quellcode der DAtei die ich oben verlinkt habe. Als Board habe ich den UNO,Fio,Nano und Lilypad verwendet.  
Addi

---

<div class="post-metadata">

**Author:** ![pylon](https://avatars.discourse-cdn.com/v4/letter/p/59ef9b/32.png) [@pylon](https://forum.arduino.cc/u/pylon)\
**Post date:** [November 27, 2012, 10:22am UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373/6 "2012-11-27T10:22:50Z")

</div>

In Deiner IDE findest Du die Datei auch: arduino-1.0.2/hardware/arduino/bootloaders/atmega/. Dort findest Du auch ein zugehöriges Makefile, das die notwendigen Definitionen vornimmt.

Mit der IDE kriegst Du einen Bootloader nicht kompiliert. Die IDE ist als Convenience-Tool für Anfänger und mit der Materie nicht sehr vertraute Personen gedacht. Jemand, der am Bootloader rumfummelt, sollte hingegen wissen, was er macht und entsprechend mit Makefiles und Kommandozeilen-Werkzeugen umgehen können (damit ich das "Warum" auch gleich erklärt habe). Der Bootloader für den UNO heisst im Übrigen optiboot, derjenige, den Du zu kompilieren versuchst, ist für die älteren Arduinos.

---

<div class="post-metadata">

**Author:** ![Addi](https://avatars.discourse-cdn.com/v4/letter/a/898d66/32.png) [@Addi](https://forum.arduino.cc/u/Addi)\
**Post date:** [November 27, 2012, 4:01pm UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373/7 "2012-11-27T16:01:50Z")

</div>

Nur wo muss ich jetzt den zusätzlichen Code einfügen?  
Und kann man optiboot auch für den Atmega2560 einsetzen?

Addi

---

<div class="post-metadata">

**Author:** ![pylon](https://avatars.discourse-cdn.com/v4/letter/p/59ef9b/32.png) [@pylon](https://forum.arduino.cc/u/pylon)\
**Post date:** [November 27, 2012, 4:17pm UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373/8 "2012-11-27T16:17:12Z")

</div>

> Und kann man optiboot auch für den Atmega2560 einsetzen?

Nein, der wird nicht unterstützt, für dem 2560 musst Du den stk500v2 nehmen.

> Nur wo muss ich jetzt den zusätzlichen Code einfügen?

Ich bin ganz ehrlich: Wenn Du das fragen musst, solltest Du die Finger davon lassen. Je nach der Funktion, die Du ausführen möchtest, meistens irgendwo gegen Ende der main()-Funktion. Und ich sag's nochmals deutlich: Wenn Du den Code dort nicht verstehst, solltest Du keine Änderungen vornehmen, die Wahrscheinlichkeit, dass es nicht so funktioniert, wie Du Dir das vorstellst, ist relativ hoch.

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 6, 2021, 12:50pm UTC](https://forum.arduino.cc/t/arduino-bootloader-anpassen/131373/9 "2021-05-06T12:50:38Z")

</div>

Closed on May 6, 2021, 12:50pm UTC


