Forum: Mikrocontroller und Digitale Elektronik Bootloader für AVR über nur eine Leitung?


von Christian (Gast)


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

von Stefan K. (_sk_)


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

von SIGINT112 (Gast)


Lesenswert?

Bei langsamen Uebertragungsraten ist sogar eine bidirektionale 
Kommunikation (halbduplex) moeglich:
http://de.wikipedia.org/wiki/1-Wire

Gruss,
  SIGINT

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.