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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.