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
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
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.
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.
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.
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.
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
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.
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
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
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
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.
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.
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.
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.
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.
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.