Remote-Firmware-Update Arduino Nano

8

Ich arbeite an Arduino Nano (32 KB Flash-Speicher, davon 2 KB vom Bootloader, 2 KB SRAM, 1 KB EEPROM) .

Der Mikrocontroller nimmt über ein RS485- Modul Eingaben von einem elektrischen Gerät entgegen und sendet die gelesenen Daten mithilfe des GPRS A6- Moduls an einen Remote-Server . Das Produkt soll mit dem Remote-Server interagieren und in regelmäßigen Abständen Daten veröffentlichen.

Ich habe den Integrationsteil abgeschlossen und das Gerät funktioniert einwandfrei, sammelt Daten und veröffentlicht auf dem Server (ca. 10-15 km entfernt). Die einzige Herausforderung, der ich gegenüberstehe, ist , wie ich vorgehen soll , wenn es 100 solcher Geräte gibt und ich die Firmware mithilfe des Remote-Servers (oder eines anderen geeigneten Mechanismus) aktualisieren muss.

Ich habe viele Posts durchlaufen, in denen vorgeschlagen wurde, ein anderes Arduino als ISP zu verwenden. Dies könnte mein letzter Ansatz sein (da dies die endgültigen Produktkosten erhöhen würde).

Das drahtlose Firmware-Update ist wie in der Stack Exchange-Community für Low-End-Mikrocontroller noch unklar. Jede Diskussion kann für viele eine große Hilfe sein.

Ashish K.
quelle
Beschreiben Sie dem Benutzer "abgelegenen Ort", 10 Meter, 1 km, 10 km entfernt.
Bence Kaulics
@BenceKaulics Wir verwenden das GPRS-Modul, um eine Anfrage an den Mikrocontroller zu senden, der etwa 10 km entfernt ist.
Ashish K
3
Sie müssen Ihren Anwendungsfall einschließlich des Software-Stacks klarer beschreiben. Werfen Sie einen Blick auf die anderen Fragen zu drahtlosen Updates .
Sean Houlihane
Handelt es sich um eine Neuentwicklung oder versuchen Sie, ein bestehendes Produkt nachzurüsten?
Sean Houlihane
@ SeanHoulihane Es ist eine neue Entwicklung. Ich könnte mich für einen beliebigen Mikrocontroller entscheiden (Kosten sind die einzige Grenze), der Daten an einen Server an einem entfernten Standort (10 km) senden kann. Ich habe ein GPRS-Modul zum Senden von Daten verwendet und die einzige Herausforderung, vor der ich derzeit stehe, wie ich die Firmware remote aktualisieren kann.
Ashish K

Antworten:

9

Kurze Antwort: Es ist möglich.

Lange Antwort: Es ist kompliziert. Deshalb gibt es so viele, sehr schlechte Implementierungen.

Zumindest haben Sie zwei Schritte in einem Remote- / Over-the-Air-Update-Prozess.

  1. Firmware übertragen
  2. Firmware installieren.

Dies ist natürlich das absolute Minimum. Wenn Sie in Iterationen arbeiten, ist dies auch ein sehr gültiger erster Schritt. Wenn Sie mehr als ein Gerät haben, müssen Sie in der Lage sein, die richtige Firmware dem richtigen Gerät zuzuordnen . Wenn Sie die Wahrscheinlichkeit verringern möchten, dass Ihr Gerät blockiert wird, möchten Sie den Status Ihres Geräts vor und nach dem Update überprüfen. Außerdem möchten Sie den Transport sichern und den Transport so zuverlässig wie möglich und - natürlich - gestalten. haben eine Fallback-Strategie im Falle eines Update-Fehlers .

Das sind fünf weitere Schritte, die Sie zu einem zuverlässigen Produkt führen. Es gibt Best Practices für diese Dinge, die jedoch von Ihrer Projektumgebung abhängen. Vielleicht ist es etwas billiges und eine Ausfallrate von 5% bei Updates ist in Ordnung, vielleicht ist es ein Schrittmacher und sogar ein Fehler insgesamt ist inakzeptabel, weil er zu einem fatalen Szenario führt. Sie müssen Lösungen für die Grundlagen finden, die zu Ihrem Produkt passen.

Darüber hinaus gibt es Dutzende verschiedener Dinge zu beachten. Wirst du Kunden haben? Müssen Sie sie informieren? Haben sie ein Mitspracherecht bei der Aktualisierung / Installation des Updates? Befinden sich Ihre Geräte in verschiedenen Ländern? Gelten gesetzliche Beschränkungen? Treffen normative Standards zu? Wie viele Geräte aktualisieren Sie? 1? Ein Dutzend? Hunderte? Millionen?

Wenn Sie fünf Geräte aktualisieren, kann der Prozess sehr gesprächig sein. Wenn Sie Millionen aktualisieren, kann dies sehr teuer werden. Und ja, das wirkt sich auf das aus, was ich oben als ersten Schritt aufgeführt habe, nämlich das Übertragen der Firmware. Vielleicht erstellen Sie einen Schrittmacher, und die Prozesskosten von Hunderten von Nachrichten pro Update sind in Anbetracht der Alternative in Ordnung.

Dies sind nur die Fragen, die ich in zwei Minuten aufgeschrieben habe, daher ist diese Liste sicherlich nicht vollständig. Mein Punkt ist, ohne Informationen über das Szenario können wir Ihnen nicht wirklich richtig helfen.

Helmar
quelle
Vielen Dank @Helmar, ich werde die Frage so detailliert wie möglich aktualisieren. Für Mikrocontroller, die kein Betriebssystem unterstützen, auf dem sie ausgeführt werden, ist das Remote-Firmware-Update noch vage, und eine gute, klare Lösung würde mir nicht nur helfen, sondern auch vielen, die an Low-End-Entwicklungsplatinen arbeiten. Ich würde Sie bitten, dies auch nach dem Update zu überprüfen.
Ashish K
1
Möglich, solange die Plattform die Aufteilung von Flash in mindestens 3 Regionen zulässt (oder Sie möchten beim erneuten Flashen aus dem RAM laufen und über viele Ersatzteile oder einen remote bereitstellbaren JTAG verfügen).
Sean Houlihane
@ SeanHoulihane Die ATmega-Serie kann nicht aus dem RAM ausgeführt werden.
Chris Stratton