Ich möchte die Software aktualisieren, die auf einem Knoten mit einer ARM Cortex M4 MCU ausgeführt wird.
Ich verstehe, dass ich dazu einen Bootloader in meinem TI ARM Cortex M4-Entwicklungsboard ausführen muss , der eine Binärdatei drahtlos empfangen und bestimmte Flash-Abschnitte programmieren kann. Ich verstehe, dass die Funktionalität des Over-the-Air-Empfangs von Binärdateien zu diesem Bootloader hinzugefügt werden muss.
Das klingt alles richtig, aber ich verstehe nicht, wie dies erreicht werden kann. Wie ist es möglich, dass ich Teile des Flashs in der MCU von derselben MCU selbst programmiere?
Benötige ich zusätzliche Hardware, um die auf meinem Knoten ausgeführte Software zu aktualisieren? Alles, was ich tun möchte, ist, die Software, die auf meinem Knoten ausgeführt wird, drahtlos zu aktualisieren. Eine Mülltonne kann über HSDPA heruntergeladen werden. Zum einfachen Testen kann ich dies über Ethernet tun.
Ich würde mich sehr freuen, wenn jemand in einem detaillierteren Format erläutern könnte, wie dieser Prozess durchgeführt wird, damit ich das Verfahren verstehe. Vielen Dank.
Tatsächlich ist es ganz einfach – es gibt mehrere Methoden. Eine habe ich in diesem Thread skizziert .
Grundsätzlich werden Sie zwei separate Softwareprogramme ausführen. Betrachten Sie das folgende Setup (es ist nur ein Beispiel):
(natürlich abhängig von Ihren Anforderungen)
Jetzt lädt die Anwendung die Binärdatei herunter (wir nennen sie FW 2.0). Es wird ein spezielles Bit in Ihrem Controller setzen und einen Neustart durchführen. Ihre CPU startet immer bei Adresse 0x0000, sie lädt Ihren Bootloader. Ihr Bootloader prüft, ob das "Special"-Bit gesetzt ist und flasht dann die Binärdatei auf die Adresse 0x1000-0x2000. Anschließend wird dieses spezielle Bit zurückgesetzt, was anzeigt, dass keine neue Firmware verfügbar ist. Es wird sich dann wieder selbst zurücksetzen. Jetzt startet wieder der Bootloader - er erkennt, dass das spezielle Bit tatsächlich NICHT gesetzt ist und tut nichts, sondern führt einfach einen Sprung zu der Anwendung (0x1000) aus, von wo aus das Programm ausgeführt wird (jetzt mit der neuen Firmware).
Möglicherweise möchten Sie auch eine Option zum Ausführen einer Standard-Firmware oder zum Laden einer Firmware über UART hinzufügen, falls Ihre Anwendung nicht korrekt geschrieben werden kann oder die Stromversorgung während des Updates unterbrochen wird.
Sie können normalerweise nicht auf dieselbe Seite schreiben, die Sie ausführen, Flash ist in Segmente, Seiten und Blöcke unterteilt, die Adressen sollten im Datenblatt für diesen bestimmten Prozessor aufgeführt sein. Um es eventuell zu umgehen, wenn der Prozessor dies unterstützt, können Sie aus dem Speicher ausführen. Wenn Sie Ihren Bootloader entwerfen, sollten Sie immer Stromausfallszenarien berücksichtigen, dh woher wissen Sie, dass der Bin heruntergeladen und vollständig ohne Fehler auf Flash geschrieben wurde, was ist, wenn dies nicht der Fall ist, wie können Sie ihn wiederherstellen.
Dennis
Dennis
Tom L.
Tom L.
Dennis