Forum: Mikrocontroller und Digitale Elektronik Arduino Bootloader ändern?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von David (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Gemeinde,

ich habe ein paar Fragen zum Arduino Bootloader.

Ich benutze einen Arduino Micro, mit diesem sollen ein paar LED-Streifen 
angesteuert werden, die Farbe etc. kann durch ein Bluetoothmodul vom 
Handy aus gesteuert werden.

Leider benötigt der Micro ja ~6 Sekunden, bis er beginnt in die Loop zu 
springen. Das hätte ich gerne deutlich schneller. Der Micro bekommt 
genau wie die LED Streifen erst Spannung, wenn das Licht eingeschalten 
wird. Und dann will ich ja die LEDs auch (nahezu) instantan ansteuern 
können.

Ich habe schon gelesen, dass es Möglichkeiten geben soll den Bootloader 
nur anzuspringen, wenn zB. ein Jumper gesetzt ist.

Meine Fragen:
-wie kann ich den Bootloadercode ändern? Mit der Arduino-IDE oder zb 
über Atmel Studio?
-muss ich den Bootloader dann über ISP brennen oder geht das auch über 
den Bootloader/USB selbst?
-was muss ich im Bootloader-Code ändern?

Ich freue mich auf interessante Tips von euch!
Vielen Dank,
David

von David (Gast)


Bewertung
0 lesenswert
nicht lesenswert
PS: Ich möchte gern beim Arduino bleiben, da es für diesen zB die 
fertige Library "RemoteXY" gibt, und ich keine Ahnung habe, wie ich 
sowas auf einen Attiny portieren könnte.
Und ein paar ms Zeitverzögerung durch die Arduino-Umgebung stören bei 
diesem Projekt ja nicht.

Viele Grüße,
David

von Marco H. (damarco)


Bewertung
0 lesenswert
nicht lesenswert
Also der Code für den Bootloader müsste in der Arduinoumgebung mit drin 
sein. Bzw. ist offen und im Netz verfügbar. Was du brauchst ist 
Atmelstudio und einen ISP Programmer.

Alternativ gibt es das LUFA Projekt, dort gibt es auch ein bootloader 
example. Allerdings funktioniert das hochladen nur mit Flip.

Ich habe für meinen bootloader zum RDM Projekt das LUFA benutz. Da im 
Arduino Bootloader diverse Timer usw. so umgebogen wurden das sie keine 
ISRs mehr auslösten.

Flip ist auch in Atmelstudio enthalten und man kann direkt aus der 
Umgebung das Board flashen.

: Bearbeitet durch User
von Brain 2.0 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Da der Bootloader nur über ISP geflasht werden kann, kannst du deinen 
Sketch auch direkt per ISP flashen, da benötigst du keinen Bootloader.

Im übrigen gibt es auch für den ATtiny sehr viele angepasste Libraries. 
Sicher auch deine "RemoteXY", die ich so allerdings nicht kenne. 
Zumindest deinen genannten Namen.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Um den Bootloader zu ändern brauchst du einen ISP Programmer.
Wenn du einen ISP Programmer hast, brauchst du aber keinen Bootloder.

Wenn du deinen Sketch einfach mit einem ISP Programmer in den Chip 
überträgst, dann ist danach der Bootloader weg und stört dich nicht 
mehr.

von Amateur (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Soweit mir bekannt, ist die scheinbar lange Wartezeit am Anfang der 
Möglichkeit geschuldet, entweder "normal" zu starten oder ein neues 
Projekt zu laden.

Die (Zeit) sollte also verkürzbar sein. Aber...

Ohne ISP wird da wohl nichts machbar sein. Und wie bereits angedeutet: 
Wozu dann noch einen USB-Lader beschäftigen.

von G. H. (schufti)


Bewertung
1 lesenswert
nicht lesenswert
falls du einen UNO o.ä. hast, lies hier:
https://forum.arduino.cc/index.php?topic=398265.0

der neue "Caterina" Bootloader sollte nach reset direkt den Sketch 
starten und nur bei "double-tap" in den bootloader mode wechseln.
https://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/32U4Note.pdf

von Stefan S. (chiefeinherjar)


Bewertung
0 lesenswert
nicht lesenswert
Sicher, dass das am Bootloader liegt?! Ich meine 6 Sekunden (sic!) 
klingt eher nach Synchronisation mit dem BT-Modul anstatt Bootloader.

Oder ist der WIRKLICH so langsam? :O

von Baendiger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan S. schrieb:
> Sicher, dass das am Bootloader liegt?!

Ja! Aber nur bei den Arduinos mit dem AtMega32u4 (Arduino Micro, Arduino 
Leonardo), da diese direkt die USB Schnittstelle bereitstellen.

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
gab es nicht mal fastboot für den Arduino?
(ich glaube die lange Zeit war wenn überhaupt dem Taster geschuldet den 
keiner mehr dafür braucht)

ich denke eher auch die 6 Sekunden kommen vom BT

: Bearbeitet durch User
von David (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo

und danke für die Antworten, speziell schufti.
Die lange Wartezeit kam wirklich ausschließlich vom Bootloader.

Ich nutze nun den neuen Caterina-Bootloader. Ich habe über ISP einmal 
den Sketch komplett mit Bootloader gebrannt. Dieser startet sofort ohne 
Verzögerung den Sketch und ich kann trotzdem bequem über USB 
programmieren.

Falls jemand eine gute Library für AVR allgemein kennt (speziell 
Mega1284) die BT-Kommunikation mit grafischer Oberfläche auf dem 
Smartphone kennt (eben sowas wie RemoteXY), dann wäre ich dankbar über 
einen Tip. Dann könnte ich mir bei einem anderen Projekt den Arduino 
sparen. nur ein aufwändiges zusätzliches Teil.

Viele Grüße, David

von Patrick J. (ho-bit-hun-ter)


Bewertung
0 lesenswert
nicht lesenswert
Hi

Hätte man nicht auch den Arduino zum Brennen eines nackten AVR benutzen 
können?
Zumindest bin ich einige Male darüber gestolpert, daß man wohl 
'Arduino-Sketche' auf normale µC brennen kann (Arduino-ISP nennt sich 
Das, glaube ich), vll. eine Art Interpreter?

MfG

von G. H. (schufti)


Bewertung
0 lesenswert
nicht lesenswert
natürlich kann man einen Arduino dazu verwenden einen nackten AVR zu 
programmieren; dazu verwendet man einen Sketch, der aus dem Arduino 
einen ISP macht.

Und ja, natürlich kann man einen "Arduino Sketch" auch auf unterstützte 
µC ohne Bootloader brennen. Aber warum wollte man das tun, beim PC bist 
du ja auch froh einen Bootloader zu haben, oder?

Ein Sketch der "geflasht" wird ist in Prinzip genauso ein "Binary" wie 
jede andere FW die man auf einem µC laufen läßt; im Kern ist Arduino 
eine C/C++ Entwicklungsumgebung.

von Rene K. (xdraconix)


Bewertung
0 lesenswert
nicht lesenswert
Baendiger schrieb:
> Stefan S. schrieb:
> Sicher, dass das am Bootloader liegt?!
>
> Ja! Aber nur bei den Arduinos mit dem AtMega32u4 (Arduino Micro, Arduino
> Leonardo), da diese direkt die USB Schnittstelle bereitstellen.

Quark, der startet umgehend.

Bei den Atmegas mit dem u4 / u2 wird in den Bootloader gesprungen wenn 
die USB CDC mit 2000Baud beschrieben wird, dann springt er in den 
Bootloader und wartet dort 2sec auf die ersten Bytes, sollten diese 
nicht kommen dann geht er umgehend in den Startpunkt des
Programmflash zurück. Beim Start oder Reset wird ausschließlich die 
USB-CDC initialisiert, das dauert wenige us.

von Marco H. (damarco)


Bewertung
0 lesenswert
nicht lesenswert
Der Arduino bootloader wartet aber nur wenn man ihn aufruft.  Sonst 
springt dieser ins Programm und von diesen wird er aufgerufen wenn man 
die Serielle Schnittstelle mit 1200 Baud öffnet und schließt.

Es gibt noch einen Pin der diesen auf aufruft der ist beim Arduino 
glaube ich deaktiviert.

Wenn dieser wirklich so lange braucht hängt das mit den externen 
Bedingungen zusammen.

von Anon (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Wozu soll dieser Bootloader überhaupt da sein?

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Anon schrieb:
> Wozu soll dieser Bootloader überhaupt da sein?

echte Frage?
und warum HIER:
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

von Anon (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Ja echte Frage, bin zufällig auf den Thread gestoßen und habe mich das 
einfach gefragt. Ist jetzt aber auch nicht so wichtig dass ich dafür 
einen eigenen aufmachen würde.

Jedenfalls entwickle ich seit Jahren Schaltungen und Programme für Atmel 
uCs und habe noch nie Berührung mit einem Bootloader gehabt. Wenn ich 
die Schaltung des Arduino so überfliege wüsste ich jetzt auch nicht, 
wofür man da sowas bräuchte.

von Joachim B. (jar)


Bewertung
1 lesenswert
nicht lesenswert
Anon schrieb:
> Ja echte Frage
>
> Jedenfalls entwickle ich seit Jahren Schaltungen und Programme für Atmel
> uCs und habe noch nie Berührung mit einem Bootloader gehabt. Wenn ich
> die Schaltung des Arduino so überfliege wüsste ich jetzt auch nicht,
> wofür man da sowas bräuchte.

OK ich sage es dir

Mir gefällt das ich mit einem popeligen USB Kabel an jedem Ort ohne 
meinen Prommer Programme einspielen kann.
Im Zweifel liegt mein Prommer woanders oder in der Werkstatt hat ihn 
sich ein Kollege ausgeliehen.
Den Prommer im Safe einzuschliessen ginge wenn man einen Safe hätte, 
aber dann dürfte man nie krank werden weil dann auch keiner die Arbeit 
übernehmen kann.

: Bearbeitet durch User
von Anon (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Verstehe ?

von Manfred (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Mir gefällt das ich mit einem popeligen USB Kabel

mich am zugeschraubten / fertigen Gerät betätigen kann.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.