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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.