Hallo,
seit einiger Zeit beschäftige ich mich mit dem Thema Bootloader für die
AVR's. Dazu habe ich auch schon einiges gelesen (AVR Appnote, Peter
Danneggers Bootloader, Peter Fleurys Bootloader, Megaload usw.) und
hier im Forum die Threads mit diesem Thema verfolgt.
Eines habe ich jedoch nicht gefunden, oder ich sehe den Wald vor lauter
Bäumen nicht :-), und zwar mit welchem Programm ich die
Applikationssoftware in den AVR flashen kann. Wie ich den Bootloader
installieren kann weiß ich.
Mit welchen Programmen flasht ihr denn so? Und welche Erfahrung habt
ihr damit gemacht.
Danke schon mal im voraus.
Pit
Moin,
beim AVR weiß ich das gerade nicht, da habe ich bisher noch keinen
Bootloader verwendet (kommt nocht :-).
Aber bei den Freescale Hybrid Processoren, die ich zur Zeit viel
verwende, habe ich mir ein kleines Delphiprogramm dafür geschrieben.
Ansonsten geht es aber auch mit jeden Termialprogramm. Am einfachten,
wenn das Programm direkt eine komplette Datei senden kann.
Beim Bootloader-Paket vom Peter Danegger ist ein
PC Programm dabei: PBOOT.EXE
Den Bootloader flasht du in den AVR. Fuses richtig
setzen nicht vergessen!
Dann wird der AVR resetted. Wenn der AVR startet wartet
er eine kleine Weile, ob an der Seriellen was daherkommt.
Das ist deine Chance: Du startest am PC PBOOT.EXE (kann man
auch schon vor dem Reset starten) und PBOOT.EXE überträgt
das gewünschte HEX-File an den AVR.
Hallo Karl Heinz,
habe jetzt im Bootloader -Paket vom Peter Dannegger nachgeschaut und
auch die PBOOT.EXE gefunden. Habe das Programm mal geöffnet (ohne einen
AVR am COM1 zu haben) und es läuft auch.
Wenn ich aber versuche etwas einzugeben, habe da an den Datei-Pfad der
zu überspielenden .hex-Datei gedacht, dann schliesst sich das Fenster
sofort wieder.
Was mache ich da noch verkehrt? Oder habe ich die Funktionsweise der
PBOOT.EXE nicht verstanden?
Ich habe kurz in die PBOOT.C geschaut aber in der schnelle keinen
Hinweis gefunden wie ich die Datei angeben kann.
Oder muss erst ein AVR mit Bootloader an der entsprechenden COM
hängen?
Pit
Du musst das ganze von einer DOS-Box aus machen.
PBOOT möchte Command-Line-Argumente.
Ich bin jetzt nicht an meinem AVR-Arbeitsrechner.
Daher aus dem Gedächtnis:
Ruf mal PBOOT mit einem '?' auf. Oder '-?'
Da musste eine Hilfe angezeigt werden.
Mein Aufruf schaut so aus (wieder aus dem Gedächtnis)
PBOOT -b9600 -ptest.hex
Läuft das ganze dann, kannst du dran gehen den PBOOT
mal in deine Entwicklungsumgebung zu integrieren.
@ Karl Heinz
dein Tipp die PBOOT.EXE mit einem ? aufzurufen war richtig. Die
Parameter die mit aufgerufen werden müssen, werden angezeigt.
Ich habe vor den FTDI-Chip FT232RL als Schnittstellen-Baustein zum AVR
hin einzusetzen (aus Ermangelung einer seriellen an meinem Notebook)
Damit ich den FT232 über USB ansprechen kann muss ich ja eine virtuelle
COM-Schnittstelle einrichten. Sollte mit der Software von FTDI kein
Problem sein, aber ich gehe mal davon aus dass ich dann nicht mehr mit
der PBOOT.EXE auf diesen Port zugreifen kann. Oder doch?
Schau mal bei
http://www.matwei.de/doku.php?id=de:elektronik:usbisp
Der mathias weißner hat einen Solchen Chip FT245BM (USB -> Parallel)
von FTDI verwendet und hat in dem ATmega8 einen Bootloader, mit dem man
die "Firmware" über USB per AVRdude updaten kann.
lg
@Pit
Wenn die FTDI-Chips als COM im Gerätemanager erscheinen, sollte es
gehen (nur auf COM1 ... COM4 einstellen).
Ich benutze den Bootloader am Notebook mit dem Reichelt USB/RS-232
Konverter (~10,-) und da geht es jedenfalls.
Peter
@Peter
Danke für den Tipp, ich werde es dann mal mit deinem Bootloader
ausprobieren.
Möchte mich auch bei den anderen für ihre Unterstützung bedanken!
Und wer noch etwas zu diesem Thema beitragen möchte, nur raus damit
:-).
Pit
Benötige ich für die Bootloader alle Leitungen der RS232 ??
Ich nutze bei einem Projekt nur Rx und Tx ??
Kann ich trotzdem den Bootloader verwnden ??
Viele Grüße
Nils
Studier doch einfach mal, wofür die anderen Leitungen
gut sind :-)
RTS/CTS - Request to send / Clear to send
Diese Leitungen regeln ein Hardware-Handshake. Salopp gesagt
teilt das eine Gerät dem anderen mit, ob es aufnahmebereit
ist oder nicht. Es ist also die hardwaremässige Möglichkeit
mitzuteilen: Warte mal, ich muss das was du mir bisher
gesendet hast, erst mal verdauen.
Hardwarmässiges Handshake ist eine Möglichkeit, eine andere
ist softwaremäßiges Handshake. Anstatt eine Leitung zu ziehen,
schickt der Partner der den anderen zum kurzzeitigen Einstellen
der Sendung bringen möchte, ein spezielles Zeichen. Ein anderes
spezielles Zeichen teilt mit: Jetzt kanns weitergehen.
Und schliesslich kann man auch ohne Handshake fahren: Wenn
sichergestellt ist, dass der einlaufende Datenstrom ohne
Probleme verarbeitet werden kann, kann man auf Handshake auch
komplett verzichten.
Letztendlich hängt es also von der Übertragungsrate ab, ob
du Handshake brauchst oder nicht. Je höher die Übertragungsrate,
desto weniger Zeit steht zwischen 2 Zeichen zur Verfügung.
Ein Bootloader wird sich sinnigerweise ein Softwaremässiges
Handshake direkt ins Übertragungsprotokoll einbauen. Damit ist
er auf jeden Fall auf der sicheren Seite.
Die restlichen Leitungen haben mehr informativen Charakter.
Um nicht ein neues Thema anzugreifen hänge ich mich mal mit dazu:-)
Falls ich keinen Handshake nutzen will (also nur RX, TX, GND) muss ich
dann RTS/CTS auf ein bestimmtes Potential hängen? oder kann ich die
einfach offen lassen. Im datenblatt steht leider nicht ob die intern
schon "ge-pullup-t" oder "ge-pulldown-t" sind.
Speziell geht es um den FTDI232R
Grüße
verwendet selber die kombination FTDI232R mit tiny2313. da sind nur tx
und rx angeschlossen, am FTDI kannst du die anderen leitungen ienfach
offen lassen. eine beispielapplikation steht soweit ich weiß auch im
datenblatt.