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