www.mikrocontroller.net

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


Autor: Michael Hörst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roland Schmidlin (rschmidlin)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.