Bootloader -> programmierbar per Terminal

Gast #340878
Lesenswert?

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.
Gast #340883
Lesenswert?

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.
Gast #340889
Lesenswert?

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.
#340892
Lesenswert?

@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
Gast #340893
Lesenswert?

@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.
Gast #340894
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren