Voraussetzungen für OTA-Updates mit HTTP - FreeRTOS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Voraussetzungen für OTA-Updates mit HTTP

Wichtig

Dies ist eine archivierte Version des FreeRTOS-Benutzerhandbuchs zur Verwendung mit der FreeRTOS-Version 202012.00. Die neueste Version dieses Dokuments finden Sie im FreeRTOS-Benutzerhandbuch.

In diesem Abschnitt werden die allgemeinen Anforderungen für die Verwendung von HTTP zur Durchführung von over-the-air (OTA) -Updates beschrieben. Ab Version 201912.00 kann FreeRTOS OTA entweder das HTTP- oder das MQTT-Protokoll verwenden, um Firmware-Update-Images von auf Geräte zu übertragen. AWS IoT

Anmerkung
  • Obwohl das HTTP-Protokoll für die Übertragung des Firmware-Images verwendet werden kann, ist die CoreMQTT-Bibliothek dennoch erforderlich, da andere Interaktionen die CoreMQTT-Bibliothek AWS IoT Core verwenden, einschließlich des Sendens oder Empfangens von Benachrichtigungen zur Jobausführung, Jobdokumenten und Aktualisierungen des Ausführungsstatus.

  • Wenn Sie für den OTA-Aktualisierungsauftrag sowohl das MQTT- als auch das HTTP-Protokoll festlegen, bestimmt das Setup der OTA-Agent-Software auf jedem einzelnen Gerät, welches Protokoll für die Übertragung des Firmware-Images verwendet wird. Um für den OTA-Agent von der standardmäßigen MQTT-Protokollmethode zum HTTP-Protokoll zu wechseln, können Sie die Header-Dateien ändern, die zum Kompilieren des FreeRTOS-Quellcodes für das Gerät verwendet werden.

Mindestanforderungen

  • Die Gerätefirmware muss die erforderlichen FreeRTOS-Bibliotheken (CoreMQTT, HTTP, OTA Agent und deren Abhängigkeiten) enthalten.

  • FreeRTOS Version 201912.00 oder höher ist erforderlich, um die Konfiguration der OTA-Protokolle zu ändern, um die OTA-Datenübertragung über HTTP zu ermöglichen.

Konfigurationen

In der Datei \vendors\boards\board\aws_demos\config_files\aws_ota_agent_config.h finden Sie die folgende Konfiguration der OTA-Protokolle.

/** * @brief The protocol selected for OTA control operations. * This configuration parameter sets the default protocol for all the OTA control * operations like requesting an OTA job, updating the job status, and so on. * * Note - Only MQTT is supported at this time for control operations. */ #define configENABLED_CONTROL_PROTOCOL ( OTA_CONTROL_OVER_MQTT ) /** * @brief The protocol selected for OTA data operations. * This configuration parameter sets the protocols selected for the data operations * like requesting file blocks from the service. * * Note - Both MQTT and HTTP are supported for data transfer. This configuration parameter * can be set to the following - * Enable data over MQTT - ( OTA_DATA_OVER_MQTT ) * Enable data over HTTP - ( OTA_DATA_OVER_HTTP) * Enable data over both MQTT & HTTP ( OTA_DATA_OVER_MQTT | OTA_DATA_OVER_HTTP ) */ #define configENABLED_DATA_PROTOCOLS ( OTA_DATA_OVER_MQTT ) /** * @brief The preferred protocol selected for OTA data operations. * * Primary data protocol will be the protocol used for downloading files if more than * one protocol is selected while creating OTA job. Default primary data protocol is MQTT * and the following update here switches to HTTP as primary. * * Note - use OTA_DATA_OVER_HTTP for HTTP as primary data protocol. */ #define configOTA_PRIMARY_DATA_PROTOCOL ( OTA_DATA_OVER_MQTT )
So aktivieren Sie die OTA-Datenübertragung über HTTP
  1. Ändern Sie configENABLED_DATA_PROTOCOLS zu OTA_DATA_OVER_HTTP.

  2. Bei OTA-Updates können Sie beide Protokolle angeben, so dass als Protokoll entweder MQTT oder HTTP verwendet werden kann. Sie können als primäres Protokoll für das Gerät HTTP festlegen, indem Sie configOTA_PRIMARY_DATA_PROTOCOL in OTA_DATA_OVER_HTTP ändern.

Anmerkung

HTTP wird nur für OTA-Datenvorgänge unterstützt. Für Steuerungsvorgänge müssen Sie MQTT verwenden.

Gerätespezifische Konfigurationen

ESP32

Aufgrund einer begrenzten Menge an RAM müssen Sie BLE deaktivieren, wenn Sie HTTP als OTA-Datenprotokoll aktivieren. Ändern Sie in der Datei vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h nur configENABLED_NETWORKS zu AWSIOT_NETWORK_TYPE_WIFI.

/** * @brief Configuration flag which is used to enable one or more network interfaces for a board. * * The configuration can be changed any time to keep one or more network enabled or disabled. * More than one network interfaces can be enabled by using 'OR' operation with flags for * each network types supported. Flags for all supported network types can be found * in "aws_iot_network.h" * */ #define configENABLED_NETWORKS ( AWSIOT_NETWORK_TYPE_WIFI )

Speicherauslastung

Wenn MQTT für die Datenübertragung verwendet wird, ist kein zusätzlicher Heap-Speicher für die MQTT-Verbindung erforderlich, da sie von Steuerungs- und Datenvorgängen gemeinsam genutzt wird. Das Aktivieren von Daten über HTTP erfordert jedoch zusätzlichen Heap-Speicher. Im Folgenden finden Sie die Daten zur Heap-Speichernutzung für alle unterstützten Plattformen, berechnet mit der xPortGetFreeHeapSize FreeRTOS-API. Sie müssen sicherstellen, dass genügend RAM zur Verwendung der OTA-Bibliothek vorhanden ist.

Texas Instruments 0SF-LAUNCHXL CC322

Steuerungsvorgänge (MQTT): 12 KB

Datenvorgänge (HTTP): 10 KB

Anmerkung

TI verbraucht deutlich weniger RAM, da es SSL auf Hardware ausführt und somit die mbedtls-Bibliothek nicht verwendet.

Mikrochip PIC32 Curiosity MZEF

Verwaltungsvorgänge (MQTT): 65 KB

Datenvorgänge (HTTP): 43 KB

Espressif ESP32

Verwaltungsvorgänge (MQTT): 65 KB

Datenvorgänge (HTTP): 45 KB

Anmerkung

BLE on ESP32 benötigt etwa 87 KB RAM. Das RAM reicht nicht aus, um alle von ihnen zu aktivieren, was in den gerätespezifischen Konfigurationen oben erwähnt wird.

Windows Simulator

Verwaltungsvorgänge (MQTT): 82 KB

Datenvorgänge (HTTP): 63 KB

Nordic nrf52840-dk

HTTP wird nicht unterstützt.

Geräterichtlinie

Mit dieser Richtlinie können Sie entweder MQTT oder HTTP für OTA-Updates verwenden.

Jedes Gerät, das ein OTA-Update über HTTP erhält, muss als Objekt in AWS IoT registriert sein, und das Objekt muss über eine angehängte Richtlinie wie die hier aufgelistete verfügen. Weitere Informationen zu den Elementen finden Sie unter den "Action"- und "Resource"-Objekten der AWS IoT Core-Richtlinienaktionen und AWS IoT Core-Aktionsressourcen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:partition:iot:region:account:client/${iot:Connection.Thing.ThingName}" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:partition:iot:region:account:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:partition:iot:region:account:topic/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*" ] } ] }
Hinweise
  • Mit den iot:Connect-Berechtigungen kann Ihr Gerät über MQTT eine Verbindung mit AWS IoT herstellen.

  • Die iot:Publish Berechtigungen iot:Subscribe und zu den Themen AWS IoT Jobs (.../jobs/*) ermöglichen es dem verbundenen Gerät, Auftragsbenachrichtigungen und Auftragsdokumente zu empfangen und den Abschlussstatus einer Auftragsausführung zu veröffentlichen.

  • Die iot:Receive Berechtigungen ermöglichen es AWS IoT Core , Nachrichten zu diesen Themen auf dem aktuell verbundenen Gerät zu veröffentlichen. Diese Berechtigung wird bei jeder Zustellung einer MQTT-Nachricht überprüft. Sie können diese Berechtigung verwenden, um den Zugriff auf Clients zu widerrufen, die derzeit ein Thema abonniert haben.