Forum: Mikrocontroller und Digitale Elektronik Update Firmware in einen Rs485 Half-Duplex Bus


von user_andi (Gast)


Lesenswert?

Hallo an alle,
für ein neues Projekt von mir gibt es 20 x dieselbe Elektronik mit einem 
Controller an einen Half-Duplex RS485-Bus, verbunden mit einem PC. So 
weit so gut, nun möchte ich diese 20 Elektroniken nach Bedarf vom PC aus 
mit einer neuer Firmware flashen können. was noch zum Sagen wäre, jeder 
uC hat seine eigene Device-ID von 01-20

Nun gibt es zwei Möglichkeiten für mich diese zu flashen:

1.ich bringe jede Elektronik per Kommando in den Flash Modus, und zwinge 
die anderen nichts zu machen.

2.ich bau mir noch eine RS485-Multiplexer dazwischen und wähle mir den 
entsprechenden Kanal zur Elektronik um dann zu flashen.

Hab Ihr schon mal Erfahrung gemacht mit sowas, oder gibt es andere 
Anregungen..

Danke für eure Hilfe

von Jim M. (turboj)


Lesenswert?

3. Die Module bekommen einen Bootloader, der das RS485 Protokoll spricht
und so ein In-System Update ermöglicht.

Je nach Komplexität des RS485 Protokolls braucht das allerdings etwas 
mehr Flash Speicher, der bei z.B. ATMEL AVR oftmals zu knapp ist.

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Ich hab das relativ primitiv bei einem Projekt gelöst.
Es gibt ein Kommando, mit dem ein Teilnehmer am Bus in den Bootloader 
wechselt, damit er neu programmiert werden kann. Alle Anderen sind für 
eine Minute taubstum am Bus.
Hat bis jetzt immer problemlos geklappt.

Christian_RX7

von Frank K. (fchk)


Lesenswert?

Bei so einer Fragestellung ist es immer ganz gut zu schauen, wie es denn 
in der Industrie gemacht wird. Im Automotive-Bereich gibt es dafür die 
Netzwerkprotokolle CCP und den Nachfolger XCP. Auch wenn Du diese 
Protokolle nicht so komplett implementierst, weil sie zu komplex sind, 
kannst Du Dir doch Anregungen für Dein eigenes Projekt holen.

fchk

von user_andi (Gast)


Lesenswert?

ok..
Danke für eure Antworten.

Gruß

von Gerd E. (robberknight)


Lesenswert?

Andere Idee:

Jedes einzelne Gerät bekommt noch ein kleines SPI-Flash mit drauf. Die 
Dinger kosten nur so etwa 20 Cent rum:
http://www.mouser.de/ProductDetail/Spansion/S25FL204K0TMFI040/?qs=sGAEpiMZZMtI%252bQ06EiAoG71NWJ819OHX6LMwqJwliQE%3d

Dann kannst Du mit Deinem ganz normalem Busprotokoll, was auch gerne 
etwas komplizierter sein kann, in Ruhe das Flash füllen. Am Ende kannst 
Du eine Checksummenprüfung machen. Wenn die ok ist, startet der 
Controller neu und geht in den Bootloader. Der Bootloader muss jetzt nur 
noch die Daten vom externen Flash in den internen Programmspeicher 
kopieren. Das kann er komplett unabhängig vom Bus und der Bootloader 
bleibt klein.

Natürlich kann man das ganze auch noch erweitern, z.B. eine sicher 
funktionierende Ur-Version an einer bestimmten Stelle im externen Flash 
vorhalten. Wenn dann mal mit dem Programm was schief geht, kann man am 
Gerät einen Reset-to-Factory-Defaults-Knopf drücken und diese Version 
wird geflasht. Das wäre dann auch Endanwender-Kompatibel und spart 
eventuelle Einsätze vor Ort.

von user_andi (Gast)


Lesenswert?

Auch Danke für diese Antwort, ist auch mal eine Überlegung wert...

Danke

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.