Verzögerung durch Bootloader normal ?

Gast #54379
Lesenswert?

Ich hab von der Seite http://www.microsyl.com/megaload/megaload.html den
dort angebotenen Bootloader runtergeladen und meinen Mega16 erfolgreich
damit geflasht.
Das Problem ist nun das bei einem Reset des MCs ca 15 Sekunden vergehen
bis der MC Starklar ist. (Ich hab den MC per RS232 am PC angeschlossen
und beim Programmstart wird eine Meldung ausgegeben.Daher weiß ich das
mit den 15 Sekunden.)
Darum die Frage ob das normal ist oder nicht ?
Gast #54380
Lesenswert?

Nun, irgendwie mußt der Bootloader ja eine Chance bekommen, daß man
ihn nach dem Reset ansprechen kann, um den Flash neu zu schreiben.
Entweder löst man das mit einer Verzögerung, innerhalb derer die
serielle Schnittstelle dann abgefragt wird, ob jetzt jemand den
Bootloader angeworfen haben möchte (wobei 15 Sekunden exzessiv
erscheint, andere benutzen hier ein bis zwei Sekunden), oder man
springt den Bootloader auf andere Weise aus dem Programm heraus an, so
daß er normalerweise transparent bleibt und keine Zeit warten muß.
Letzteres wird beispielsweise beim AVR JTAG ICE gemacht: es gibt einen
Befehl für das JTAG ICE, mit dem der Bootloader explizit aktiviert
wird, danach kann man einen Firmwareupdate durchführen.

Dritte Variante wäre eine hardwaremäßige Aktivierung z. B. mittels
Jumper.  Die braucht ein Portpin, damit der Bootloader den Jumper
abfragen kann.

Wichtig bei der Variante mit Wartezeit ist natürlich, daß sie nur bei
externem oder Power-On-Reset warten sollte, bei einem Watchdog-Reset
sollte sie wohl sofort in die eigentliche Applikation springen.
Gast #54381
Lesenswert?

Hallo,

die Verzögerung ist normal. Sie kommt von der automatischen Erkennung
der Baudrate. Die Windowssoftware wartet darauf, das ein bestimmtes
Byte vom Bootloader kommt. Zu diesem Zweck sendet der Bootloader dieses
Byte mit allen möglichen Baudraten (UBRR0L-Register), irgendwann hat er
dann die richtige Einstellung gefunden. Das kann dann halt schonmal ein
paar Sekunden dauern.

Gruß
Thorsten
#54382
Lesenswert?

Ja, der Megaload geht da sehr einfach vor.
Er sendet einfach mit 256 verschiedenen Baudraten und das dauert eben.

Wenn Du das nicht willst, dann nimm doch meine Routine.
Die ist etwas komplizierter, weil sie, sobald der PC was sendet, die
Baudrate mit dem Timer echt ausmißt und dann die UART sofort auf die
richtige Baudrate setzt.

Deshalb reichen ihr auch nur 0,2s Startverzögerung aus, was bei kaum
einer Anwendung stören wird.


Peter
Gast #54383
Lesenswert?

Hallo Peter, wo gibts denn deine Routine?

Gibts da auch ne gute Dokumentation zu? suche etwas wo ich den MC Teil
übernehmen kann und die PC Software selbst schreibe.

Danke schonmal.
#54386
Lesenswert?

@Peter F.

"weiterhin den Megaload benutzen"

nein, meiner hat ein anderes Protokoll.
Ich nenne es A5-Protokoll, weil das Byte 0xA5 beim Programmieren eine
Sonderfunktion hat. Die restlichen Kommados sind textuelle Kommandos,
d.h. mit 0x0A oder/und mit 0x0D abgeschlossen.


Aber der C-code ist ja mit dabei.
Nur habe ich von Windows keinerlei Ahnung und habe es mit BC4.0 als
DOS-Anwendung übersetzt.


Vielleicht kann ein Windowser es ja mal nach W-XP konvertieren. Da soll
man ja auch noch Kommandozeilen auswerten können.
D.h. man muß dem Benutzer nicht immer jedesmal komplette
Weltumsegelungen mit der Maus zumuten.
Es müssen ja nur die inportb() und outportb() durch entsprechende
Aufrufe des Windows API ersetzt werden.


Peter
Gast #54387
Lesenswert?

Schade, wäre auch zu schön gewesen. Von C hab ich leider absolut keine
Ahnung. Das Ganze ist daher ein paar Stufen zu hoch für mich.
Dann werde ich wohl mit der Verzögerung leben müssen. Ist ja nicht sooo
schlimm :)
Gast #54388
Lesenswert?

Man könnte den Megaload-Bootloader so anpassen, daß er als erstes
überprüft, ob ein bestimmter Portpin z. B. High ist. Wenn nicht, wird
sofort das Anwenderprogramm gestartet. Du müßtest dann halt ein Jumper
o. ä. setzen.

Thorsten

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