Forum: Mikrocontroller und Digitale Elektronik Gibt es eine Bytesquenz, um den AVR Arduino Bootloader zügig zu verlassen ?


von Flunder (flunder)


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 ?

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Falls nicht, könntest Du ja den Bootloader passend modifizieren.

von Harald K. (kirnbichler)


Lesenswert?

Der Arduino-Bootloader verwendet wohl das STK500-Protokoll.

https://ww1.microchip.com/downloads/en/Appnotes/doc2525.pdf

von Flunder (flunder)


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.

von Bana A. (bananen_bieger)


Lesenswert?

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

von Rainer W. (rawi)


Lesenswert?

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.

von Cyblord -. (cyblord)


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.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Cyblord -. schrieb:
> Selbstverständlich nicht. Die Anforderungen an einen Bootloader können
> ganz unterschiedlich sein.

Beim TO ging es ausschließlich um die Frage, ob sich die 
Timeout-Funktion für den Start der eigentlichen Applikation durch ein 
Kommando vom Host-PC abbrechen lässt - um kein bisschen mehr.

von Cyblord -. (cyblord)


Lesenswert?

Rainer W. schrieb:
> Beim TO ging es ausschließlich um die Frage, ob sich die
> Timeout-Funktion für den Start der eigentlichen Applikation durch ein
> Kommando vom Host-PC abbrechen lässt - um kein bisschen mehr.

Genau solche speziellen Anforderungen meinte ich doch.

: Bearbeitet durch User
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.