Bootloader für AVR über nur eine Leitung?

Gast #520822
Lesenswert?
• ▲
▼
Hallo,

ich suche einen Bootloader für die AVR-Prozessoren, der folgende zwei 
Kriterien erfüllt:

1. Es gibt nur eine serielle Leitung, der AVR kann also nur empfangen 
und nichts zurücksenden.
2. Als Initialisierungsbefehl für den Bootloader können nur Befehle an 
den AVR geschickt werden, eine Aktivierung über einen Taster soll es 
nicht werden.

Gibt es da bereits etwas fertiges? Alle Bootloader, die ich bislang 
gefunden habe, senden auch irgendwas zurück.

Gruß
Christian
#520838
Lesenswert?
• ▲
▼
Du willst die Daten "einfach" an den mc schicken, ohne ein Programm, was 
ein Boot-Protokoll fährt, verstehe ich Dich richtig?

Damit das funktioniert, müssen ein paar Bedingungen erfüllt sein:

Entweder
der PC, von dem Du das schicken willst, kann Dein Boot-Timing einhalten. 
Dann schickt er die Daten für eine Page, gibt das Programmier-Kommando, 
und wartet dann, bis der ATmega worstcase fertig ist (ca. 10ms). Dann 
das Spiel für die nächste Page von neuem.

Oder
der PC schickt die Daten komplett am Stück an den ATmega. Da Du nur eine 
Ltg und damit keine Handshake-Möglichkeit hast, musst Du die Baudrate so 
niedrig halten, dass der ATmega mit dem Programmieren hinterherkommt. 
Ausserdem muss der UART-Empfang interruptgesteuert sein und einen 
Eingangspuffer füllen, damit während den Programmierphasen keine Daten 
verloren gehen. Je nach AVR und damit nach Pagegröße sind aber 115200 
Baud oder mehr möglich).
Ausserdem  kann der Bootloader NUR die NRWW-Sektion programmieren: Beim 
Schreibzugriff auf die RWW-Sektion würde der AVR "Pause" machen -> 
Datenverlust. Sinnvollerweise wählst Du als Bootloadergröße gleich die 
Maximal-Bootloadergröße, dann deckt der Bootloader die RWW-Sektion 
komplett ab.

Einen Bootloader zu programmieren ist auch nicht wesentlich aufwändiger 
als ein "normales" Programm, wenn man einige Besonderheiten beachtet. 
Die AVR-libc unterstützt einen Bootloader schon ganz prima.

Gruß, Stefan

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.