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?
security
microcontrollers
over-the-air-updates
Vadimchik
quelle
quelle
Antworten:
Ich werde nur diesen Teil beantworten, da ich kein "out of the box" -System für eine unbekannte Firwmare kenne.
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:
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle