Forum: Mikrocontroller und Digitale Elektronik Verzögerung durch Bootloader normal ?


von Peter F. (Gast)


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 ?

von Joerg Wunsch (Gast)


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.

von Thorsten Eichner (Gast)


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

von Peter D. (peda)


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

von Sven Müller (Gast)


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.

von Sven Müller (Gast)


Lesenswert?

Ah, schande über mich..

Natürlich in der Codesammlung.

von Peter F. (Gast)


Lesenswert?

@ Peter Dannegger

Wenn ich deinen Bootloader flashe, kann ich dann weiterhin den Megaload
benutzen oder brauche ich einen andere Windowssoftware ?

von Peter D. (peda)


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

von Peter F. (Gast)


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 :)

von Thorsten (Gast)


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

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.