Forum: Mikrocontroller und Digitale Elektronik Langer 'Bootvorgang' beim Arduino (Video)


von Dussel (Gast)


Lesenswert?

Moin,

in dem Video https://youtu.be/Bo0AIVQLccQ?t=423 wird gesagt, dass der 
Arduino aufgrund des Bootloaders eine Sekunde zum Hochfahren braucht.
Woran soll das liegen? Selbst wenn man 64 ms auf den Takt wartet und 
alle Module erstmal initialisiert, ist das doch in deutlich unter einer 
Sekunde erledigt.

von Jim M. (turboj)


Lesenswert?

Dussel schrieb:
> Selbst wenn man 64 ms auf den Takt wartet und
> alle Module erstmal initialisiert, ist das doch in deutlich unter einer
> Sekunde erledigt.

Der Bootloader wartet aber auf eine Instruktion vom PC. Die eine Sekunde 
ist sogar schon realtiv kurz gewählt.

Ohne diese Wartezeit könnte man den Arduino nur mit 'nem ISP Interface 
programmieren.

von Elias K. (elik)


Lesenswert?

Der Bootloader gibt vermutlich dem Programmer Zeit, nach dem Reset den 
Programmiervorgang zu starten. Sprich, der µC wartet einige Zeit, ob er 
auf der seriellen Schnittstelle die entsprechenden Daten sieht.

Die generelle Abfolge ist:
1) Ardunio in Reset bringen. Entweder per Steuerbefehl vom PC aus, oder 
per Knopfdruck am Arduino.
2) Der Arduino führt den Bootloader Code aus. Darin wird vermutl. eine 
kurze Sequenz an Daten über die UART gesendet. Ab hier wartet der 
Arduino eine Zeit lang auf eine Antwort.
3) Der PC (Ardunio-IDE) muss sich im Programmiermodus befinden und 
wartet auf die Sequenz. Wenn es diese empfängt, wird mit dem neuen 
Programm geantwortet.
4) Der Arduino empfängt das Programm über die UART und schreibt es in 
seinen Speicher.
5) Es folgen möglicherweise noch einige Checksummen oder sonstiges 
Protokoll und dann Reset.

Hat der Arduino in 3) und 4) keine Daten empfangen, hört der Bootloader 
auf zu warten und führt das Hauptprogramm aus.

von Mario M. (thelonging)


Lesenswert?

Wozu raten? In jeder Arduino-Installation liegen die Bootloader im 
Ordner hardware/arduino/avr/bootloaders als c-Dateien.

von Alex G. (dragongamer)


Lesenswert?

Jim M. schrieb:
> Ohne diese Wartezeit könnte man den Arduino nur mit 'nem ISP Interface
> programmieren.
Wobei einige Bastler den Bootloader einfach so modifiziert haben, dass 
er diese Wartezeit nur macht wenn ein angeschlossener Taster gedrückt 
gehalten wird.
Statt Taster geht auch ein Jumper auf einem Board. Ergibt eine recht 
komfortable lösung.

von Dussel (Gast)


Lesenswert?

Jim M. schrieb:
> Der Bootloader wartet aber auf eine Instruktion vom PC. Die eine Sekunde
> ist sogar schon realtiv kurz gewählt.
Ach klar. Das wird es sein. Darauf bin ich nicht gekommen. Ich habe mich 
nur gewundert, warum das 'Hochfahren' so lange dauert…
Danke an alle.

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
Noch kein Account? Hier anmelden.