Forum: PC-Programmierung Programmer mit C# für ATmega8 selbst programmieren


von Michael Hörst (Gast)


Lesenswert?

folgendes:
habe mit c# ein kommunikationsprogramm zwischen pc und µp geschriben

jetzt würde ich gerne mit diesem programm zusätzlich ein Firmwareupdate
machen(also einen seriellen(rs232) programmer programmieren)

habe aber leider keine ahnung und sonst keine passenden artikel zu
diesem thema gefunden.hat sich irgendjemand mit diesem thema schon mal
beschäftigt?

freue mich auf jede antwort

Michael

von Roland S. (rschmidlin)


Lesenswert?

Hallo Michael,

ich vermute mal, Du hast Dein Programm im internen Flash des
Microcontrollers laufen, oder? Du mußt bei Flash-Speicher auf jeden
Fall beachten, dass Du ihn immer nur Sektorweise löschen kannst. Um
jetzt ein neues Programm ins Flash zu laden, solltest Du zuerst ein
Kommando an Dein Hauptprogramm schicken, dass es anweist in ein
spezielles Loaderprogramm zu springen, das nur Funktionen zum Zugriff
auf das Flash und die serielle Schnittstelle besitzt. Dieses
Loaderprogramm sollte in einem eigenen Sektor laufen (Optimal wäre es,
wenn Du das Loaderprogramm in den ersten Sektor schreiben würdest und
es bei jedem Reset angesprungen wird. Dann kannst Du von ihm prüfen
lassen, ob in den höheren Sektoren ein gültiges Programm steht und
dieses gegebenenfalls anspringen. Ansonsten, z.B. wenn ein
Firmwareupdate abgebrochen wurde, bleibst Du im Loader). Wenn Du den
Loader angesprungen hast, kannst Du diesem die Anweisung geben, die
anderen Sektoren zu löschen. Wie Du das machst hängt von Deinem µC ab,
aber viele bringen eine Möglichkeit zum Flashzugriff mit. Wenn alles
gelöscht ist, bestätigt Dir der Loader dieses wiederum durch eine
Rückmeldung über die serielle Schnittstelle und Du kannst das erste
Datenpaket schicken, das der Loader im RAM puffert, ins Flash schreibt
und dann wieder bestätigt. Wenn Du alle Daten übertragen hast, weist Du
den Loader per Kommando an einen Reset durchzuführen und alles sollte
laufen.

Ein entsprechendes Protokoll für die verschiedenen Kommandos und Daten
mußt Du Dir halt nach Deinen Bedürfnissen ausdenken und Loader und
Windowssoftware entsprechend programmieren.

Der normale Bootvorgang liefe dann folgendermaßen ab:

1. Einschalten des Geräts
2. Programm läuft normal los, springt aber nicht wie bisher in
   das Hauptprogramm sondern in den Loader.
3. Loader überprüft ob gültiger Code im Flash.
4. Wenn ja:                     Wenn nein:
   Loader führt Sprung ins      Loaderprogramm bleibt aktiv und
   Hauptprogramm aus.           wartet auf Anweisungen von RS232

Ich hoffe ich konnte Dir mal ne ungefähre Idee liefern, wie Du sowas
realisieren kannst.

Gruß Roland

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.