Gibt es fertige Cloud-Dienste oder Frameworks für die drahtlose Firmware-Aktualisierung?

9

Ich habe einen Prototyp des Geräts mit eingeschränkten Ressourcen (8-Bit-MCU mit Firmware ohne Betriebssystem), das mit einem Webserver interagiert. Ich frage mich, ob es Lösungen, Frameworks oder Cloud-Dienste für die Aktualisierung meiner Gerätefirmware aus dem Internet gibt. Aus meiner Forschung geht hervor, dass es Microsoft IoT Hub gibt, aber ich befürchte, dass es nicht für solche Geräte mit eingeschränkten Ressourcen geeignet ist. Ich habe eine weitere Lösung gefunden - das mbed Cloud-Portal, aber ich bin mir nicht sicher, wie es funktioniert. Kann mir jemand über einen Rat helfen? Vielleicht gibt es einige bewährte Methoden, um Firmware-Upgrades für eingebettete Geräte auf sichere und robuste Weise drahtlos zu implementieren?

Vadimchik
quelle
Es gibt zumindest derzeit keine derartigen Dienste. Die Implementierung eines solchen Geräts ist im Allgemeinen sehr mühsam. Es kann ein Service implementiert werden, der auf einen bestimmten Gerätetyp abzielt.
Bravokeyl
Es gibt mender.io , was ungefähr das ist, was Sie wollen. Aber ich glaube, es ist ein Ziel für eingebettete "High-End" -Geräte und für 8-Bit-Knoten.
Mat

Antworten:

4

Ich werde nur diesen Teil beantworten, da ich kein "out of the box" -System für eine unbekannte Firwmare kenne.

Vielleicht gibt es einige bewährte Methoden, um Firmware-Upgrades für eingebettete Geräte auf sichere und robuste Weise drahtlos zu implementieren?

In Bezug auf die Praxis würde ich Folgendes tun:

1) Haben Sie einen sehr minimalen Bootloader, etwas so Dummes wie möglich, das nur dafür verantwortlich ist, die Firmware mit den folgenden Einschränkungen zu laden:

  • Möglichkeit, den Erfolg / Misserfolg des letzten Startvorgangs aufzuzeichnen (Rollback auf eine funktionierende Version im Falle eines Fehlers)
  • Ein Notfallprozess zur Annahme einer neuen Firmware im Falle eines katastrophalen Ausfalls (optional, könnte vermieden werden, wenn ein "gemauertes" Gerät zulässig ist).

2) Stellen Sie Ihren Speicher so ein, dass er zwei "Boot-Bänke" von angemessener Größe hat, um die zukünftige Entwicklung und das Firmware-Wachstum zu bewältigen.

3) Prüfen Sie das Firmware-Image nach dem Download, um sicherzustellen, dass es vor dem Brennen korrekt ist. Prüfen Sie die Zielbank nach dem Brennen, um sicherzustellen, dass das Booten nicht für ein fehlendes Bit fehlschlägt.

Der übersehene Punkt ist normalerweise die Prüfsumme des heruntergeladenen Images vor und nach dem Brennen, was zu einem beschädigten System führt, das auf das Gerät geschrieben wird. Die Verwendung von zwei Bänken und das Abwechseln erleichtern normalerweise den Aktualisierungsprozess.

Tensibai
quelle
5

Die mbed Cloud bietet zwar die volle Firmware-Update-Funktionalität, aber ich denke, Sie hätten Probleme, sie auf Ihre Plattform zu portieren, wenn Sie ohne Betriebssystem arbeiten. Ich glaube nicht, dass die Quelle heute offen ist, daher können Sie sie nicht einmal als Referenz verwenden. Ich bin mir auch nicht sicher, nach welchen Kriterien ich gerade Zugang bekomme.

Sie müssen über die Funktionen nachdenken, die Sie benötigen. Handelt es sich um eine groß angelegte Bereitstellung, bei der Sie in der Lage sein müssen, schrittweise Firmware-Rollouts durchzuführen, die Firmware signieren möchten oder Ihre Plattform für Personen mit physischem Zugriff vollständig offen ist? Wie wichtig ist es Ihnen, ein gemauertes Gerät ohne JTAG wiederherstellen zu können?

Realistisch gesehen sind Funktionen wie OTA-Updates wahrscheinlich etwas, das Ihre Betriebssystem- und Geräteauswahl bestimmt - sobald Sie die Entwicklungskosten berücksichtigt haben.

Sean Houlihane
quelle
5

Schauen Sie sich OTA an, die Abkürzung für Over The Air. Arduino hat diese Eigenschaft .

Sie können Aktualisierungen mit Arduino IDE, Webbrowser oder HTTP-Server vornehmen.

Die Arduino IDE-Option ist hauptsächlich für die Softwareentwicklungsphase vorgesehen. Die beiden anderen Optionen sind nach der Bereitstellung nützlicher, um das Modul manuell mit einem Webbrowser oder automatisch über einen http-Server mit Anwendungsaktualisierungen zu versorgen.

mico
quelle
Eines der unangenehmsten Dinge an dieser Bibliothek und Arduino im Allgemeinen ist mangelnde Sicherheit. Diese Lösung eignet sich für Heimwerker- oder Schulprojekte, jedoch nicht für kommerzielle Geräte. Eine besondere Sache, die ich nicht mag, ist das Fehlen jeglicher Authentifizierung: Es ist ungeschützt, Firmware durch bösartige zu ersetzen, da es einen korrekten MD5-Digest hat.
Vadimchik
4

Sie können einen Blick auf Partikel (IoT) werfen . Ich bin nicht sicher, ob sie Arduino unterstützen, aber sie bieten selbst einige billige Embedded-Boards an.

Jeroen Jacobs
quelle
3

Eine weitere interessante Plattform, die ich entdeckt habe, ist DeviceDrive . Hier ist das Video, das erklärt, wie die Dinge funktionieren. Ihr OTA-System scheint ziemlich flexibel zu sein.

Vadimchik
quelle