Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die OTA-Funktion für ESPith SDK x (skriptprogrammierbare Steuerung)

So implementieren Sie die OTA-Funktion für ESPith SDK x (skriptprogrammierbare Steuerung)

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-17 18:14:25911Durchsuche

Als Internet-of-Things-Gerät, das eine Fernverbindung zum Internet unterstützt, ist ein lokales oder entferntes OTA-Upgrade ebenfalls eine wichtige Funktion des Skriptprogrammierungscontrollers, da es keine Garantie dafür gibt, dass das Relay völlig frei von Fehlern ist Verwendung von Fehlern: Wenn keine OTA-Upgrade-Schnittstelle vorhanden ist, ist es schwierig, Kunden das Aktualisieren der Firmware über die serielle Schnittstelle zu ermöglichen. Der Controller kann nur im Werk aktualisiert werden. Die Kosten sind hoch und die Auswirkungen groß.

Darüber hinaus verfügt der Kunde möglicherweise über einige personalisierte Funktionen, die durch die chinesische Programmierung nicht erreicht werden können, und muss zur Umsetzung die Controller-Firmware aktualisieren.

Diese beiden Situationen müssen über die lokale oder Remote-OTA-Funktion gelöst werden.

Diese Tage haben ein wenig Zeit aufgewendet, um diese Funktion abzuschließen, die nun wie folgt zusammengefasst wird:
(1) Der FLASH des ESP8266 kann zwei Firmwares mit den Namen user1.bin bis user2.bin speichern, und die Adressen der beiden Firmwares werden durch das Bootprogramm boot.bin bestimmt, das unter der Adresse 0x0000 gespeichert ist, und die Speicheradressen sind unterschiedlich verschiedene Blitzkapazitäten.
Zum Beispiel ist der ESP8266-01S mit einer Flash-Kapazität von 1 MByte die Speicheradresse 0x01000 bzw. 0x81000, während der ESP8266-07S mit einer FLASH-Kapazität von 4 MByte die Speicheradresse 0x01000 bzw. 0x101000 ist.

(2) Rufen Sie über die Funktion system_upgrade_userbin_check den Rückgabewert ab, um das aktuell ausgeführte Programm user1.bin oder user2.bin zu erhalten. Führen Sie ein Firmware-Upgrade durch und schreiben Sie die gesamte Firmware in einen anderen Firmware-Speicherbereich. Wenn beispielsweise die aktuelle Ausführung gespeichert ist Schreiben Sie dann die Firmware in user2.bin in 0x1000 in user1.bin, schreiben Sie dann die Firmware in user2.bin an die Adresse 0x81000 (ESP8266-01S) oder 0x101000 (EPS8266-07S) und informieren Sie dann das SDK über das Schreiben über die Funktion system_upgrade_flag_set (0x02). Ist der Vorgang abgeschlossen, stellt das SDK die Systemparameter ein, sodass beim Start des ESP8266 eine andere Firmware gestartet werden kann.

3) Die offiziell empfohlene Vorgehensweise besteht darin, die Firmware über das HTTP-Protokoll auf den Cloud-Server in den Speicher herunterzuladen. Ich habe dieses Programm nicht verwendet, hauptsächlich aus zwei Gründen: Erstens, ob dieses Programm gründlich überprüft wurde und ob Ich bezweifle, dass die Datenvalidierung ausreichend berücksichtigt wird, um ein Upgrade auf Brick zu vermeiden. Zweitens erfordert dieses Programm, dass der Controller eine Verbindung zu einem externen Netzwerk herstellen kann, um Firmware von einem Server herunterzuladen, was nicht einfach ist.

Ich verwende derzeit Delphi, um eine Reihe von Firmware-Upgrade-Software zu entwickeln, die Software als TCP-Client direkt mit dem Controller zu verbinden oder eine Verbindung zum TCP-Gateway des Cloud-Servers herzustellen und diese dann an den Controller zu übertragen und dann entsprechend 512 Bytes für einen Datenrahmen, um die Firmware an den Controller zu übertragen.

Als nächstes kann dieser Logiksatz auf den Server portiert werden. Der Kunde kann die Webseite über den Browser öffnen, um die Firmware auf den Controller zu übertragen.

4) Die Integrität der Daten wird vollständig überprüft, der erste Datenrahmen wird mit einer CRC32-Prüfsumme erstellt, die Firmware wird in den Flash geschrieben und dann ausgelesen, um mit dem geschriebenen Wert zu vergleichen und gleichzeitig den Wert zu berechnen Der Wert von CRC32 und der obere Computer, der den Wert von CRC32 sendet, sind im Vergleich zu den Lese- und Schreibdaten gleich, und auch der Wert von CRC ist derselbe. Es wird davon ausgegangen, dass der Datenrahmen erfolgreich geschrieben wurde;
Gleichzeitig wird der CRC32-Wert jedes Datenrahmens und dann der CRC32-Wert weiter ausgeführt, um einen Gesamt-CRC32-Wert zu erhalten. Vergleichen Sie ihn mit dem Gesamt-CRC32-Wert, der vom Host-Computer gesendet wird. Der Wert ist derselbe, bevor die Funktion system_upgrade_flag_set aufgerufen wird( 0x02), damit das SDK zur Boot-Firmware wechseln kann.

(5) Schreiben Sie in zwei verschiedene Firmware-Bereiche. Die Firmware user1.bin und user2.bin sind nicht identisch. Für die RTOS-SDK-Entwicklung müssen Sie den Wert der Makefile-Variablen APP ändern, um user1.bin und user2 zu generieren .bin bedeutet, dass der Host-Computer entsprechend dem Controller zum aktuellen Lauf der Firmware des Speicherbereichs zurückkehrt und einen anderen Speicherbereich der an den Controller gesendeten Firmware auswählt. Der Host-Computer wählt die Firmware im anderen Speicherbereich entsprechend dem Speicherbereich der aktuell ausgeführten Firmware aus, die vom Controller zurückgegeben wird.

Wenn in beiden Speicherbereichen die gleiche Firmware verwendet wird, kann der ESP8266 nicht normal starten.

How to implement OTA function for ESPith SDK x(script programmable controller)

How to implement OTA function for ESPith SDK x(script programmable controller)

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die OTA-Funktion für ESPith SDK x (skriptprogrammierbare Steuerung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn