

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.

# Over-the-air aktualisiert die Demo-Anwendung
<a name="ota-demo"></a>

FreeRTOS enthält eine Demo-Anwendung, die die Funktionalität der over-the-air (OTA) -Bibliothek demonstriert. Die OTA-Demoanwendung befindet sich in der `freertos/demos/ota/ota_demo_core_mqtt/ota_demo_core_mqtt.c` oder der `freertos/demos/ota/ota_demo_core_http/ota_demo_core_http.c` Datei.

Die OTA-Demo-Anwendung führt folgende Aktionen aus:

1. Initialisiert den FreeRTOS-Netzwerk-Stacks und den MQTT-Buffer-Pool.

1. Erstellt eine Aufgabe, mit der die OTA-Bibliothek ausgeführt werden kann`vRunOTAUpdateDemo()`.

1. Erstellt einen MQTT-Client unter Verwendung von `_establishMqttConnection()`.

1. Stellt eine Verbindung zum AWS IoT MQTT-Broker her `IotMqtt_Connect()` und registriert einen MQTT-Disconnect-Callback:. `prvNetworkDisconnectCallback`

1. Ruft `OTA_AgentInit()` zum Erstellen der OTA-Task auf und registriert einen Rückruf, der nach Abschluss der OTA-Task verwendet werden soll.

1. Verwendet die MQTT-Verbindung erneut mit `xOTAConnectionCtx.pvControlClient = _mqttConnection;`

1. Wenn MQTT die Verbindung trennt, unterbricht die Anwendung den OTA-Agenten, versucht, die Verbindung mithilfe einer exponentiellen Verzögerung mit Jitter wiederherzustellen, und nimmt dann den OTA-Agenten wieder auf.

Bevor Sie OTA-Updates verwenden können, müssen Sie alle Voraussetzungen in erfüllen [FreeRTOS RTOS-Updates Over-the-Air](freertos-ota-dev.md)

Nachdem Sie die Einrichtung für OTA-Updates abgeschlossen haben, laden Sie die FreeRTOS OTA-Demo herunter, erstellen, flashen und führen Sie sie auf einer Plattform aus, die OTA-Funktionen unterstützt. Gerätespezifische Demo-Anweisungen sind für die folgenden FreeRTOS-qualifizierten Geräte verfügbar:
+ [Texas Instruments SF-LAUNCHXL CC3220](download-ota-ti.md)
+ [Microchip Curiosity MZEF PIC32](download-ota-mchip.md)
+ [Espressif ESP32](download-ota-esp.md)
+ [Laden Sie die FreeRTOS OTA-Demo auf dem Renesas N herunter, erstellen Sie sie, flashen Sie sie und führen Sie sie aus RX65](download-rx65n-ota.md)

Nachdem Sie die OTA-Demoanwendung auf Ihrem Gerät erstellt, flasht und ausgeführt haben, können Sie die AWS IoT Konsole oder die verwenden, um einen OTA-Aktualisierungsauftrag AWS CLI zu erstellen. Nachdem Sie einen OTA-Aktualisierungsauftrag erstellt haben, verbinden Sie einen Terminal-Emulator, um den Fortschritt des OTA-Updates zu sehen. Notieren Sie alle Fehler, die während des Prozesses auftreten.

Ein erfolgreicher OTA-Aktualisierungsauftrag zeigt eine Ausgabe ähnlich der Folgenden an. Einige Zeilen in diesem Beispiel wurden aus Gründen der Übersichtlichkeit aus der Liste entfernt.

```
    249 21207 [iot_thread] [ota_demo_core_mqtt.c:1850] [INFO] [MQTT]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    250 21247 [MQTT Agent Task] [core_mqtt.c:886] [INFO] [MQTT] Packet received. ReceivedBytes=601.
    251 21247 [MQTT Agent Task] [core_mqtt.c:1045] [INFO] [MQTT] De-serialized incoming PUBLISH packet: DeserializerResult=MQTTSuccess.
    252 21248 [MQTT Agent Task] [core_mqtt.c:1058] [INFO] [MQTT] State record updated. New state=MQTTPubAckSend.
    253 21249 [MQTT Agent Task] [ota_demo_core_mqtt.c:976] [INFO] [MQTT] Received job message callback, size 548.
    254 21252 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[execution.jobId: AFR_OTA-9702f1a3-b747-4c3e-a0eb-a3b0cf83ddbb]
    255 21253 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[execution.jobDocument.afr_ota.streamname: AFR_OTA-945d320b-a18b-441b-b435-4a18d4e7671f]
    256 21255 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[execution.jobDocument.afr_ota.protocols: ["MQTT"]]
    257 21256 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[filepath: aws_demos.bin]
    258 21257 [OTA Agent Task] [ota.c:1684] [INFO] [OTA] Extracted parameter: [key: value]=[filesize: 1164016]
    259 21258 [OTA Agent Task] [ota.c:1684] [INFO] [OTA] Extracted parameter: [key: value]=[fileid: 0]
    260 21259 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[certfile: ecdsa-sha256-signer.crt.pem]
    261 21260 [OTA Agent Task] [ota.c:1575] [INFO] [OTA] Extracted parameter [ sig-sha256-ecdsa: MEQCIE1SFkIHHiZAvkPpu6McJtx7SYoD... ]
    262 21261 [OTA Agent Task] [ota.c:1684] [INFO] [OTA] Extracted parameter: [key: value]=[fileType: 0]
    263 21262 [OTA Agent Task] [ota.c:2199] [INFO] [OTA] Job document was accepted. Attempting to begin the update.
    264 21263 [OTA Agent Task] [ota.c:2323] [INFO] [OTA] Job parsing success: OtaJobParseErr_t=OtaJobParseErrNone, Job name=AFR_OTA-9702f1a3-b747-4c3e-a0eb-a3b0cf83ddbb
    265 21318 [iot_thread] [ota_demo_core_mqtt.c:1850] [INFO] [MQTT]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    266 21418 [iot_thread] [ota_demo_core_mqtt.c:1850] [INFO] [MQTT]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    267 21469 [OTA Agent Task] [ota.c:938] [INFO] [OTA] Setting OTA data interface.
    268 21470 [OTA Agent Task] [ota.c:2839] [INFO] [OTA] Current State=[CreatingFile], Event=[ReceivedJobDocument], New state=[CreatingFile]
    269 21482 [MQTT Agent Task] [core_mqtt.c:886] [INFO] [MQTT] Packet received. ReceivedBytes=3.
    270 21483 [OTA Agent Task] [ota_demo_core_mqtt.c:1503] [INFO] [MQTT] SUBSCRIBED to topic $aws/things/__test_infra_thing71/streams/AFR_OTA-945d320b-a18b-441b-b435-4a18d4e7671f/data/cbor to bro
    271 21484 [OTA Agent Task] [ota.c:2839] [INFO] [OTA] Current State=[RequestingFileBlock], Event=[CreateFile], New state=[RequestingFileBlock]
    272 21518 [iot_thread] [ota_demo_core_mqtt.c:1850] [INFO] [MQTT]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    273 21532 [MQTT Agent Task] [core_mqtt_agent_command_functions.c:76] [INFO] [MQTT] Publishing message to $aws/things/__test_infra_thing71/streams/AFR_OTA-945d320b-a18b-441b-b435-4a18d4e7671f/
    274 21534 [OTA Agent Task] [ota_demo_core_mqtt.c:1553] [INFO] [MQTT] Sent PUBLISH packet to broker $aws/things/__test_infra_thing71/streams/AFR_OTA-945d320b-a18b-441b-b435-4a18d4e7671f/get/cbor
    275 21534 [OTA Agent Task] [ota_mqtt.c:1112] [INFO] [OTA] Published to MQTT topic to request the next block: topic=$aws/things/__test_infra_thing71/streams/AFR_OTA-945d320b-a18b-441b-b435-4a1
    276 21537 [OTA Agent Task] [ota.c:2839] [INFO] [OTA] Current State=[WaitingForFileBlock], Event=[RequestFileBlock], New state=[WaitingForFileBlock]
    277 21558 [MQTT Agent Task] [core_mqtt.c:886] [INFO] [MQTT] Packet received. ReceivedBytes=4217.
    278 21559 [MQTT Agent Task] [core_mqtt.c:1045] [INFO] [MQTT] De-serialized incoming PUBLISH packet: DeserializerResult=MQTTSuccess.
    279 21560 [MQTT Agent Task] [core_mqtt.c:1058] [INFO] [MQTT] State record updated. New state=MQTTPublishDone.
    280 21561 [MQTT Agent Task] [ota_demo_core_mqtt.c:1026] [INFO] [MQTT] Received data message callback, size 4120.
    281 21563 [OTA Agent Task] [ota.c:2464] [INFO] [OTA] Received valid file block: Block index=0, Size=4096
    282 21566 [OTA Agent Task] [ota.c:2683] [INFO] [OTA] Number of blocks remaining: 284
     
    ... // Output removed for brevity
     
    3672 42745 [OTA Agent Task] [ota.c:2464] [INFO] [OTA] Received valid file block: Block index=284, Size=752
    3673 42747 [OTA Agent Task] [ota.c:2633] [INFO] [OTA] Received final block of the update.
    (428298) ota_pal: No such certificate file: ecdsa-sha256-signer.crt.pem. Using certificate in ota_demo_config.h.
    3674 42818 [iot_thread] [ota_demo_core_mqtt.c:1850] [INFO] [MQTT]  Received: 285   Queued: 285   Processed: 284   Dropped: 0
    3675 42918 [iot_thread] [ota_demo_core_mqtt.c:1850] [INFO] [MQTT]  Received: 285   Queued: 285   Processed: 284   Dropped: 0
     
    ... // Output removed for brevity
     
    3678 43197 [OTA Agent Task] [ota.c:2654] [INFO] [OTA] Received entire update and validated the signature.
    3685 43215 [OTA Agent Task] [ota_demo_core_mqtt.c:862] [INFO] [MQTT] Received OtaJobEventActivate callback from OTA Agent.
     
    ... // Output removed for brevity
     
    2 39 [iot_thread] [INFO ][DEMO][390] ---------STARTING DEMO---------
     
    [0;32mI (3633) WIFI: WIFI_EVENT_STA_CONNECTED
    [0;32mI (4373) WIFI: SYSTEM_EVENT_STA_GOT_IP
     
    ... // Output removed for brevity 
     
    4 351 [sys_evt] [INFO ][DEMO][3510] Connected to WiFi access point, ip address: 255.255.255.0.
    5 351 [iot_thread] [INFO ][DEMO][3510] Successfully initialized the demo. Network type for the demo: 1
    6 351 [iot_thread] [ota_demo_core_mqtt.c:1902] [INFO] [MQTT] OTA over MQTT demo, Application version 0.9.1
    7 351 [iot_thread] [ota_demo_core_mqtt.c:1323] [INFO] [MQTT] Creating a TLS connection to <endpoint>-ats.iot.us-west-2.amazonaws.com:8883.
    9 718 [iot_thread] [core_mqtt.c:886] [INFO] [MQTT] Packet received. ReceivedBytes=2.
    10 718 [iot_thread] [core_mqtt_serializer.c:970] [INFO] [MQTT] CONNACK session present bit not set.
    11 718 [iot_thread] [core_mqtt_serializer.c:912] [INFO] [MQTT] Connection accepted.
     
    ... // Output removed for brevity
     
    17 736 [OTA Agent Task] [ota_demo_core_mqtt.c:1503] [INFO] [MQTT] SUBSCRIBED to topic $aws/things/__test_infra_thing71/jobs/notify-next to broker.
    18 737 [OTA Agent Task] [ota_mqtt.c:381] [INFO] [OTA] Subscribed to MQTT topic: $aws/things/__test_infra_thing71/jobs/notify-next
    30 818 [iot_thread] [ota_demo_core_mqtt.c:1850] [INFO] [MQTT]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    31 819 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[execution.jobId: AFR_OTA-9702f1a3-b747-4c3e-a0eb-a3b0cf83ddbb]
    32 820 [OTA Agent Task] [ota.c:1684] [INFO] [OTA] Extracted parameter: [key: value]=[execution.statusDetails.updatedBy: 589824]
    33 822 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[execution.jobDocument.afr_ota.streamname: AFR_OTA-945d320b-a18b-441b-b435-4a18d4e7671f]
    34 823 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[execution.jobDocument.afr_ota.protocols: ["MQTT"]]
    35 824 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[filepath: aws_demos.bin]
    36 825 [OTA Agent Task] [ota.c:1684] [INFO] [OTA] Extracted parameter: [key: value]=[filesize: 1164016]
    37 826 [OTA Agent Task] [ota.c:1684] [INFO] [OTA] Extracted parameter: [key: value]=[fileid: 0]
    38 827 [OTA Agent Task] [ota.c:1645] [INFO] [OTA] Extracted parameter: [key: value]=[certfile: ecdsa-sha256-signer.crt.pem]
    39 828 [OTA Agent Task] [ota.c:1575] [INFO] [OTA] Extracted parameter [ sig-sha256-ecdsa: MEQCIE1SFkIHHiZAvkPpu6McJtx7SYoD... ]
    40 829 [OTA Agent Task] [ota.c:1684] [INFO] [OTA] Extracted parameter: [key: value]=[fileType: 0]
    41 830 [OTA Agent Task] [ota.c:2102] [INFO] [OTA] In self test mode.
    42 830 [OTA Agent Task] [ota.c:1936] [INFO] [OTA] New image has a higher version number than the current image: New image version=0.9.1, Previous image version=0.9.0
    43 832 [OTA Agent Task] [ota.c:2120] [INFO] [OTA] Image version is valid: Begin testing file: File ID=0
    53 896 [OTA Agent Task] [ota.c:794] [INFO] [OTA] Beginning self-test.
    62 971 [OTA Agent Task] [ota_demo_core_mqtt.c:1553] [INFO] [MQTT] Sent PUBLISH packet to broker $aws/things/__test_infra_thing71/jobs/AFR_OTA-9702f1a3-b747-4c3e-a0eb-a3b0cf83ddbb/update to br63 971 [MQTT Agent Task] [core_mqtt.c:1045] [INFO] [MQTT] De-serialized incoming PUBLISH packet: DeserializerResult=MQTTSuccess.
    65 973 [MQTT Agent Task] [core_mqtt.c:1058] [INFO] [MQTT] State record updated. New state=MQTTPublishDone.
    64 973 [OTA Agent Task] [ota_demo_core_mqtt.c:902] [INFO] [MQTT] Successfully updated with the new image.
```

# Over-the-air Demo-Konfigurationen
<a name="ota-demo-specific-config"></a>

Bei den OTA-Demokonfigurationen handelt es sich um demospezifische Konfigurationsoptionen, die unter bereitgestellt werden. `aws_iot_ota_update_demo.c` Diese Konfigurationen unterscheiden sich von den OTA-Bibliothekskonfigurationen, die in der Konfigurationsdatei der OTA-Bibliothek bereitgestellt werden. 

**OTA\$1DEMO\$1KEEP\$1ALIVE\$1SECONDS**  
Für den MQTT-Client ist diese Konfiguration das maximale Zeitintervall, das zwischen dem Abschluss der Übertragung eines Steuerpakets und dem Beginn des Sendens des nächsten vergehen kann. In Ermangelung eines Kontrollpakets wird ein PINGREQ gesendet. Der Broker muss die Verbindung zu einem Client, der keine Nachricht oder kein PINGREQ-Paket sendet, innerhalb von eineinhalb Mal dieses Keep-Alive-Intervalls trennen. Diese Konfiguration sollte an die Anforderungen der Anwendung angepasst werden.

**OTA\$1DEMO\$1CONN\$1RETRY\$1BASE\$1INTERVAL\$1SECONDS**  
Das Basisintervall in Sekunden, bevor erneut versucht wird, die Netzwerkverbindung herzustellen. Die OTA-Demo versucht, nach diesem Basiszeitintervall erneut eine Verbindung herzustellen. Das Intervall wird nach jedem fehlgeschlagenen Versuch verdoppelt. Eine zufällige Verzögerung, bis zu einem Maximum dieser Basisverzögerung, wird ebenfalls zum Intervall hinzugefügt.

**OTA\$1DEMO\$1CONN\$1RETRY\$1MAX\$1INTERVAL\$1SECONDS**  
Das maximale Intervall in Sekunden, bevor erneut versucht wird, die Netzwerkverbindung herzustellen. Die Wiederverbindungsverzögerung wird bei jedem fehlgeschlagenen Versuch verdoppelt, sie kann jedoch nur bis zu diesem Höchstwert plus einem Jitter im gleichen Intervall ansteigen.

# Laden Sie die FreeRTOS OTA-Demo auf dem Texas Instruments SF-LAUNCHXL herunter, erstellen Sie sie, flashen Sie sie und führen Sie sie aus CC3220
<a name="download-ota-ti"></a>

**Wichtig**  <a name="deprecation-message"></a>
Diese Referenzintegration wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein vorhandenes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, finden Sie weitere Informationen unter. [Leitfaden zur Migration des Amazon-FreerTOS Github-Repositorys](github-repo-migration.md)<a name="download-demo"></a>

**Um FreeRTOS und den OTA-Democode herunterzuladen**
+ Sie können den Quellcode auf der GitHub Website unter [https://github.com/FreeRTOS/FreeRTOS](https://github.com/FreeRTOS/FreeRTOS) herunterladen. <a name="build-demo"></a>

**So erstellen Sie die Demo-Anwendung:**

1. Folgen Sie den Anweisungen unter[Erste Schritte mit FreeRTOS](freertos-getting-started.md), um das `aws_demos` Projekt in Code Composer Studio zu importieren, Ihren AWS IoT Endpunkt, Ihre Wi-Fi-SSID und Ihr Passwort sowie einen privaten Schlüssel und ein Zertifikat für Ihr Board zu konfigurieren.

1.  Öffne`freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`, kommentiere und definiere `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` oder`CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`. `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED`

1. Erstellen Sie die Lösung. Prüfen Sie, ob die Erstellung fehlerfrei ausgeführt wurde.

1. Starten Sie einen Terminalemulator und verwenden Sie die folgenden Einstellungen, um sich mit Ihrem Board zu verbinden:
   + Baudrate: 115200
   + Datenbits: 8
   + Parität: Keine
   + Stop-Bits: 1

1. Führen Sie das Projekt auf Ihrem Board aus, um zu überprüfen, ob es eine Verbindung mit dem WLAN und dem AWS IoT -MQTT-Nachrichten-Broker herstellen kann.

Bei der Ausführung sollte der Terminalemulator den folgenden Text anzeigen:

```
    0 1000 [Tmr Svc] Simple Link task created
    Device came up in Station mode
    1 2534 [Tmr Svc] Write certificate...
    2 5486 [Tmr Svc] [ERROR] Failed to destroy object. PKCS11_PAL_DestroyObject failed.
    3 5486 [Tmr Svc] Write certificate...
    4 5776 [Tmr Svc] Security alert threshold = 15
    5 5776 [Tmr Svc] Current number of alerts = 1
    6 5778 [Tmr Svc] Running Demos.
    7 5779 [iot_thread] [INFO ][DEMO][5779] ---------STARTING DEMO---------
    8 5779 [iot_thread] [INFO ][INIT][5779] SDK successfully initialized.
    Device came up in Station mode
    [WLAN EVENT] STA Connected to the AP: afrlab-pepper , BSSID: 74:83:c2:b4:46:27
    [NETAPP EVENT] IP acquired by the device
    Device has connected to afrlab-pepper
    Device IP Address is 192.168.36.176 
    9 8283 [iot_thread] [INFO ][DEMO][8282] Successfully initialized the demo. Network type for the demo: 1
    10 8283 [iot_thread] [INFO] OTA over MQTT demo, Application version 0.9.0
    11 8283 [iot_thread] [INFO] Creating a TLS connection to <endpoint>-ats.iot.us-west-2.amazonaws.com:8883.
    12 8852 [iot_thread] [INFO] Creating an MQTT connection to <endpoint>-ats.iot.us-west-2.amazonaws.com.
    13 8914 [iot_thread] [INFO] Packet received. ReceivedBytes=2.
    14 8914 [iot_thread] [INFO] CONNACK session present bit not set.
    15 8914 [iot_thread] [INFO] Connection accepted.
    16 8914 [iot_thread] [INFO] Received MQTT CONNACK successfully from broker.
    17 8914 [iot_thread] [INFO] MQTT connection established with the broker.
    18 8915 [iot_thread] [INFO]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    19 8953 [OTA Agent T] [INFO] Current State=[RequestingJob], Event=[Start], New state=[RequestingJob]
    20 9008 [MQTT Agent ] [INFO] Packet received. ReceivedBytes=3.
    21 9015 [OTA Agent T] [INFO] SUBSCRIBED to topic $aws/things/__test_infra_thing73/jobs/notify-next to broker.
    22 9015 [OTA Agent T] [INFO] Subscribed to MQTT topic: $aws/things/__test_infra_thing73/jobs/notify-next
    23 9504 [MQTT Agent ] [INFO] Publishing message to $aws/things/__test_infra_thing73/jobs/$next/get.
    24 9535 [MQTT Agent ] [INFO] Packet received. ReceivedBytes=2.
    25 9535 [MQTT Agent ] [INFO] Ack packet deserialized with result: MQTTSuccess.
    26 9536 [MQTT Agent ] [INFO] State record updated. New state=MQTTPublishDone.
    27 9537 [OTA Agent T] [INFO] Sent PUBLISH packet to broker $aws/things/__test_infra_thing73/jobs/$next/get to broker.
    28 9537 [OTA Agent T] [WARN] OTA Timer handle NULL for Timerid=0, can't stop.
    29 9537 [OTA Agent T] [INFO] Current State=[WaitingForJob], Event=[RequestJobDocument], New state=[WaitingForJob]
    30 9539 [MQTT Agent ] [INFO] Packet received. ReceivedBytes=120.
    31 9539 [MQTT Agent ] [INFO] De-serialized incoming PUBLISH packet: DeserializerResult=MQTTSuccess.
    32 9540 [MQTT Agent ] [INFO] State record updated. New state=MQTTPublishDone.
    33 9540 [MQTT Agent ] [INFO] Received job message callback, size 62.
    34 9616 [OTA Agent T] [INFO] Failed job document content check: Required job document parameter was not extracted: parameter=execution
    35 9616 [OTA Agent T] [INFO] Failed job document content check: Required job document parameter was not extracted: parameter=execution.jobId
    36 9617 [OTA Agent T] [INFO] Failed job document content check: Required job document parameter was not extracted: parameter=execution.jobDocument
    37 9617 [OTA Agent T] [INFO] Failed job document content check: Required job document parameter was not extracted: parameter=execution.jobDocument.afr_ota
    38 9617 [OTA Agent T] [INFO] Failed job document content check: Required job document parameter was not extracted: parameter=execution.jobDocument.afr_ota.protocols
    39 9618 [OTA Agent T] [INFO] Failed job document content check: Required job document parameter was not extracted: parameter=execution.jobDocument.afr_ota.files
    40 9618 [OTA Agent T] [INFO] Failed job document content check: Required job document parameter was not extracted: parameter=filesize
    41 9618 [OTA Agent T] [INFO] Failed job document content check: Required job document parameter was not extracted: parameter=fileid
    42 9619 [OTA Agent T] [INFO] Failed to parse JSON document as AFR_OTA job: DocParseErr_t=7
    43 9619 [OTA Agent T] [INFO] No active job available in received job document: OtaJobParseErr_t=OtaJobParseErrNoActiveJobs
    44 9619 [OTA Agent T] [ERROR] Failed to execute state transition handler: Handler returned error: OtaErr_t=OtaErrJobParserError
    45 9620 [OTA Agent T] [INFO] Current State=[WaitingForJob], Event=[ReceivedJobDocument], New state=[CreatingFile]
    46 9915 [iot_thread] [INFO]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    47 10915 [iot_thread] [INFO]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    48 11915 [iot_thread] [INFO]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    49 12915 [iot_thread] [INFO]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    50 13915 [iot_thread] [INFO]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
    51 14915 [iot_thread] [INFO]  Received: 0   Queued: 0   Processed: 0   Dropped: 0
```

# Laden Sie die FreeRTOS OTA-Demo auf dem Microchip Curiosity MZEF herunter, erstellen Sie sie, flashen Sie sie und führen Sie sie aus PIC32
<a name="download-ota-mchip"></a>

**Wichtig**  <a name="deprecation-message"></a>
Diese Referenzintegration wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein vorhandenes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, finden Sie weitere Informationen unter. [Leitfaden zur Migration des Amazon-FreerTOS Github-Repositorys](github-repo-migration.md)

**Anmerkung**  
In Absprache mit Microchip entfernen wir den Curiosity PIC32 MZEF (DM320104) aus dem Hauptzweig des FreeRTOS Reference Integration-Repositorys und werden ihn nicht mehr in neuen Releases anbieten. Microchip hat eine [offizielle Mitteilung](https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/DM320104) veröffentlicht, dass der PIC32 MZEF (DM320104) nicht mehr für neue Designs empfohlen wird. Auf die PIC32 MZEF-Projekte und den Quellcode kann weiterhin über die Tags der vorherigen Version zugegriffen werden. Microchip empfiehlt Kunden, das Curiosity [ PIC32MZ-EF-2.0-Entwicklungsboard](https://devices.amazonaws.com/detail/a3G0h0000077I69EAE/Curiosity-PIC32MZ-EF-2-0-Development-Board) () für neue Designs zu verwenden. DM320209 Die PIC32 MZv1 Plattform befindet sich immer noch in Version [202012.00](https://github.com/aws/amazon-freertos/tree/202012.00) des FreeRTOS Reference Integration-Repositorys. Die Plattform wird jedoch von [v202107.00](https://github.com/aws/amazon-freertos/tree/202107.00) der FreeRTOS Reference nicht mehr unterstützt.<a name="mch-dowload-demo"></a>

**Um den FreeRTOS OTA-Democode herunterzuladen**
+ Sie können den Quellcode auf der GitHub Website unter [https://github.com/FreeRTOS/FreeRTOS](https://github.com/FreeRTOS/FreeRTOS) herunterladen. <a name="mch-build-demo"></a>

**So erstellen Sie die OTA-Update Demo-Anwendung:**

1. Folgen Sie den Anweisungen unter[Erste Schritte mit FreeRTOS](freertos-getting-started.md), um das `aws_demos` Projekt in die MPLAB X IDE zu importieren, Ihren AWS IoT Endpunkt, Ihre Wi-Fi-SSID und Ihr Passwort sowie einen privaten Schlüssel und ein Zertifikat für Ihr Board zu konfigurieren.

1. Öffnen Sie die `vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h` Datei und geben Sie Ihr Zertifikat ein.

   ```
   [] = "your-certificate-key";
   ```

1. Fügen Sie den Inhalt Ihres Codesignaturzertifikats hier ein:

   ```
   #define otapalconfigCODE_SIGNING_CERTIFICATE [] = "your-certificate-key";
   ```

   Verwenden Sie das gleiche Format wie `aws_clientcredential_keys.h` — jede Zeile muss mit dem neuen Zeilenzeichen ('\$1n') enden und in Anführungszeichen eingeschlossen sein.

   Ihr Zertifikat sollte beispielsweise so aussehen:

   ```
   "-----BEGIN CERTIFICATE-----\n"
   "MIIBXTCCAQOgAwIBAgIJAM4DeybZcTwKMAoGCCqGSM49BAMCMCExHzAdBgNVBAMM\n"
   "FnRlc3Rf62lnbmVyQGFtYXpvbi5jb20wHhcNMTcxMTAzMTkxODM1WhcNMTgxMTAz\n"
   "MTkxODM2WjAhMR8wHQYDVQBBZZZ0ZXN0X3NpZ25lckBhbWF6b24uY29tMFkwEwYH\n"
   "KoZIzj0CAQYIKoZIzj0DAQcDQgAERavZfvwL1X+E4dIF7dbkVMUn4IrJ1CAsFkc8\n"
   "gZxPzn683H40XMKltDZPEwr9ng78w9+QYQg7ygnr2stz8yhh06MkMCIwCwYDVR0P\n"
   "BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMAoGCCqGSM49BAMCA0gAMEUCIF0R\n"
   "r5cb7rEUNtWOvGd05MacrgOABfSoVYvBOK9fP63WAqt5h3BaS123coKSGg84twlq\n"
   "TkO/pV/xEmyZmZdV+HxV/OM=\n"
   "-----END CERTIFICATE-----\n";
   ```

1. Installieren Sie [Python 3](https://www.python.org/downloads/) oder höher.

1. Installieren Sie `pyOpenSSL`, indem Sie `pip install pyopenssl` ausführen.

1. Kopieren Sie Ihr Codesignierungszertifikat im PEM-Format in den Pfad `demos/ota/bootloader/utility/codesigner_cert_utility/`. Benennen Sie die Zertifikatsdatei in `aws_ota_codesigner_certificate.pem` um.

1.  Öffne`freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`, kommentiere und definiere `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` oder`CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`. `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED`

1. Erstellen Sie die Lösung. Prüfen Sie, ob die Erstellung fehlerfrei ausgeführt wurde.

1. Starten Sie einen Terminalemulator und verwenden Sie die folgenden Einstellungen, um sich mit Ihrem Board zu verbinden:
   + Baudrate: 115200
   + Datenbits: 8
   + Parität: Keine
   + Stop-Bits: 1

1. Trennen Sie den Debugger von Ihrem Board und führen Sie das Projekt auf Ihrem Board aus, um sicherzustellen, dass es eine Verbindung zu Wi-Fi und dem AWS IoT MQTT-Nachrichtenbroker herstellen kann.

Wenn Sie das Projekt ausführen, sollte die MPLAB X IDE ein Ausgabefenster öffnen. Vergewissern Sie sich, dass der **ICD4**Tab ausgewählt ist. Die Ausgabe sollte folgendermaßen aussehen.

```
Bootloader version 00.09.00
[prvBOOT_Init] Watchdog timer initialized.
[prvBOOT_Init] Crypto initialized.

[prvValidateImage] Validating image at Bank : 0
[prvValidateImage] No application image or magic code present at: 0xbd000000
[prvBOOT_ValidateImages] Validation failed for image at 0xbd000000

[prvValidateImage] Validating image at Bank : 1
[prvValidateImage] No application image or magic code present at: 0xbd100000
[prvBOOT_ValidateImages] Validation failed for image at 0xbd100000

[prvBOOT_ValidateImages] Booting default image.


>0 36246 [IP-task] vDHCPProcess: offer ac140a0eip
                                                 1 36297 [IP-task] vDHCPProcess: offer ac140a0eip
                 2 36297 [IP-task]

IP Address: 172.20.10.14
3 36297 [IP-task] Subnet Mask: 255.255.255.240
4 36297 [IP-task] Gateway Address: 172.20.10.1
5 36297 [IP-task] DNS Server Address: 172.20.10.1


6 36299 [OTA] OTA demo version 0.9.2
7 36299 [OTA] Creating MQTT Client...
8 36299 [OTA] Connecting to broker...
9 38673 [OTA] Connected to broker.
10 38793 [OTA Task] [prvSubscribeToJobNotificationTopics] OK: $aws/things/devthingota/jobs/$next/get/accepted
11 38863 [OTA Task] [prvSubscribeToJobNotificationTopics] OK: $aws/things/devthingota/jobs/notify-next
12 38863 [OTA Task] [OTA_CheckForUpdate] Request #0
13 38964 [OTA] [OTA_AgentInit] Ready.
14 38973 [OTA Task] [prvParseJSONbyModel] Extracted parameter [ clientToken: 0:devthingota ]
15 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: execution
16 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: jobId
17 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: jobDocument
18 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: streamname
19 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: files
20 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: filepath
21 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: filesize
22 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: fileid
23 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: certfile
24 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: sig-sha256-ecdsa
25 38975 [OTA Task] [prvParseJobDoc] Ignoring job without ID.
26 38975 [OTA Task] [prvOTA_Close] Context->0x8003b620
27 38975 [OTA Task] [prvPAL_Abort] Abort - OK
28 39964 [OTA] State: Ready  Received: 1   Queued: 1   Processed: 1   Dropped: 0
29 40964 [OTA] State: Ready  Received: 1   Queued: 1   Processed: 1   Dropped: 0
30 41964 [OTA] State: Ready  Received: 1   Queued: 1   Processed: 1   Dropped: 0
31 42964 [OTA] State: Ready  Received: 1   Queued: 1   Processed: 1   Dropped: 0
32 43964 [OTA] State: Ready  Received: 1   Queued: 1   Processed: 1   Dropped: 0
33 44964 [OTA] State: Ready  Received: 1   Queued: 1   Processed: 1   Dropped: 0
34 45964 [OTA] State: Ready  Received: 1   Queued: 1   Processed: 1   Dropped: 0
35 46964 [OTA] State: Ready  Received: 1   Queued: 1   Processed: 1   Dropped: 0
36 47964 [OTA] State: Ready  Received: 1   Queued: 1   Processed: 1   Dropped: 0
```

Der Terminalemulator sollte den folgenden Text anzeigen:

```
AWS Validate: no valid signature in descr: 0xbd000000
AWS Validate: no valid signature in descr: 0xbd100000


>AWS Launch:  No Map performed. Running directly from address: 0x9d000020?
AWS Launch:  wait for app at: 0x9d000020
WILC1000: Initializing...
0 0 

>[None] Seed for randomizer: 1172751941
1 0 [None] Random numbers: 00004272 00003B34 00000602 00002DE3
Chip ID 1503a0

[spi_cmd_rsp][356][nmi spi]: Failed cmd response read, bus error...

[spi_read_reg][1086][nmi spi]: Failed cmd response, read reg (0000108c)...

[spi_read_reg][1116]Reset and retry 10 108c

Firmware ver. : 4.2.1

Min driver ver : 4.2.1

Curr driver ver: 4.2.1

WILC1000: Initialization successful!

Start Wi-Fi Connection...
Wi-Fi Connected
2 7219 [IP-task] vDHCPProcess: offer c0a804beip
3 7230 [IP-task] vDHCPProcess: offer c0a804beip
4 7230 [IP-task] 

IP Address: 192.168.4.190
5 7230 [IP-task] Subnet Mask: 255.255.240.0
6 7230 [IP-task] Gateway Address: 192.168.0.1
7 7230 [IP-task] DNS Server Address: 208.67.222.222


8 7232 [OTA] OTA demo version 0.9.0
9 7232 [OTA] Creating MQTT Client...
10 7232 [OTA] Connecting to broker...
11 7232 [OTA] Sending command to MQTT task.
12 7232 [MQTT] Received message 10000 from queue.
13 8501 [IP-task] Socket sending wakeup to MQTT task.
14 10207 [MQTT] Received message 0 from queue.
15 10256 [IP-task] Socket sending wakeup to MQTT task.
16 10256 [MQTT] Received message 0 from queue.
17 10256 [MQTT] MQTT Connect was accepted. Connection established.
18 10256 [MQTT] Notifying task.
19 10257 [OTA] Command sent to MQTT task passed.
20 10257 [OTA] Connected to broker.
21 10258 [OTA Task] Sending command to MQTT task.
22 10258 [MQTT] Received message 20000 from queue.
23 10306 [IP-task] Socket sending wakeup to MQTT task.
24 10306 [MQTT] Received message 0 from queue.
25 10306 [MQTT] MQTT Subscribe was accepted. Subscribed.
26 10306 [MQTT] Notifying task.
27 10307 [OTA Task] Command sent to MQTT task passed.
28 10307 [OTA Task] [OTA] Subscribed to topic: $aws/things/Microchip/jobs/$next/get/accepted

29 10307 [OTA Task] Sending command to MQTT task.
30 10307 [MQTT] Received message 30000 from queue.
31 10336 [IP-task] Socket sending wakeup to MQTT task.
32 10336 [MQTT] Received message 0 from queue.
33 10336 [MQTT] MQTT Subscribe was accepted. Subscribed.
34 10336 [MQTT] Notifying task.
35 10336 [OTA Task] Command sent to MQTT task passed.
36 10336 [OTA Task] [OTA] Subscribed to topic: $aws/things/Microchip/jobs/notify-next

37 10336 [OTA Task] [OTA] Check For Update #0
38 10336 [OTA Task] Sending command to MQTT task.
39 10336 [MQTT] Received message 40000 from queue.
40 10366 [IP-task] Socket sending wakeup to MQTT task.
41 10366 [MQTT] Received message 0 from queue.
42 10366 [MQTT] MQTT Publish was successful.
43 10366 [MQTT] Notifying task.
44 10366 [OTA Task] Command sent to MQTT task passed.
45 10376 [IP-task] Socket sending wakeup to MQTT task.
46 10376 [MQTT] Received message 0 from queue.
47 10376 [OTA Task] [OTA] Set job doc parameter [ clientToken: 0:Microchip ]
48 10376 [OTA Task] [OTA] Missing job parameter: execution
49 10376 [OTA Task] [OTA] Missing job parameter: jobId
50 10376 [OTA Task] [OTA] Missing job parameter: jobDocument
51 10378 [OTA Task] [OTA] Missing job parameter: ts_ota
52 10378 [OTA Task] [OTA] Missing job parameter: files
53 10378 [OTA Task] [OTA] Missing job parameter: streamname
54 10378 [OTA Task] [OTA] Missing job parameter: certfile
55 10378 [OTA Task] [OTA] Missing job parameter: filepath
56 10378 [OTA Task] [OTA] Missing job parameter: filesize
57 10378 [OTA Task] [OTA] Missing job parameter: sig-sha256-ecdsa
58 10378 [OTA Task] [OTA] Missing job parameter: fileid
59 10378 [OTA Task] [OTA] Missing job parameter: attr
60 10378 [OTA Task] [OTA] Returned buffer to MQTT Client.
61 11367 [OTA] [OTA] Queued: 1   Processed: 1   Dropped: 0
62 12367 [OTA] [OTA] Queued: 1   Processed: 1   Dropped: 0
63 13367 [OTA] [OTA] Queued: 1   Processed: 1   Dropped: 0
64 14367 [OTA] [OTA] Queued: 1   Processed: 1   Dropped: 0
65 15367 [OTA] [OTA] Queued: 1   Processed: 1   Dropped: 0
66 16367 [OTA] [OTA] Queued: 1   Processed: 1   Dropped: 0
```

Diese Ausgabe zeigt, dass der Microchip Curiosity PIC32 MZEF eine Verbindung zu den MQTT-Themen herstellen AWS IoT und diese abonnieren kann, die für OTA-Updates erforderlich sind. Die `Missing job parameter`-Meldungen sind erwartungsgemäß, da keine OTA-Update-Jobs ausstehen.

# Laden Sie die FreeRTOS OTA-Demo herunter, erstellen Sie sie, flashen Sie sie und führen Sie sie auf dem Espressif aus ESP32
<a name="download-ota-esp"></a>

**Wichtig**  <a name="deprecation-message"></a>
Diese Referenzintegration wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein vorhandenes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, finden Sie weitere Informationen unter. [Leitfaden zur Migration des Amazon-FreerTOS Github-Repositorys](github-repo-migration.md)

1. Laden Sie die FreeRTOS-Quelle von herunter. [GitHub](https://github.com/aws/amazon-freertos) Anweisungen finden Sie in der Datei [README.md](https://github.com/aws/amazon-freertos/blob/main/README.md). Erstellen Sie in Ihrer IDE ein Projekt, das alle erforderlichen Quellen und Bibliotheken enthält.

1. Folgen Sie den Anweisungen unter [Erste Schritte mit Espressif](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html), um die erforderliche GCC-basierte Toolchain einzurichten.

1. Öffne`freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`, kommentiere und definiere `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` oder. `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED` `CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`

1. Erstellen Sie das Demo-Projekt, indem Sie `make` im Verzeichnis `vendors/espressif/boards/esp32/aws_demos` ausführen. Sie können das Demoprogramm flashen und seine Ausgabe überprüfen, indem Sie `make flash monitor` ausführen (wie in [Erste Schritte mit Espressif](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html) beschrieben).

1. Vor der Ausführung der OTA-Update-Demo:
   + Öffne`freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`, kommentiere und definiere `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` oder`CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`. `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED`
   + Öffnen `vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h` und kopieren Sie Ihr SHA-256/ECDSA-Codesignaturzertifikat in:

     ```
     #define otapalconfigCODE_SIGNING_CERTIFICATE [] = "your-certificate-key";
     ```

# Laden Sie die FreeRTOS OTA-Demo auf dem Renesas N herunter, erstellen Sie sie, flashen Sie sie und führen Sie sie aus RX65
<a name="download-rx65n-ota"></a>

**Wichtig**  <a name="deprecation-message"></a>
Diese Referenzintegration wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein vorhandenes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, finden Sie weitere Informationen unter. [Leitfaden zur Migration des Amazon-FreerTOS Github-Repositorys](github-repo-migration.md)

In diesem Kapitel erfahren Sie, wie Sie die FreeRTOS OTA-Demoanwendungen auf dem Renesas N herunterladen, erstellen, flashen und ausführen. RX65

**Topics**
+ [

## Richten Sie Ihre Betriebsumgebung ein
](#download-rx65n-ota-environment)
+ [

## Richten Sie Ihre AWS Ressourcen ein
](#download-rx65n-ota-setup)
+ [

## Importieren, konfigurieren Sie die Header-Datei und erstellen Sie aws\$1demos und boot\$1loader
](#download-rx65n-ota-import-configure)

## Richten Sie Ihre Betriebsumgebung ein
<a name="download-rx65n-ota-environment"></a>

Die Verfahren in diesem Abschnitt verwenden die folgenden Umgebungen:
+ **IDE**: e 2 Studio 7.8.0, e 2 Studio 2020-07
+ **Toolchains**: CCRX-Compiler v3.0.1
+ **Zielgeräte:** RSKRX65 N-2 MB
+ **Debugger**: E 2, E 2 Lite-Emulator
+ **Software**: Renesas Flash-Programmierer, Renesas Secure Flash Programmer.exe, Tera Term

**Um Ihre Hardware einzurichten**

1. Connect den E 2 Lite-Emulator und die serielle USB-Schnittstelle mit Ihrem RX65 N-Board und PC.

1. Connect die Stromquelle an das RX65 N an.

## Richten Sie Ihre AWS Ressourcen ein
<a name="download-rx65n-ota-setup"></a>

1. Um die FreeRTOS-Demos ausführen zu können, benötigen Sie ein AWS Konto mit einem IAM-Benutzer, der berechtigt ist, auf Dienste zuzugreifen. AWS IoT Falls Sie dies noch nicht getan haben, folgen Sie den Schritten unter. [Richten Sie Ihr AWS Konto und Ihre Berechtigungen ein](freertos-prereqs.md#freertos-account-and-permissions)

1. Folgen Sie den Schritten unter, um OTA-Updates einzurichten[Voraussetzungen für OTA-Updates](ota-prereqs.md). Folgen Sie insbesondere den Schritten unter[Voraussetzungen für OTA-Updates mit MQTT](ota-mqtt-freertos.md).

1. Öffnen Sie die [AWS IoT -Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Verwalten** und dann **Dinge** aus, um ein Ding zu erstellen.

   Ein Ding ist eine Repräsentation eines Geräts oder einer logischen Entität in AWS IoT. Es kann ein physisches Gerät oder ein Sensor sein (beispielsweise eine Glühbirne oder ein Wandschalter). Es kann sich auch um eine logische Einheit wie eine Instanz einer Anwendung oder eine physische Entität handeln AWS IoT, die keine Verbindung zu Geräten herstellt, die dies tun (z. B. ein Auto mit Motorsensoren oder einem Bedienfeld). AWS IoT bietet ein Verzeichnis für Dinge, mit dem Sie Ihre Dinge verwalten können.

   1. Wähle „**Erstellen**“ und dann „**Ein einzelnes Ding erstellen**“.

   1. Gib einen **Namen** für dein Ding ein und wähle dann **Weiter**.

   1. Wählen Sie **Create certificate (Zertifikat erstellen)**.

   1. Laden Sie die drei erstellten Dateien herunter und wählen Sie dann **Aktivieren**. 

   1. Wählen Sie **Attach a policy (Richtlinie anfügen)** aus.  
![\[Konsolenbildschirm mit den herunterzuladenden Dateien\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/download-these-files-rx65n.png)

   1. Wählen Sie die Richtlinie aus, in der Sie sie erstellt haben[Geräterichtlinie](ota-mqtt-freertos.md#ota-mqtt-freertos-device-policy).

      Jedes Gerät, das mithilfe von MQTT ein OTA-Update erhält, muss als Ding in registriert sein AWS IoT und dem Ding muss eine Richtlinie wie die aufgelistete angehängt sein. Weitere Informationen zu den Elementen finden Sie unter den `"Action"`- und `"Resource"`-Objekten der [AWS IoT Core-Richtlinienaktionen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) und [AWS IoT Core-Aktionsressourcen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html).

**Hinweise**
      + Die `iot:Connect` Berechtigungen ermöglichen es Ihrem Gerät, eine Verbindung AWS IoT über MQTT herzustellen.
      + Die `iot:Subscribe`- und `iot:Publish`-Berechtigungen für die Themen von AWS IoT -Aufgaben (`.../jobs/*`) ermöglichen es dem verbundenen Gerät, Auftragsbenachrichtigungen und Auftragsdokumente zu empfangen und den Abschlussstatus einer Auftragsausführung zu veröffentlichen.
      + Die `iot:Subscribe` und `iot:Publish` Berechtigungen zu den Themen AWS IoT OTA-Streams (`.../streams/*`) ermöglichen es dem verbundenen Gerät, OTA-Aktualisierungsdaten von abzurufen. AWS IoT Diese Berechtigungen sind zum Ausführen von Firmware-Updates über MQTT erforderlich.
      + Die `iot:Receive` Berechtigungen ermöglichen es AWS IoT Core , Nachrichten zu diesen Themen auf dem angeschlossenen 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.

1. Um ein Codesignaturprofil zu erstellen und ein Codesignaturzertifikat zu registrieren. AWS

   1. Informationen zur Erstellung der Schlüssel und der Zertifizierung finden Sie in Abschnitt 7.3 „Generieren von SHA256 ECDSA-Schlüsselpaaren mit OpenSSL“ in der Designrichtlinie für [MCU Firmware-Updates von Renesas](https://www.renesas.com/us/en/document/apn/renesas-mcu-firmware-update-design-policy).

   1. Öffnen Sie die [AWS IoT -Konsole](https://console.aws.amazon.com/iot/home). ****Wählen Sie im linken Navigationsbereich Verwalten und dann Jobs aus.**** Wählen Sie **Job erstellen** und dann **OTA-Aktualisierungsjob erstellen** aus. 

   1. **Wählen Sie unter Zu aktualisierende Geräte** auswählen die **Option Auswählen** und dann das Objekt aus, das Sie zuvor erstellt haben. Klicken Sie auf **Weiter**. 

   1. Gehen Sie auf der Seite **Create a FreeRTOS OTA update job** wie folgt vor:

      1. **Wählen Sie für Wählen Sie das Protokoll für die Firmware-Imageübertragung** **die Option MQTT aus.** 

      1. **Wählen Sie für Wählen Sie Ihr Firmware-Image aus und signieren** **Sie die Option Ein neues Firmware-Image für mich** signieren. 

      1. Wählen Sie **unter Code Signing-Profil** die Option **Create** aus.

      1. Geben **Sie im Fenster Codesignaturprofil erstellen einen** **Profilnamen** ein. Wählen Sie für die **Gerätehardwareplattform** **Windows Simulator** aus. Wählen Sie für das **Codesignaturzertifikat** **Import** aus.

      1. Suchen Sie nach dem Zertifikat (`secp256r1.crt`), dem privaten Schlüssel des Zertifikats (`secp256r1.key`) und der Zertifikatskette (`ca.crt`).

      1. Geben Sie einen **Pfadnamen des Codesignaturzertifikats auf dem Gerät ein**. Wählen Sie die Option **Erstellen** aus.

1. Gehen Sie wie unter beschrieben vor AWS IoT, um Zugriff auf das Codesigning für zu gewähren. [Gewähren Sie Zugriff auf die Codesignatur für AWS IoT](code-sign-policy.md) 

Wenn Sie Tera Term nicht auf Ihrem PC installiert haben, können Sie es von [https://ttssh2.osdn.jp/index.html.en](https://ttssh2.osdn.jp/index.html.en) herunterladen und wie hier gezeigt einrichten. Stellen Sie sicher, dass Sie den seriellen USB-Anschluss Ihres Geräts an Ihren PC anschließen.

![\[Einrichtungsfenster für die serielle Schnittstelle von Tera Term\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/tera-team-rx65n.png)


## Importieren, konfigurieren Sie die Header-Datei und erstellen Sie aws\$1demos und boot\$1loader
<a name="download-rx65n-ota-import-configure"></a>

Zu Beginn wählen Sie die neueste Version des FreeRTOS-Pakets aus. Diese wird automatisch aus dem Projekt heruntergeladen GitHub und in das Projekt importiert. Auf diese Weise können Sie sich auf die Konfiguration von FreeRTOS und das Schreiben von Anwendungscode konzentrieren.

1. Starten Sie e 2 Studio.

1. Wählen Sie in **Datei** und dann **Importieren** aus.

1. Wählen Sie das **Renesas GitHub FreeRTOS (mit IoT-Bibliotheken**) -Projekt aus.  
![\[e-squared Studio-Importfenster\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/import-renesas-project-rx65n.png)

1. Wählen **Sie Nach weiterer Version suchen...**, um das Download-Dialogfeld aufzurufen.  
![\[e-squared Studio Download-Dialogfenster\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/check-more-version-rx65n.png)

1. Wählen Sie das neueste Paket aus.  
![\[Dialogfenster zum Herunterladen des E-squared Studio-Moduls\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/choose-latest-version-rx65n.png)

1. Wählen Sie **Zustimmen**, um die Endbenutzer-Lizenzvereinbarung zu akzeptieren.  
![\[EULA-Dialog von e-squared Studio\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/eula-rx65n.png)

1. Warten Sie, bis der Download abgeschlossen ist.  
![\[Fortschrittsbalken herunterladen\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/downloading-rx65n.png)

1. **Wählen Sie die Projekte **aws\$1demos** und **boot\$1loader aus und klicken Sie dann auf Fertig** stellen, um sie zu importieren.**  
![\[Fenster „Projekte importieren“\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/import-projects-rx65n.png)

1. Öffnen Sie für beide Projekte die Projekteigenschaften. Wählen Sie im Navigationsbereich **Tool Chain Editor** aus.

   1. Wählen Sie die **Aktuelle Toolchain** aus.

   1. Wählen Sie den **aktuellen Builder**.  
![\[Eigenschaftenfenster von e-squared Studio\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/project-properties-rx65n.png)

1. Wählen Sie im Navigationsbereich **Settings** (Einstellungen). **Wählen Sie die Registerkarte **Toolchain** und dann die Toolketten-Version aus.**  
![\[Einstellungen für die Toolchainintegration für Renesas CCRX Version v3.01.00, mit der Option, die Toolchain zu ändern.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/project-properties-toolchain-rx65n.png)

   ****Wählen Sie die Registerkarte **Werkzeugeinstellungen, erweitern Sie den Konverter** und wählen Sie dann Ausgabe.**** Vergewissern Sie sich, dass im Hauptfenster die Option **Hex-Datei ausgeben** ausgewählt ist, und wählen Sie dann den **Ausgabedateityp**.  
![\[Das Fenster mit den C/C++-Build-Konfigurationseinstellungen zeigt Compiler- und Linker-Optionen wie Ausgabe-Hex-Datei, Ausgabedateityp, Ausgabeverzeichnis und Optionen zur Dateiaufteilung.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/project-properties-settings-rx65n.png)  
![\[Baum mit Schnittstelleneinstellungen mit Optionen für Stack Analysis, Tool Chain Editor, C/C++ General, MCU, Projektreferenzen usw.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/project-properties-settings-2-rx65n.png)

1. Öffnen Sie im Bootloader-Projekt den öffentlichen Schlüssel `projects\renesas\rx65n-rsk\e2studio\boot_loader\src\key\code_signer_public_key.h` und geben Sie ihn ein. Informationen zum Erstellen eines öffentlichen Schlüssels finden Sie unter [So implementieren Sie FreeRTOS OTA mithilfe von Amazon Web Services auf RX65 N und in](https://www.renesas.com/us/en/document/apn/rx-family-how-implement-freertos-ota-using-amazon-web-services-rx65n) Abschnitt 7.3 „Generieren von SHA256 ECDSA-Schlüsselpaaren mit OpenSSL“ in der Designrichtlinie für MCU Firmware-Updates von [Renesas](https://www.renesas.com/us/en/document/apn/renesas-mcu-firmware-update-design-policy).  
![\[Der Code-Editor zeigt eine C-Header-Datei mit der Definition für CODE_SIGNER_PUBLIC_KEY und eine PEM-kodierte öffentliche Schlüsselvariable für den Codesigner.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/open-bootloader-project-rx65n.png)

   Erstellen `boot_loader.mot` Sie dann das zu erstellende Projekt.

1. Öffnen Sie das `aws_demos` Projekt.

   1. Öffnen Sie die [AWS IoT -Konsole](https://console.aws.amazon.com/iot/home).

   1. Wählen Sie im linken Navigationsbereich die Option **Einstellungen** aus. Notieren Sie sich Ihren benutzerdefinierten Endpunkt im Textfeld **Gerätedatenendpunkt**.

   1. Wählen Sie „**Verwalten**“ und anschließend „**Dinge**“. Notieren Sie sich den Namen AWS IoT des Dings auf Ihrem Board.

   1. Öffnen Sie das `aws_demos` Projekt `demos/include/aws_clientcredential.h` und geben Sie die folgenden Werte an.

      ```
      #define clientcredentialMQTT_BROKER_ENDPOINT[] = "Your AWS IoT endpoint";
      #define clientcredentialIOT_THING_NAME "The AWS IoT thing name of your board"
      ```  
![\[Codeausschnitt mit dem Namen des Dings und AWS IoT den Konfigurationseinstellungen für den Broker-Endpunkt.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/client-credential-rx65n.png)

   1. Öffnen Sie die `tools/certificate_configuration/CertificateConfigurator.html` Datei.

   1. Importieren Sie die Zertifikats-PEM-Datei und die PEM-Datei mit dem privaten Schlüssel, die Sie zuvor heruntergeladen haben.

   1. Wählen Sie **Generate and save aws\$1clientcredentials al\$1keys.h** und ersetzen Sie diese Datei im Verzeichnis. `demos/include/`  
![\[Zertifikatkonfigurationstool mit Feldern für die Bereitstellung von Client-Zertifikaten und PEM-Dateien mit privaten Schlüsseln von der AWS IoT Konsole aus sowie einer Schaltfläche zum Generieren und Speichern der Datei aws_clientcredentials al_keys.h.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/certificate-config-tool-rx65n.png)

   1. Öffnen Sie die Datei und geben Sie diese Werte an. `vendors/renesas/boards/rx65n-rsk/aws_demos/config_files/ota_demo_config.h`

      ```
      #define otapalconfigCODE_SIGNING_CERTIFICATE [] = "your-certificate-key";
      ```

      Wo *your-certificate-key* ist der Wert aus der Datei`secp256r1.crt`. Denken Sie daran, nach jeder Zeile der Zertifizierung „\$1“ hinzuzufügen. Weitere Informationen zur Erstellung der `secp256r1.crt` Datei finden Sie unter [So implementieren Sie FreeRTOS OTA mithilfe von Amazon Web Services auf RX65 N und in](https://www.renesas.com/us/en/document/apn/rx-family-how-implement-freertos-ota-using-amazon-web-services-rx65n) Abschnitt 7.3 „Generieren von SHA256 ECDSA-Schlüsselpaaren mit OpenSSL“ in der Designrichtlinie für MCU Firmware-Updates von [Renesas](https://www.renesas.com/us/en/document/apn/renesas-mcu-firmware-update-design-policy).  
![\[Quellcodedatei mit C-Code, der eine konstante Zeichenfolge für ein PEM-kodiertes Codesigner-Zertifikat mit geschwärzten Zertifikatsdaten definiert.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/codesigner-cert-rx65n.png)

1. **Aufgabe A: Installieren Sie die erste Version der Firmware**

   1. Öffnen Sie die `vendors/renesas/boards/board/aws_demos/config_files/aws_demo_config.h` Datei, kommentieren Sie sie `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED` und definieren Sie entweder `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` oder`CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`.

   1. Öffnen Sie die `demos/include/ aws_application_version.h` Datei und stellen Sie die ursprüngliche Version der Firmware auf ein`0.9.2`.  
![\[Codeausschnitt mit Versionsdefinitionen für eine Anwendung, einschließlich Makros für Haupt-, Neben- und Build-Versionsnummern.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/firmware-version-rx65n.png)

   1. **Ändern Sie die folgenden Einstellungen im Section Viewer.**  
![\[Das Section Viewer-Fenster mit Speicheradressen, Abschnittsnamen wie SU, SI, Registern und Schnittstellenkomponenten wie Netzwerkpuffern, Ausnahmen und Aktionsschaltflächen.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/section-viewer-rx65n.png)

   1. Wählen Sie **Build**, um die `aws_demos.mot` Datei zu erstellen.

1. Erstellen Sie die Datei `userprog.mot` mit dem Renesas Secure Flash Programmer. `userprog.mot`ist eine Kombination aus und. `aws_demos.mot` `boot_loader.mot` Sie können diese Datei auf den RX65 N-RSK flashen, um die erste Firmware zu installieren.

   1. Laden Sie [ https://github.com/renesas/Amazon-FreeRTOS-Tools](https://github.com/renesas/Amazon-FreeRTOS-Tools) herunter und öffnen Sie. `Renesas Secure Flash Programmer.exe`

   1. Wählen Sie die Registerkarte **Initial Firm** und legen Sie dann die folgenden Parameter fest:
      + **Pfad des privaten Schlüssels** — Der Speicherort von`secp256r1.privatekey`.
      + **Bootloader-Dateipfad** — Der Speicherort von `boot_loader.mot` (`projects\renesas\rx65n-rsk\e2studio\boot_loader\HardwareDebug`).
      + **Dateipfad** — Der Speicherort von `aws_demos.mot` (`projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug`).  
![\[Renesas Secure Flash Programmer-Fenster mit Feldern für MCU, Firmware-Verifizierung, Sequenznummer, AES-Schlüsselpfad und Dateipfad.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/secure-flash-rx65n.png)

   1. Erstellen Sie ein Verzeichnis mit dem Namen `init_firmware` Generate `userprog.mot` und speichern Sie es im Verzeichnis. `init_firmware` Stellen Sie sicher, dass die Generierung erfolgreich war.

1. Flashen Sie die erste Firmware auf dem RX65 N-RSK.

   1. [Laden Sie die neueste Version des Renesas Flash Programmer (Programming GUI) von - .html herunter. https://www.renesas.com/tw/ en/products/software-tools/tools/programmer/renesas flash-programmer-programming-gui](https://www.renesas.com/tw/en/products/software-tools/tools/programmer/renesas-flash-programmer-programming-gui.html) 

   1. Öffnen Sie die `vendors\renesas\rx_mcu_boards\boards\rx65n-rsk\aws_demos\flash_project\erase_from_bank\ erase.rpj` Datei, um Daten auf der Bank zu löschen.

   1. Wählen Sie **Start**, um die Bank zu löschen.  
![\[Renesas Flash Programmer-Fenster mit Projektdetails des RX Group-Mikrocontrollers, Dateipfad und Flash-Operationsoptionen wie Löschen, Programmieren und Überprüfen mit den Tasten Start und OK.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/flash-programmer-erasing-rx65n.png)

   1. **Um zu flashen, wählen Sie Durchsuchen... `userprog.mot`** und navigieren Sie zum `init_firmware` Verzeichnis, wählen Sie die `userprog.mot` Datei aus und wählen Sie **Start**.  
![\[Das Renesas Flash Programmer-Fenster mit den Einstellungen für den Löschvorgang, einschließlich der Mikrocontroller-RX-Gruppe, der Option zum Durchsuchen der Programmdatei, den Tasten Löschen und Starten sowie Statusdetails zu den ausgewählten Blöcken, die gelöscht werden sollen.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/flash-programmer-complete-rx65n.png)

1. Version 0.9.2 (erste Version) der Firmware wurde auf Ihrem N-RSK installiert. RX65 Das RX65 N-RSK-Board wartet jetzt auf OTA-Updates. Wenn Sie Tera Term auf Ihrem PC geöffnet haben, sehen Sie bei der Ausführung der ersten Firmware etwa Folgendes.

   ```
   -------------------------------------------------
   RX65N secure boot program
   -------------------------------------------------
   Checking flash ROM status.
   bank 0 status = 0xff [LIFECYCLE_STATE_BLANK]
   bank 1 status = 0xfc [LIFECYCLE_STATE_INSTALLING]
   bank info = 1. (start bank = 0)
   start installing user program.
   copy secure boot (part1) from bank0 to bank1...OK
   copy secure boot (part2) from bank0 to bank1...OK
   update LIFECYCLE_STATE from [LIFECYCLE_STATE_INSTALLING] to [LIFECYCLE_STATE_VALID]
   bank1(temporary area) block0 erase (to update LIFECYCLE_STATE)...OK
   bank1(temporary area) block0 write (to update LIFECYCLE_STATE)...OK
   swap bank...
   -------------------------------------------------
   RX65N secure boot program
   -------------------------------------------------
   Checking flash ROM status.
   bank 0 status = 0xf8 [LIFECYCLE_STATE_VALID]
   bank 1 status = 0xff [LIFECYCLE_STATE_BLANK]
   bank info = 0. (start bank = 1)
   integrity check scheme = sig-sha256-ecdsa
   bank0(execute area) on code flash integrity check...OK
   jump to user program
   0 1 [ETHER_RECEI] Deferred Interrupt Handler Task started
   1 1 [ETHER_RECEI] Network buffers: 3 lowest 3
   2 1 [ETHER_RECEI] Heap: current 234192 lowest 234192
   3 1 [ETHER_RECEI] Queue space: lowest 8
   4 1 [IP-task] InitializeNetwork returns OK
   5 1 [IP-task] xNetworkInterfaceInitialise returns 0
   6 101 [ETHER_RECEI] Heap: current 234592 lowest 233392
   7 2102 [ETHER_RECEI] prvEMACHandlerTask: PHY LS now 1
   8 3001 [IP-task] xNetworkInterfaceInitialise returns 1
   9 3092 [ETHER_RECEI] Network buffers: 2 lowest 2
   10 3092 [ETHER_RECEI] Queue space: lowest 7
   11 3092 [ETHER_RECEI] Heap: current 233320 lowest 233320
   12 3193 [ETHER_RECEI] Heap: current 233816 lowest 233120
   13 3593 [IP-task] vDHCPProcess: offer c0a80a09ip
   14 3597 [ETHER_RECEI] Heap: current 233200 lowest 233000
   15 3597 [IP-task] vDHCPProcess: offer c0a80a09ip
   16 3597 [IP-task] IP Address: 192.168.10.9
   17 3597 [IP-task] Subnet Mask: 255.255.255.0
   18 3597 [IP-task] Gateway Address: 192.168.10.1
   19 3597 [IP-task] DNS Server Address: 192.168.10.1
   20 3600 [Tmr Svc] The network is up and running
   21 3622 [Tmr Svc] Write certificate...
   22 3697 [ETHER_RECEI] Heap: current 232320 lowest 230904
   23 4497 [ETHER_RECEI] Heap: current 226344 lowest 225944
   24 5317 [iot_thread] [INFO ][DEMO][5317] ---------STARTING DEMO---------
   
   25 5317 [iot_thread] [INFO ][INIT][5317] SDK successfully initialized.
   26 5317 [iot_thread] [INFO ][DEMO][5317] Successfully initialized the demo. Network type for the demo: 4
   27 5317 [iot_thread] [INFO ][MQTT][5317] MQTT library successfully initialized.
   28 5317 [iot_thread] [INFO ][DEMO][5317] OTA demo version 0.9.2
   
   29 5317 [iot_thread] [INFO ][DEMO][5317] Connecting to broker...
   
   30 5317 [iot_thread] [INFO ][DEMO][5317] MQTT demo client identifier is rx65n-gr-rose (length 13).
   31 5325 [ETHER_RECEI] Heap: current 206944 lowest 206504
   32 5325 [ETHER_RECEI] Heap: current 206440 lowest 206440
   33 5325 [ETHER_RECEI] Heap: current 206240 lowest 206240
   38 5334 [ETHER_RECEI] Heap: current 190288 lowest 190288
   39 5334 [ETHER_RECEI] Heap: current 190088 lowest 190088
   40 5361 [ETHER_RECEI] Heap: current 158512 lowest 158168
   41 5363 [ETHER_RECEI] Heap: current 158032 lowest 158032
   42 5364 [ETHER_RECEI] Network buffers: 1 lowest 1
   43 5364 [ETHER_RECEI] Heap: current 156856 lowest 156856
   44 5364 [ETHER_RECEI] Heap: current 156656 lowest 156656
   46 5374 [ETHER_RECEI] Heap: current 153016 lowest 152040
   47 5492 [ETHER_RECEI] Heap: current 141464 lowest 139016
   48 5751 [ETHER_RECEI] Heap: current 140160 lowest 138680
   49 5917 [ETHER_RECEI] Heap: current 138280 lowest 138168
   59 7361 [iot_thread] [INFO ][MQTT][7361] Establishing new MQTT connection.
   62 7428 [iot_thread] [INFO ][MQTT][7428] (MQTT connection 81cfc8, CONNECT operation 81d0e8) Wait complete with result SUCCESS.
   63 7428 [iot_thread] [INFO ][MQTT][7428] New MQTT connection 4e8c established.
   64 7430 [iot_thread] [OTA_AgentInit_internal] OTA Task is Ready.
   65 7430 [OTA Agent T] [prvOTAAgentTask] Called handler. Current State [Ready] Event [Start] New state [RequestingJob]
   66 7431 [OTA Agent T] [INFO ][MQTT][7431] (MQTT connection 81cfc8) SUBSCRIBE operation scheduled.
   67 7431 [OTA Agent T] [INFO ][MQTT][7431] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Waiting for operation completion.
   68 7436 [ETHER_RECEI] Heap: current 128248 lowest 127992
   69 7480 [OTA Agent T] [INFO ][MQTT][7480] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Wait complete with result SUCCESS.
   70 7480 [OTA Agent T] [prvSubscribeToJobNotificationTopics] OK: $aws/things/rx65n-gr-rose/jobs/$next/get/accepted
   71 7481 [OTA Agent T] [INFO ][MQTT][7481] (MQTT connection 81cfc8) SUBSCRIBE operation scheduled.
   72 7481 [OTA Agent T] [INFO ][MQTT][7481] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Waiting for operation completion.
   73 7530 [OTA Agent T] [INFO ][MQTT][7530] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Wait complete with result SUCCESS.
   74 7530 [OTA Agent T] [prvSubscribeToJobNotificationTopics] OK: $aws/things/rx65n-gr-rose/jobs/notify-next
   75 7530 [OTA Agent T] [prvRequestJob_Mqtt] Request #0
   76 7532 [OTA Agent T] [INFO ][MQTT][7532] (MQTT connection 81cfc8) MQTT PUBLISH operation queued.
   77 7532 [OTA Agent T] [INFO ][MQTT][7532] (MQTT connection 81cfc8, PUBLISH operation 818b80) Waiting for operation completion.
   78 7552 [OTA Agent T] [INFO ][MQTT][7552] (MQTT connection 81cfc8, PUBLISH operation 818b80) Wait complete with result SUCCESS.
   79 7552 [OTA Agent T] [prvOTAAgentTask] Called handler. Current State [RequestingJob] Event [RequestJobDocument] New state [WaitingForJob]
   80 7552 [OTA Agent T] [prvParseJSONbyModel] Extracted parameter [ clientToken: 0:rx65n-gr-rose ]
   81 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: execution
   82 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: jobId
   83 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: jobDocument
   84 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: afr_ota
   85 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: protocols
   86 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: files
   87 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: filepath
   99 7651 [ETHER_RECEI] Heap: current 129720 lowest 127304
   100 8430 [iot_thread] [INFO ][DEMO][8430] State: Ready  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   101 9430 [iot_thread] [INFO ][DEMO][9430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   102 10430 [iot_thread] [INFO ][DEMO][10430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   103 11430 [iot_thread] [INFO ][DEMO][11430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   104 12430 [iot_thread] [INFO ][DEMO][12430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   105 13430 [iot_thread] [INFO ][DEMO][13430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   106 14430 [iot_thread] [INFO ][DEMO][14430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   107 15430 [iot_thread] [INFO ][DEMO][15430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   ```

1. **Aufgabe B: Aktualisieren Sie die Version Ihrer Firmware**

   1. Öffnen Sie die `demos/include/aws_application_version.h` Datei und erhöhen Sie den `APP_VERSION_BUILD` Token-Wert auf`0.9.3`.

   1. Erstellen Sie das Projekt neu.

1. Erstellen Sie die `userprog.rsu` Datei mit dem Renesas Secure Flash Programmer, um die Version Ihrer Firmware zu aktualisieren.

   1. Öffnen Sie die `Amazon-FreeRTOS-Tools\Renesas Secure Flash Programmer.exe` Datei.

   1. Wählen Sie die Registerkarte **Update Firm** und legen Sie die folgenden Parameter fest:
      + **Dateipfad** — Der Speicherort der `aws_demos.mot` Datei (`projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug`).

   1. Erstellen Sie ein Verzeichnis mit dem Namen `update _firmware`. Generieren `userprog.rsu` und speichern Sie sie im `update_firmware` Verzeichnis. Stellen Sie sicher, dass die Generierung erfolgreich war.  
![\[Renesas Secure Flash Programmer-Fenster mit MCU-Auswahl, Firmware-Verifizierungstyp, Sequenznummer, AES-MAC-Schlüsselfeld und Dateipfadeingabe zur Generierung sicherer Firmware.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/update-firmware-rx65n.png)

1. Laden Sie das Firmware-Update,`userproj.rsu`, in einen Amazon S3 S3-Bucket hoch, wie unter beschrieben[Erstellen Sie einen Amazon S3 S3-Bucket, um Ihr Update zu speichern](dg-ota-bucket.md).   
![\[Amazon S3 S3-Bucket-Verwaltungsoberfläche mit Ordnern, Uploads, Versionen und Berechtigungsoptionen\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/upload-firmware-rx65n.png)

1. Erstellen Sie einen Job zur Aktualisierung der Firmware auf dem RX65 N-RSK.

   AWS IoT Jobs ist ein Dienst, der ein oder mehrere verbundene Geräte über einen ausstehenden [Job](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) informiert. Ein Job kann verwendet werden, um eine Flotte von Geräten zu verwalten, Firmware und Sicherheitszertifikate auf Geräten zu aktualisieren oder administrative Aufgaben wie das Neustarten von Geräten und das Durchführen von Diagnosen durchzuführen.

   1. Melden Sie sich bei der [AWS IoT -Konsole](https://console.aws.amazon.com/iotv2/) an. Wählen Sie im Navigationsbereich „**Verwalten**“ und anschließend „**Jobs**“ aus.

   1. Wählen Sie **Job erstellen** und dann **OTA-Aktualisierungsjob erstellen** aus. Wählen Sie eine Sache aus und wählen Sie dann **Weiter**.

   1. Erstellen Sie einen FreeRTOS OTA-Aktualisierungsjob wie folgt:
      + **Wählen Sie MQTT.**
      + Wählen Sie das Codesignaturprofil aus, das Sie im vorherigen Abschnitt erstellt haben.
      + Wählen Sie das Firmware-Image aus, das Sie in einen Amazon S3 S3-Bucket hochgeladen haben.
      + Geben Sie als **Pfadname des Firmware-Images auf dem Gerät** ein**test**.
      + Wählen Sie die IAM-Rolle aus, die Sie im vorherigen Abschnitt erstellt haben.

   1. Wählen Sie **Weiter** aus.  
![\[Einstellungen für das Signieren von Firmware-Images und das OTA-Update mit Optionen zum Signieren neuer Firmware, zum Auswählen bereits signierter Firmware, zum Verwenden von benutzerdefinierter signierter Firmware, zum Angeben des Codesignaturprofils, der Firmware-Image-Datei, des Pfads auf dem Gerät und der IAM-Rolle für den OTA-Aktualisierungsjob.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/create-job-next-rx65n.png)

   1. Geben Sie eine ID ein und wählen Sie dann **Create**.

1. Öffnen Sie Tera Term erneut, um zu überprüfen, ob die Firmware erfolgreich auf die OTA-Demoversion 0.9.3 aktualisiert wurde.  
![\[Befehlszeilenausgabe, die die Initialisierung und Verbindung eines Threads mit einem Broker zeigt.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/update-successful-rx65n.png)

1. Stellen Sie auf der AWS IoT Konsole sicher, dass der Auftragsstatus **Erfolgreich** lautet.  
![\[Übersicht über den AFR OTA-Demo-Testauftrag, aus der hervorgeht, dass 1 Ressource erfolgreich war.\]](http://docs.aws.amazon.com/de_de/freertos/latest/userguide/images/completed-succeeded-rx65n.png)

# Tutorial: Führen Sie OTA-Updates auf Espressif ESP32 mit FreeRTOS Bluetooth Low Energy durch
<a name="ota-updates-esp32-ble"></a>

**Wichtig**  <a name="deprecation-message"></a>
Diese Referenzintegration wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein vorhandenes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, finden Sie weitere Informationen unter. [Leitfaden zur Migration des Amazon-FreerTOS Github-Repositorys](github-repo-migration.md)

Dieses Tutorial zeigt Ihnen, wie Sie einen ESP32 Espressif-Mikrocontroller aktualisieren, der mit einem MQTT Bluetooth Low Energy-Proxy auf einem Android-Gerät verbunden ist. Es aktualisiert das Gerät mithilfe von AWS IoT Over-the-air (OTA-) Aktualisierungsjobs. Das Gerät stellt AWS IoT mithilfe der Amazon Cognito Cognito-Anmeldeinformationen, die in der Android-Demo-App eingegeben wurden, eine Verbindung her. Ein autorisierter Betreiber initiiert das OTA-Update von der Cloud aus. Wenn das Gerät über die Android-Demo-App eine Verbindung herstellt, wird das OTA-Update initiiert und die Firmware auf dem Gerät aktualisiert. 

FreeRTOS-Versionen 2019.06.00 Major und höher beinhalten Bluetooth Low Energy MQTT-Proxyunterstützung, die für die Wi-Fi-Bereitstellung und sichere Verbindungen zu Diensten verwendet werden kann. AWS IoT Mithilfe der Bluetooth Low Energy-Funktion können Sie Geräte mit geringem Stromverbrauch erstellen, die zur Konnektivität mit einem Mobilgerät gekoppelt werden können, ohne dass WLAN erforderlich ist. Geräte können mithilfe von MQTT kommunizieren, indem sie sich über Android oder iOS Bluetooth Low Energy verbinden SDKs , die Generic Access Profile (GAP) und Generic Attributes (GATT) -Profile verwenden.

Hier sind die Schritte, die wir befolgen werden, um OTA-Updates über Bluetooth Low Energy zuzulassen:

1. **Speicher konfigurieren:** Erstellen Sie einen Amazon S3 S3-Bucket und Richtlinien und konfigurieren Sie einen Benutzer, der Updates durchführen kann.

1. **Erstellen Sie ein Codesignaturzertifikat:** Erstellen Sie ein Signaturzertifikat und ermöglichen Sie es dem Benutzer, Firmware-Updates zu signieren.

1. **Amazon Cognito Cognito-Authentifizierung konfigurieren:** Erstellen Sie einen Anmeldeinformationsanbieter, einen Benutzerpool und Anwendungszugriff auf den Benutzerpool.

1. **FreeRTOS konfigurieren:** Bluetooth Low Energy, Client-Anmeldeinformationen und das öffentliche Code-Signing-Zertifikat einrichten.

1. **Eine Android-App konfigurieren:** Richten Sie einen Anbieter für Anmeldeinformationen und einen Benutzerpool ein und stellen Sie die Anwendung auf einem Android-Gerät bereit.

1. **Führen Sie das OTA-Aktualisierungsskript aus:** Verwenden Sie das OTA-Aktualisierungsskript, um ein OTA-Update zu initiieren.

Weitere Informationen zur Funktionsweise der Updates finden Sie unter[FreeRTOS RTOS-Updates Over-the-Air](freertos-ota-dev.md). Weitere Informationen zur Einrichtung der Bluetooth Low Energy MQTT-Proxyfunktion finden Sie im Beitrag [Using Bluetooth Low Energy with FreeRTOS on ESP32 Espressif](https://aws.amazon.com/blogs/iot/using-bluetooth-low-energy-with-amazon-freertos-on-espressif-esp32/) von Richard Kang.

## Voraussetzungen
<a name="ota-updates-esp32-ble-prereq"></a>

Um die Schritte in diesem Tutorial durchzuführen, benötigen Sie die folgenden Ressourcen:
+ Ein ESP32 Entwicklungsboard.
+ Ein MicroUSB-zu-USB-A-Kabel.
+ Ein AWS Konto (das kostenlose Kontingent ist ausreichend).
+ Ein Android-Telefon mit Android v 6.0 oder höher und Bluetooth-Version 4.2 oder höher.

Auf Ihrem Entwicklungscomputer benötigen Sie:
+ Ausreichender Festplattenspeicher (\$1500 MB) für die Xtensa-Toolchain und den FreeRTOS-Quellcode und Beispiele.
+ Android Studio ist installiert.
+ Das [AWS CLI](https://aws.amazon.com/cli/)installierte.
+ Python3 installiert.
+ Das [boto3 AWS Software Developer Kit (SDK) für Python](https://github.com/boto/boto3).

Bei den Schritten in diesem Tutorial wird davon ausgegangen, dass die Xtensa-Toolchain, ESP-IDF und FreeRTOS-Code im Verzeichnis in Ihrem Home-Verzeichnis installiert sind. `/esp` Sie müssen zu Ihrer Variablen etwas hinzufügen. `~/esp/xtensa-esp32-elf/bin` `$PATH`

## Schritt 1: Speicher konfigurieren
<a name="ota-updates-esp32-ble-step1"></a>

1. [Erstellen Sie einen Amazon S3 S3-Bucket, um Ihr Update zu speichern](dg-ota-bucket.md)mit aktivierter Versionierung zum Speichern der Firmware-Images.

1. [Erstellen einer OTA-Update-Servicerolle](create-service-role.md)und fügen Sie der Rolle die folgenden verwalteten Richtlinien hinzu:
   + AWSIotProtokollierung
   + AWSIotRuleActions
   + AWSIotThingsRegistration
   + AWSFreeRTOSOTAUpdate

1. [Erstellen Sie einen Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html), der OTA-Updates durchführen kann. Dieser Benutzer kann Firmware-Updates für IoT-Geräte im Konto signieren und bereitstellen und hat Zugriff auf OTA-Updates auf allen Geräten. Der Zugriff sollte auf vertrauenswürdige Entitäten beschränkt sein.

1. Folgen Sie den Schritten [Erstellen einer OTA-Benutzerrichtlinie](create-ota-user-policy.md) und hängen Sie es an Ihren Benutzer an.

## Schritt 2: Erstellen Sie das Codesignaturzertifikat
<a name="ota-updates-esp32-ble-step2"></a>

1. Erstellen Sie einen Amazon S3 S3-Bucket mit aktivierter Versionierung, um die Firmware-Images zu speichern.

1. Erstellen Sie ein Codesignaturzertifikat, das zum Signieren der Firmware verwendet werden kann. Notieren Sie sich das Zertifikat Amazon Resource Name (ARN), wenn das Zertifikat importiert wird.

   ```
   aws acm import-certificate --profile=ota-update-user --certificate file://ecdsasigner.crt --private-key file://ecdsasigner.key
   ```

   Beispielausgabe:

   ```
   {
   "CertificateArn": "arn:aws:acm:us-east-1:<account>:certificate/<certid>"
   }
   ```

   Sie werden den ARN später verwenden, um ein Signaturprofil zu erstellen. Wenn Sie möchten, können Sie das Profil jetzt mit dem folgenden Befehl erstellen:

   ```
   aws signer put-signing-profile --profile=ota-update-user --profile-name esp32Profile --signing-material certificateArn=arn:aws:acm:us-east-1:account:certificate/certid --platform AmazonFreeRTOS-Default --signing-parameters certname=/cert.pem
   ```

   Beispielausgabe:

   ```
   {
   "arn": "arn:aws:signer::<account>:/signing-profiles/esp32Profile"
   }
   ```

## Schritt 3: Amazon Cognito Cognito-Authentifizierungskonfiguration
<a name="ota-updates-esp32-ble-step3"></a>

**Erstellen Sie eine Richtlinie AWS IoT**

1. Melden Sie sich bei der [AWS IoT -Konsole](https://console.aws.amazon.com/iot/) an.

1. Wählen Sie in der oberen rechten Ecke der Konsole **Mein** Konto aus. Notieren Sie sich unter **Kontoeinstellungen** Ihre 12-stellige Konto-ID.

1. Wählen Sie im linken Navigationsbereich die Option **Einstellungen** aus. Notieren Sie sich unter **Gerätedatenendpunkt** den Endpunktwert. Der Endpunkt sollte ungefähr so lauten`xxxxxxxxxxxxxx.iot.us-west-2.amazonaws.com`. In diesem Beispiel ist die AWS Region „us-west-2".

1. **Wählen Sie im linken Navigationsbereich **Secure**, dann **Policies** und anschließend Create aus.** Wenn Sie in Ihrem Konto keine Richtlinien haben, wird die Meldung „Sie haben noch keine Richtlinien“ **angezeigt, und Sie können „Richtlinie erstellen**“ auswählen.

1. Geben Sie einen Namen für Ihre Richtlinie ein, zum Beispiel „esp32\$1mqtt\$1proxy\$1iot\$1policy“.

1. Wählen Sie im Abschnitt **Anweisungen hinzufügen** die Option **Erweiterter Modus** aus. Kopieren Sie die folgende JSON und fügen Sie sie in das Fenster des Richtlinien-Editors ein. Ersetze es `aws-account-id` durch deine Konto-ID und `aws-region` durch deine Region (z. B. „us-west-2").

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iot:Connect",
               "Resource": "arn:aws:iot:us-east-1:123456789012:*"
           },
           {
               "Effect": "Allow",
               "Action": "iot:Publish",
               "Resource": "arn:aws:iot:us-east-1:123456789012:*"
           },
           {
               "Effect": "Allow",
               "Action": "iot:Subscribe",
               "Resource": "arn:aws:iot:us-east-1:123456789012:*"
           },
           {
               "Effect": "Allow",
               "Action": "iot:Receive",
               "Resource": "arn:aws:iot:us-east-1:123456789012:*"
           }
       ]
   }
   ```

------

1. Wählen Sie **Erstellen** aus.

**Erstelle ein Ding AWS IoT**

1. Melden Sie sich bei der [AWS IoT -Konsole](https://console.aws.amazon.com/iot/) an.

1. Wählen Sie im linken Navigationsbereich **Manage (Verwalten)** und dann **Things (Objekte)**.

1. Wählen Sie in der oberen rechten Ecke die Option **Erstellen** aus. Wenn Sie in Ihrem Konto keine Dinge registriert haben, wird die Meldung „Sie haben noch keine Dinge“ angezeigt und Sie können „**Etwas registrieren**“ auswählen.

1. Wählen Sie auf der Seite „** AWS IoT Dinge erstellen**“ die Option „**Eine einzelne Sache erstellen**“ aus.

1. Geben Sie auf der Seite **Gerät zur Registrierung von Dingen hinzufügen** einen Namen für Ihr Ding ein (z. B. „esp32-ble“). Nur alphanumerische Zeichen, Bindestriche (-) und Unterstriche (\$1) sind zulässig. Wählen Sie **Weiter** aus.

1. Wählen Sie auf der Seite **Zertifikat für Ihr Ding hinzufügen** unter **Zertifikat überspringen und Sache erstellen die Option Ding** ohne Zertifikat **erstellen** aus. Da wir die mobile BLE-Proxy-App verwenden, die Amazon Cognito Cognito-Anmeldeinformationen für die Authentifizierung und Autorisierung verwendet, ist kein Gerätezertifikat erforderlich.

**Erstellen Sie einen Amazon Cognito App-Client**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/users/) an.

1. Wählen Sie im Navigationsbanner oben rechts die Option **Benutzerpool erstellen** aus.

1. Geben Sie den Poolnamen ein (z. B. „esp32\$1mqtt\$1proxy\$1user\$1pool“).

1. Wählen Sie **Review defaults**.

1. **Wählen Sie unter **App-Clients die Option App-Client** hinzufügen und anschließend App-Client **hinzufügen** aus.** 

1. Geben Sie einen Namen für den App-Client ein (zum Beispiel „mqtt\$1app\$1client“).

1. Stellen Sie sicher, dass die Option Clientgeheimnis **generieren ausgewählt** ist.

1. Wählen Sie **Create app client**.

1. Wählen Sie **Return to pool details (Zurück zu den Pool-Details)**.

1. Wählen Sie auf der Seite **„Überprüfen**“ des Benutzerpools die Option **Pool erstellen** aus. Sie sollten die Meldung „Ihr Benutzerpool wurde erfolgreich erstellt“ sehen. Notieren Sie sich die Pool-ID.

1. Wählen Sie im Navigationsbereich **App-Clients** aus.

1. Wählen Sie „**Details anzeigen**“. Notieren Sie sich die App-Client-ID und das App-Client-Geheimnis.

**Amazon-Cognito-Identitätspool erstellen**

1. Melden Sie sich bei der [Amazon Cognito-Konsole](https://console.aws.amazon.com/cognito/federated) an.

1. Wählen Sie **Neuen Identitätspool erstellen**.

1. Geben Sie einen Namen für den Identitätspool ein (z. B. „mqtt\$1proxy\$1identity\$1pool“).

1. **Erweitern** Sie Authentifizierungsanbieter.

1. Wählen Sie den Tab **Cognito**.

1. Geben Sie die Benutzerpool-ID und die App-Client-ID ein, die Sie sich in den vorherigen Schritten notiert haben.

1. Wählen Sie **Pool erstellen**.

1. **Wählen Sie auf der nächsten Seite Allow aus, um neue Rollen für authentifizierte und nicht authentifizierte Identitäten zu erstellen.**

1. Notieren Sie sich die Identitätspool-ID, die im folgenden Format vorliegt. `us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` 

**Fügen Sie der authentifizierten Identität eine IAM-Richtlinie hinzu**

1. Öffnen Sie die [Amazon-Cognito-Konsole](https://console.aws.amazon.com/cognito/federated).

1. Wählen Sie den Identitätspool aus, den Sie gerade erstellt haben (z. B. „mqtt\$1proxy\$1identity\$1pool“).

1. Wählen Sie **Edit identity pool (Identitäten-Pool bearbeiten)**.

1. Notieren Sie sich die der authentifizierten Rolle zugewiesene IAM-Rolle (z. B. „Cognito\$1MQTT\$1Proxy\$1Identity\$1PoolAuth\$1Role“).

1. Öffnen Sie die [IAM-Konsole](https://console.aws.amazon.com/iam/home).

1. Wählen Sie im Navigationsbereich **Roles** aus.

1. Suchen Sie nach der zugewiesenen Rolle (z. B. „Cognito\$1MQTT\$1Proxy\$1Identity\$1PoolAuth\$1Role“) und wählen Sie sie dann aus.

1. **Wählen** **Sie Inline-Richtlinie hinzufügen und anschließend JSON aus.**

1. Geben Sie die folgende Richtlinie ein:

------
#### [ JSON ]

****  

   ```
   {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
          {
             "Effect": "Allow",
             "Action": [
                "iot:AttachPolicy",
                "iot:AttachPrincipalPolicy",
                "iot:Connect",
                "iot:Publish",
                "iot:Subscribe"
             ],
             "Resource": "*"
          }]
       }
   ```

------

1. Wählen Sie **Review policy** (Richtlinie überprüfen) aus.

1. Geben Sie einen Richtliniennamen ein (z. B. „mqttProxyCognitoRichtlinie“).

1. Wählen Sie **Richtlinie erstellen** aus.

## Schritt 4: Amazon FreeRTOS konfigurieren
<a name="ota-updates-esp32-ble-step4"></a>

1. Laden Sie die neueste Version des Amazon FreeRTOS FreeRTOS-Codes aus dem [ GitHub FreeRTOS-Repo](https://github.com/aws/amazon-freertos) herunter.

1. Um die OTA-Update-Demo zu aktivieren, folgen Sie den Schritten unter. [Erste Schritte mit dem Espressif ESP32 - DevKit C und dem ESP-WROVER-KIT](getting_started_espressif.md) 

1. Nehmen Sie diese zusätzlichen Änderungen in den folgenden Dateien vor: 

   1. Öffnen `vendors/espressif/boards/esp32/aws_demos/config_files/aws_demo_config.h` und definieren`CONFIG_OTA_UPDATE_DEMO_ENABLED`.

   1. Öffnen `vendors/espressif/boards/esp32/aws_demos/common/config_files/aws_demo_config.h` und wechseln `democonfigNETWORK_TYPES` zu`AWSIOT_NETWORK_TYPE_BLE`.

   1. Öffnen Sie `demos/include/aws_clientcredential.h` und geben Sie Ihre Endpunkt-URL für ein`clientcredentialMQTT_BROKER_ENDPOINT`.

      Geben Sie den Namen Ihres Dings für ein `clientcredentialIOT_THING_NAME` (zum Beispiel „esp32-ble“). Zertifikate müssen nicht hinzugefügt werden, wenn Sie Amazon Cognito Cognito-Anmeldeinformationen verwenden.

   1. Öffnen `vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h` und ändern `configSUPPORTED_NETWORKS` und nur `configENABLED_NETWORKS` `AWSIOT_NETWORK_TYPE_BLE` zum Einbeziehen.

   1. Öffnen Sie die `vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h` Datei und geben Sie Ihr Zertifikat ein.

      ```
      #define otapalconfigCODE_SIGNING_CERTIFICATE [] = "your-certificate-key";
      ```

   Die Anwendung sollte starten und die Demoversion drucken:

   ```
   11 13498 [iot_thread] [INFO ][DEMO][134980] Successfully initialized the demo. Network type for the demo: 2
   12 13498 [iot_thread] [INFO ][MQTT][134980] MQTT library successfully initialized.
   13 13498 [iot_thread] OTA demo version 0.9.20
   14 13498 [iot_thread] Creating MQTT Client...
   ```

## Schritt 5: Konfigurieren Sie eine Android-App
<a name="ota-updates-esp32-ble-step5"></a>

1. Laden Sie das Android Bluetooth Low Energy SDK und eine Beispiel-App aus dem [amazon-freertos-ble-android GitHub -sdk-Repo](https://github.com/aws/amazon-freertos-ble-android-sdk) herunter.

1. Öffnen Sie die Datei `app/src/main/res/raw/awsconfiguration.json` und geben Sie die Pool-ID, die Region und AppClientSecret die Anweisungen im folgenden JSON-Beispiel ein. AppClientId

   ```
   {
     "UserAgent": "MobileHub/1.0",
     "Version": "1.0",
     "CredentialsProvider": {
       "CognitoIdentity": {
         "Default": {
           "PoolId": "Cognito->Manage Identity Pools->Federated Identities->mqtt_proxy_identity_pool->Edit Identity Pool->Identity Pool ID",
           "Region": "Your region (for example us-east-1)"
         }
       }
     },
   
     "IdentityManager": {
       "Default": {}
     },
   
     "CognitoUserPool": {
       "Default": {
         "PoolId": "Cognito-> Manage User Pools -> esp32_mqtt_proxy_user_pool -> General Settings -> PoolId",
         "AppClientId": "Cognito-> Manage User Pools -> esp32_mqtt_proxy_user_pool -> General Settings -> App clients ->Show Details",
         "AppClientSecret": "Cognito-> Manage User Pools -> esp32_mqtt_proxy_user_pool -> General Settings -> App clients ->Show Details",
         "Region": "Your region (for example us-east-1)"
       }
     }
   }
   ```

1. Öffnen Sie den zuvor erstellten Richtliniennamen (z. B.*esp32\$1mqtt\$1proxy\$1iot\$1policy*) `app/src/main/java/software/amazon/freertos/DemoConstants.java` und geben Sie auch die Region (z. B.*us-east-1*) ein.

1. Erstellen und installieren Sie die Demo-App.

   1. Wählen Sie in Android Studio **Build** und dann **Make Module App** aus.

   1. Wählen Sie „**Ausführen**“ und dann „**App ausführen**“. Sie können in Android Studio zum Logcat-Fenster wechseln, um Protokollnachrichten zu überwachen.

   1. Erstellen Sie auf dem Android-Gerät über den Anmeldebildschirm ein Konto.

   1. Erstellen eines Benutzers. Wenn ein Benutzer bereits existiert, geben Sie die Anmeldeinformationen ein.

   1. Erlauben Sie der Amazon FreeRTOS-Demo, auf den Standort des Geräts zuzugreifen.

   1. Suchen Sie nach Bluetooth Low Energy-Geräten.

   1. Stellen Sie den Schieberegler für das gefundene Gerät **auf Ein**.

   1. Drücken Sie **Y** an der Debug-Konsole für die ESP32 serielle Schnittstelle.

   1. Wählen Sie **Pair & Connect**.

1. Je **mehr...** Der Link wird aktiv, nachdem die Verbindung hergestellt wurde. Der Verbindungsstatus sollte sich im Logcat des Android-Geräts auf „BLE\$1CONNECTED“ ändern, wenn die Verbindung hergestellt ist:

   ```
   2019-06-06 20:11:32.160 23484-23497/software.amazon.freertos.demo I/FRD: BLE connection state changed: 0; new state: BLE_CONNECTED
   ```

1. Bevor die Nachrichten übertragen werden können, handeln das Amazon FreeRTOS FreeRTOS-Gerät und das Android-Gerät die MTU aus. Sie sollten die folgende Ausgabe in Logcat sehen:

   ```
   2019-06-06 20:11:46.720 23484-23497/software.amazon.freertos.demo I/FRD: onMTUChanged : 512 status: Success
   ```

1. Das Gerät stellt eine Verbindung zur App her und beginnt, MQTT-Nachrichten über den MQTT-Proxy zu senden. Um zu bestätigen, dass das Gerät kommunizieren kann, stellen Sie sicher, dass sich der Wert der charakteristischen Daten von MQTT\$1CONTROL auf 01 ändert:

   ```
   2019-06-06 20:12:28.752 23484-23496/software.amazon.freertos.demo D/FRD: <-<-<- Writing to characteristic: MQTT_CONTROL with data: 01
   2019-06-06 20:12:28.839 23484-23496/software.amazon.freertos.demo D/FRD: onCharacteristicWrite for: MQTT_CONTROL; status: Success; value: 01
   ```

1. Wenn die Geräte gekoppelt sind, wird auf der Konsole eine Aufforderung angezeigt. ESP32 Um BLE zu aktivieren, drücken Sie **Y.** Die Demo funktioniert erst, wenn Sie diesen Schritt ausführen. 

   ```
   E (135538) BT_GATT: GATT_INSUF_AUTHENTICATION: MITM Required
   W (135638) BT_L2CAP: l2cble_start_conn_update, the last connection update command still pending.
   E (135908) BT_SMP: Value for numeric comparison = 391840
   15 13588 [InputTask] Numeric comparison:391840
   16 13589 [InputTask] Press 'y' to confirm
   17 14078 [InputTask] Key accepted
   W (146348) BT_SMP: FOR LE SC LTK IS USED INSTEAD OF STK
   18 16298 [iot_thread] Connecting to broker...
   19 16298 [iot_thread] [INFO ][MQTT][162980] Establishing new MQTT connection.
   20 16298 [iot_thread] [INFO ][MQTT][162980] (MQTT connection 0x3ffd5754, CONNECT operation 0x3ffd586c) Waiting for operation completion.
   21 16446 [iot_thread] [INFO ][MQTT][164450] (MQTT connection 0x3ffd5754, CONNECT operation 0x3ffd586c) Wait complete with result SUCCESS.
   22 16446 [iot_thread] [INFO ][MQTT][164460] New MQTT connection 0x3ffc0ccc established.
   23 16446 [iot_thread] Connected to broker.
   ```

## Schritt 6: Führen Sie das OTA-Aktualisierungsskript aus
<a name="ota-updates-esp32-ble-step6"></a>

1. Führen Sie die folgenden Befehle aus, um die Voraussetzungen zu installieren:

   ```
   pip3 install boto3
   ```

   ```
   pip3 install pathlib
   ```

1. Inkrementieren Sie die FreeRTOS-Anwendungsversion in. `demos/include/aws_application_version.h`

1. Erstellen Sie eine neue .bin-Datei.

1. Laden Sie das Python-Skript [start\$1ota.py](https://github.com/aws-samples/amazon-freertos-ota-scripts/blob/master/scripts/start_ota.py) herunter. Um den Inhalt der Hilfe für das Skript zu sehen, führen Sie den folgenden Befehl in einem Terminalfenster aus:

   ```
   python3 start_ota.py -h
   ```

   Dies sollte etwa wie folgt aussehen:

   ```
   usage: start_ota.py [-h] --profile PROFILE [--region REGION]
                       [--account ACCOUNT] [--devicetype DEVICETYPE] --name NAME
                       --role ROLE --s3bucket S3BUCKET --otasigningprofile
                       OTASIGNINGPROFILE --signingcertificateid
                       SIGNINGCERTIFICATEID [--codelocation CODELOCATION]
   Script to start OTA update
   optional arguments:
   -h, --help            show this help message and exit
   --profile PROFILE     Profile name created using aws configure
   --region REGION       Region
   --account ACCOUNT     Account ID
   --devicetype DEVICETYPE thing|group
   --name NAME           Name of thing/group
   --role ROLE           Role for OTA updates
   --s3bucket S3BUCKET   S3 bucket to store firmware updates
   --otasigningprofile OTASIGNINGPROFILE
                         Signing profile to be created or used
   --signingcertificateid SIGNINGCERTIFICATEID
                         certificate id (not arn) to be used
   --codelocation CODELOCATION
                         base folder location (can be relative)
   ```

1. Wenn Sie die bereitgestellte CloudFormation Vorlage zum Erstellen von Ressourcen verwendet haben, führen Sie den folgenden Befehl aus:

   ```
   python3 start_ota_stream.py --profile otausercf --name esp32-ble --role ota_ble_iot_role-sample --s3bucket afr-ble-ota-update-bucket-sample --otasigningprofile abcd --signingcertificateid certificateid
   ```

   Sie sollten den Start des Updates in der ESP32 Debug-Konsole sehen: 

   ```
   38 2462 [OTA Task] [prvParseJobDoc] Job was accepted. Attempting to start transfer.
   ---
   49 2867 [OTA Task] [prvIngestDataBlock] Received file block 1, size 1024
   50 2867 [OTA Task] [prvIngestDataBlock] Remaining: 1290
   51 2894 [OTA Task] [prvIngestDataBlock] Received file block 2, size 1024
   52 2894 [OTA Task] [prvIngestDataBlock] Remaining: 1289
   53 2921 [OTA Task] [prvIngestDataBlock] Received file block 3, size 1024
   54 2921 [OTA Task] [prvIngestDataBlock] Remaining: 1288
   55 2952 [OTA Task] [prvIngestDataBlock] Received file block 4, size 1024
   56 2953 [OTA Task] [prvIngestDataBlock] Remaining: 1287
   57 2959 [iot_thread] State: Active  Received: 5   Queued: 5   Processed: 5   Dropped: 0
   ```

1. Wenn das OTA-Update abgeschlossen ist, wird das Gerät gemäß den Anforderungen des OTA-Aktualisierungsvorgangs neu gestartet. Es versucht dann, mit der aktualisierten Firmware eine Verbindung herzustellen. Wenn das Upgrade erfolgreich war, ist die aktualisierte Firmware als aktiv markiert und Sie sollten die aktualisierte Version in der Konsole sehen:

   ```
   13 13498 [iot_thread] OTA demo version 0.9.21
   ```