Hallo, ich suche einen Bootloader für einen AVR (möglichst mit Sourcen), bei dem ich später per Terminalsoftware (wie Minicom oder Hyperterminal) das eigentliche Programm übertragen kann. Hat da jemand eine Idee? P.S. Bei Google habe ich was von SAIL gefunden, aber weder bin-File noch Sourcen.
Naja, vielleicht habe ich ja Tomaten auf den Augen, aber ich finde da nichts Passendes. :-(
Den habe ich auch gefunden. Aber da gibt es ja ein extra Kommandozeilentool, um den AVR zu programmieren. Ich habe keinen Hinweis gefunden, dass man statt dessen auch ein Terminalprogramm nehmen kann und dann einfach eine Hex-Datei über die serielle Schnittstelle sendet.
@Rick Dangerus Danke für den Link. Aber auch hier braucht man ein spezielles Tool. Ich suche aber einen Bootloader, dem ich per Terminalprogramm einfach eine Hex-Datei senden kann.
@Harald Dann bleibt nur selberschreiben... Ich würde dann aber xmodem o.ä. verwenden. Wie es prinzipiell gemacht wird, kann man sich ja bei AVRPROG angucken. Rick
Ein Bootloader ist ´ne relativ harte Nuß, weil man die Sachen mit dem SPM erst verstehen muß. Wenn man´s dann gefressen hat - geht´s eigentlich. Ich habe so ein Ding geschrieben, was direkt ein .hex-file verarbeitet. Aus Copyright-Gründen kann ich das hier leider nicht veröffentlichen, aber das Prinzip ist im Datenblatt der ATMega-Controller unter "Self-Programming the Flash" nachzulesen. Dann muß man lediglich noch das U(S)ART einbinden und dann kann man die Dateien mit jeder x-beliebigen-Terminal-Software übertragen. Das Schwierigste war meiner Meinung nach das Entknoten der .hex-files und die Fehler-Erkennung. Ein paar Tage Arbeit wird´s schon kosten.
DES Bootloader inkl. PC-Software http://www.atmel.com/dyn/resources/prod_documents/doc2541.pdf http://www.atmel.com/dyn/resources/prod_documents/AVR230.zip oder AES http://www.atmel.com/dyn/resources/prod_documents/doc2589.pdf http://www.atmel.com/dyn/resources/prod_documents/AVR231.zip
Bei avrfreaks in academy/user-projects gibt es wenn recht erinnert einen "XMODEM-Bootloader". Martin Thomas
@Harald: Ein normales Terminalprogramm hat das Problem, daß es die Hex-Daten einfach so, ohne Rückmeldung vom Controller, raussendet. Wenn der uC aber eine gewisse Zeit zum Verarbeiten braucht, z.B. beim Löschen eines Bereichs, oder evt. auch beim normalen Programmieren einer Page (z.B. 256 Bytes beim ATMega128), je nach Baudrate, bekommt das Terminalprogramm das nicht mit. Außerdem könnte unterwegs ein Fehler entstehen, z.B. ein Übertragungsfehler (Checksum), das bekäme das Terminalprogramm auch nicht mit, und es würde fleißig Daten weitersenden. Ich denke, man müßte ein spezielles Terminalprogramm haben, das die Intel-Hex-Records satzweise sendet und nach jedem Satz auf ein Rückmeldezeichen vom Controller wartet; erst dann kommt der nächste Satz. Soetwas könnte man z.B.in Delphi schreiben.. Günter
@Günter Damit hast Du natürlich Recht. Das Programmieren mit einem normalen Terminalprogramm birgt sicher gewisse Risiken. Andererseits hat man eben so ein Terminalprogramm (fast) immer verfügbar.
Proggen mit Terminalprogramm geht bis 38kBaud sicher, wenn man den Flash vorher löscht und beim Proggen nur schreibt und den Pagebuffer als schnellen Zwischenspeicher nutzt, wozu er ja auch gedacht ist. Das habe ich zuverlässig getestet (ATMega16 bei 8MHz), sicher geht´s auch noch schneller. Wenn der Bootloader autonom arbeitet, kann man bei fehlerhafter Übertragung einfach nochmal nachflashen (vorher natürlich wieder die Applikations-Sektion löschen). Ich habe bei meinem Bootloader eine feste Sequenz die ich sende, um das Flash zu löschen, und eine, um in die Applikation zu springen, die .hex wird aufgrund ihrer Struktur automatisch erkannt. Der Bootloader überprüft die Prüfsummen aus der .hex und gibt eine Fehlermeldung, wenn ´was schiefgegangen ist.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.