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.
:
Bearbeitet durch User
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.
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
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
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
Joachim B. schrieb: > Mir gefällt das ich mit einem popeligen USB Kabel mich am zugeschraubten / fertigen Gerät betätigen kann.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.