Gibt es eine Bytesquenz, um den AVR Arduino Bootloader zügig zu verlassen ?

#7869001
Lesenswert?

Bei Arduinos wie dem Nano oder dem Mega2560 wird nach einem Reset ja zunächst der Bootloader gestartet. Der horcht dann eine festgelegte Zeit auf der seriellen Schnittstelle, ob sie mit etwas verbunden ist, auf dem gerade avrdude läuft.

Das soll auch so bleiben. Ich weiss, dass ich durch ändern eines Fusebits direkt die Anwendung starten kann, aber so radikal möchte ich es nicht haben.

Ich habe eine eigene Software auf dem PC laufen, die über die serielle Schnittstelle mit einer Software von mir auf dem Arduino kommuniziert.

Ich würde gerne auch den Arduino direkt nach dem Verbinden per DTR Signal neu starten. Und jetzt kommts, ich mag dann nicht im PC Programm warten, bis der Bootloader auf dem AVR sicher aufgegeben hat und meine Applikation gestartet hat. Sende ich vorher schon los, passiert es sogar, dass der Bootloader die Kontrolle gar nicht an die Applikation abgibt.

Gibt es also etwas, dass ich an den Bootloader schicken kann, so dass er nicht mehr weiter wartet, sondern sogleich zur Applikation springt ?

#7869256
Lesenswert?

Ich habe mich jetzt mal durch den Quelltext des Bootloaders gewühlt. Es geht mit der Sequenz : MESSAGE_START 0x1B seqNum 0x01 msgLength HI 0x00 msgLength LO 0x01 TOKEN 0x0E data (CMD_LEAVE_PROGMODE_ISP) 0x11 checksum (alle bytes xor) 0x04

Beim normalen Programmieren wird das erste Kommando übrigens ca. eine Drittelsekunde nachdem DTR aktiv wurde gesendet.

Nur für den Fall, dass noch jemand das braucht. Ich hatte ja drauf gehofft, das schon jemand vor mir danach gesucht hat.

#7869597
Lesenswert?

Rainer W. schrieb:

Bana A. schrieb:

Die Leute schreiben sich ueblicherweise einen eigenen Bootloader. Der macht dann genau, was er soll.

Jeder etablierte Bootloader mit einer passenden Funktion tut genau das Gleiche, sofern die Funktion nicht fehlerhaft implementiert und der Bootloader damit nicht ungetestet in die freie Wildbahn entlassen wurde.

Selbstverständlich nicht. Die Anforderungen an einen Bootloader können ganz unterschiedlich sein. Das fängt schon damit an wann und wie er aktiviert wird. Beim Start? Spezielle Pinbelegungen? Durch die Applikation? Geht natürlich beim Interface weiter, UART, SPI, I2C? Dann was soll er tun? Ist der BL selbst updatebar? Wird Authentifizierung und/oder signierte oder verschlüsselte Firmware verwendet?

Da gibts viele Anforderungen in der realen Welt.

#7870108
Lesenswert?

Veit D. schrieb:

Man kann den Programmer auswählen. Der Bootloader ist zum eingestellten µC fest zugeordnet.

Kann nicht sein, es gibt z.B. Arduino Nanos mit "altem Bootloader". In einer früheren Version der Ide konnte man zwischen Nano mit aktuellem und altem Bootloader auswählen. Möglicherweise ist in der aktuellen IDE Version eine Autoerkennung implementiert. Ich kann mir nicht vorstellen, dass die alten jetzt nicht mehr unterstützt werden - aber wer weiß.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren