

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Over-the-air met à jour l'application de démonstration
<a name="ota-demo"></a>

FreeRTOS inclut une application de démonstration qui démontre les fonctionnalités de over-the-air la bibliothèque (OTA). L'application de démonstration OTA se trouve dans le `freertos/demos/ota/ota_demo_core_mqtt/ota_demo_core_mqtt.c` ou le `freertos/demos/ota/ota_demo_core_http/ota_demo_core_http.c` fichier.

L'application de démonstration OTA effectue les opérations suivantes :

1. Initialise la pile de réseau FreeRTOS et le pool de tampons MQTT.

1. Crée une tâche à utiliser par la bibliothèque OTA`vRunOTAUpdateDemo()`.

1. Crée un client MQTT avec `_establishMqttConnection()`.

1. Se connecte au broker AWS IoT MQTT en utilisant `IotMqtt_Connect()` et enregistre un rappel de déconnexion MQTT :. `prvNetworkDisconnectCallback`

1. Elle appelle `OTA_AgentInit()` pour créer la tâche OTA et enregistrer un rappel à utiliser une fois la tâche OTA terminée.

1. Réutilise la connexion MQTT avec `xOTAConnectionCtx.pvControlClient = _mqttConnection;`

1. Si MQTT se déconnecte, l'application suspend l'agent OTA, tente de se reconnecter en utilisant un délai exponentiel avec instabilité, puis reprend l'agent OTA.

Avant de pouvoir utiliser les mises à jour OTA, remplissez tous les prérequis dans [Mises à jour de FreeRTOS Over-the-Air](freertos-ota-dev.md)

Une fois la configuration des mises à jour OTA terminée, téléchargez, compilez, flashez et exécutez la démo de FreeRTOS OTA sur une plateforme compatible avec les fonctionnalités OTA. Des instructions de démonstration spécifiques à l'appareil sont disponibles pour les appareils compatibles FreeRTOS suivants :
+ [Texas Instruments CC3220 SF-LAUNCHXL](download-ota-ti.md)
+ [Microchip Curiosity MZEF PIC32](download-ota-mchip.md)
+ [Espressif ESP32](download-ota-esp.md)
+ [Téléchargez, compilez, flashez et exécutez la démo de FreeRTOS OTA sur le Renesas N RX65](download-rx65n-ota.md)

Après avoir créé, flashé et exécuté l'application de démonstration OTA sur votre appareil, vous pouvez utiliser la AWS IoT console ou créer une tâche de mise à jour OTA. AWS CLI Une fois que vous avez créé une tâche de mise à jour OTA, connectez un émulateur de terminal pour afficher la progression de la mise à jour OTA. Notez les erreurs générées au cours du processus.

Une tâche de mise à jour OTA réussie affiche une sortie similaire à la suivante. Quelques lignes de cet exemple ont été supprimées de la liste par souci de concision.

```
    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 configurations de démonstration
<a name="ota-demo-specific-config"></a>

Les configurations de démonstration OTA sont des options de configuration spécifiques aux démos fournies dans. `aws_iot_ota_update_demo.c` Ces configurations sont différentes des configurations de bibliothèque OTA fournies dans le fichier de configuration de bibliothèque OTA. 

**OTA\$1DEMO\$1KEEP\$1ALIVE\$1SECONDS**  
Pour le client MQTT, cette configuration correspond à l'intervalle de temps maximal qui peut s'écouler entre la fin de la transmission d'un paquet de contrôle et le début de l'envoi du suivant. En l'absence de paquet de contrôle, un PINGREQ est envoyé. Le courtier doit déconnecter un client qui n'envoie pas de message ou de paquet PINGREQ pendant une fois et demie pendant cet intervalle de maintien en vie. Cette configuration doit être ajustée en fonction des exigences de l'application.

**OTA\$1DEMO\$1CONN\$1RETRY\$1BASE\$1INTERVAL\$1SECONDS**  
Intervalle de base, en secondes, avant une nouvelle tentative de connexion réseau. La démo OTA essaiera de se reconnecter après cet intervalle de temps de base. L'intervalle est doublé après chaque tentative infructueuse. Un délai aléatoire, jusqu'à un maximum de ce délai de base, est également ajouté à l'intervalle.

**OTA\$1DEMO\$1CONN\$1RETRY\$1MAX\$1INTERVAL\$1SECONDS**  
Intervalle maximal, en secondes, avant une nouvelle tentative de connexion réseau. Le délai de reconnexion est doublé à chaque tentative infructueuse, mais il ne peut atteindre que cette valeur maximale, plus une instabilité correspondant au même intervalle.

# Téléchargez, compilez, flashez et exécutez la démo de FreeRTOS OTA sur le Texas Instruments SF-LAUNCHXL CC3220
<a name="download-ota-ti"></a>

**Important**  <a name="deprecation-message"></a>
Cette intégration de référence est hébergée sur le référentiel Amazon-FreeRTOS, qui est obsolète. Nous vous recommandons de [commencer ici](freertos-getting-started-modular.md) lorsque vous créez un nouveau projet. Si vous possédez déjà un projet FreeRTOS basé sur le référentiel Amazon-FreeRTOS, désormais obsolète, consultez le. [Guide de migration du référentiel Github d'Amazon-FreeRTOS](github-repo-migration.md)<a name="download-demo"></a>

**Pour télécharger FreeRTOS et le code de démonstration OTA**
+ Vous pouvez télécharger le code source sur le GitHub site [https://github.com/FreeRTOS/FreeRTOS](https://github.com/FreeRTOS/FreeRTOS). <a name="build-demo"></a>

**Pour créer l'application de démonstration**

1. Suivez les instructions ci-dessous [Commencez avec FreeRTOS](freertos-getting-started.md) pour importer le `aws_demos` projet dans Code Composer Studio, configurer votre AWS IoT terminal, votre SSID et votre mot de passe Wi-Fi, ainsi qu'une clé privée et un certificat pour votre tableau.

1.  Ouvrez`freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`, commentez `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED` et définissez `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` ou`CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`.

1. Générez la solution et assurez-vous qu'elle se génère sans erreurs.

1. Démarrez un émulateur de terminal et utilisez les paramètres suivants pour vous connecter à votre carte :
   + Vitesse de transmission : 115200
   + Bits de données : 8
   + Parité : aucune
   + Bits d'arrêt : 1

1. Exécutez le projet sur votre carte pour vous assurer qu'elle peut se connecter au Wi-Fi et à l'agent de message MQTT AWS IoT .

Lorsqu'il s'exécute, l'émulateur de terminal doit afficher un texte semblable au suivant :

```
    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
```

# Téléchargez, compilez, flashez et exécutez la démo de FreeRTOS OTA sur le Microchip Curiosity MZEF PIC32
<a name="download-ota-mchip"></a>

**Important**  <a name="deprecation-message"></a>
Cette intégration de référence est hébergée sur le référentiel Amazon-FreeRTOS, qui est obsolète. Nous vous recommandons de [commencer ici](freertos-getting-started-modular.md) lorsque vous créez un nouveau projet. Si vous possédez déjà un projet FreeRTOS basé sur le référentiel Amazon-FreeRTOS, désormais obsolète, consultez le. [Guide de migration du référentiel Github d'Amazon-FreeRTOS](github-repo-migration.md)

**Note**  
En accord avec Microchip, nous supprimons le Curiosity PIC32 MZEF (DM320104) de la branche principale du référentiel FreeRTOS Reference Integration et ne le proposerons plus dans les nouvelles versions. Microchip a publié un [avis officiel indiquant](https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/DM320104) que le PIC32 MZEF (DM320104) n'est plus recommandé pour les nouveaux modèles. Les projets et le code source de PIC32 MZEF sont toujours accessibles via les balises de version précédentes. Microchip recommande aux clients d'utiliser la carte de [développement Curiosity PIC32 MZ-EF-2.0 () DM320209 pour les nouvelles](https://devices.amazonaws.com/detail/a3G0h0000077I69EAE/Curiosity-PIC32MZ-EF-2-0-Development-Board) conceptions. La PIC32 MZv1 plate-forme se trouve toujours dans la version [v202012.00 du](https://github.com/aws/amazon-freertos/tree/202012.00) référentiel FreeRTOS Reference Integration. Cependant, la plateforme n'est plus prise en charge par la version [v202107.00 du](https://github.com/aws/amazon-freertos/tree/202107.00) FreeRTOS Reference.<a name="mch-dowload-demo"></a>

**Pour télécharger le code de démonstration FreeRTOS OTA**
+ Vous pouvez télécharger le code source sur le GitHub site [https://github.com/FreeRTOS/FreeRTOS](https://github.com/FreeRTOS/FreeRTOS). <a name="mch-build-demo"></a>

**Pour créer l'application de démonstration de la mise à jour OTA**

1. Suivez les instructions ci-dessous [Commencez avec FreeRTOS](freertos-getting-started.md) pour importer le `aws_demos` projet dans l'IDE MPLAB X, configurer votre AWS IoT terminal, votre SSID et votre mot de passe Wi-Fi, ainsi qu'une clé privée et un certificat pour votre carte.

1. Ouvrez le `vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h` fichier et entrez votre certificat.

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

1. Collez le contenu de votre certificat de signature de code ici :

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

   Suivez le même format que `aws_clientcredential_keys.h` : chaque ligne doit se terminer par le nouveau caractère de ligne («\$1n») et être placée entre guillemets.

   Par exemple, votre certificat doit se présenter comme suit :

   ```
   "-----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. Installez [Python 3](https://www.python.org/downloads/) ou version ultérieure.

1. Installez `pyOpenSSL` en exécutant `pip install pyopenssl`.

1. Copiez votre certificat de signature de code au format .pem dans le chemin d'accès `demos/ota/bootloader/utility/codesigner_cert_utility/`. Renommez le fichier de certificat `aws_ota_codesigner_certificate.pem`.

1.  Ouvrez`freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`, commentez `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED` et définissez `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` ou`CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`.

1. Générez la solution et assurez-vous qu'elle se génère sans erreurs.

1. Démarrez un émulateur de terminal et utilisez les paramètres suivants pour vous connecter à votre carte :
   + Vitesse de transmission : 115200
   + Bits de données : 8
   + Parité : aucune
   + Bits d'arrêt : 1

1. Débranchez le débogueur de votre carte et lancez le projet sur votre carte pour vérifier qu'il peut se connecter au Wi-Fi et au courtier de messages AWS IoT MQTT.

Lorsque vous exécutez le projet, l'IDE MPLAB X doit ouvrir une fenêtre de sortie. Assurez-vous que l'**ICD4**onglet est sélectionné. Le résultat suivant doit s'afficher.

```
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
```

L'émulateur de terminal doit afficher un texte semblable au suivant :

```
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
```

Cette sortie montre que le Microchip Curiosity PIC32 MZEF peut se connecter AWS IoT et s'abonner aux rubriques MQTT requises pour les mises à jour OTA. Les messages `Missing job parameter`sont attendus, car il n'y a pas de tâches de mise à jour OTA en attente.

# Téléchargez, compilez, flashez et exécutez la démo de FreeRTOS OTA sur l'Espressif ESP32
<a name="download-ota-esp"></a>

**Important**  <a name="deprecation-message"></a>
Cette intégration de référence est hébergée sur le référentiel Amazon-FreeRTOS, qui est obsolète. Nous vous recommandons de [commencer ici](freertos-getting-started-modular.md) lorsque vous créez un nouveau projet. Si vous possédez déjà un projet FreeRTOS basé sur le référentiel Amazon-FreeRTOS, désormais obsolète, consultez le. [Guide de migration du référentiel Github d'Amazon-FreeRTOS](github-repo-migration.md)

1. Téléchargez le code source FreeRTOS à partir de. [GitHub](https://github.com/aws/amazon-freertos) Consultez le fichier [README.md](https://github.com/aws/amazon-freertos/blob/main/README.md) pour obtenir des instructions. Créez un projet dans votre environnement IDE qui inclut toutes les sources et bibliothèques requises.

1. Suivez les instructions de [Mise en route avec Espressif](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html) pour configurer la chaîne d'outils basée sur GCC requise.

1. Ouvrez`freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`, commentez `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED` et définissez `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` ou`CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`.

1. Générez le projet de démonstration en exécutant `make` dans le répertoire `vendors/espressif/boards/esp32/aws_demos`. Vous pouvez flasher le programme de démonstration et vérifier sa sortie en exécutant `make flash monitor`, comme décrit dans [Mise en route avec Espressif](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html).

1. Avant d'exécuter la démonstration de mise à jour OTA :
   + Ouvrez`freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`, commentez `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED` et définissez `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` ou`CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`.
   + Ouvrez `vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h` et copiez votre certificat de signature de code SHA-256/ECDSA dans :

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

# Téléchargez, compilez, flashez et exécutez la démo de FreeRTOS OTA sur le Renesas N RX65
<a name="download-rx65n-ota"></a>

**Important**  <a name="deprecation-message"></a>
Cette intégration de référence est hébergée sur le référentiel Amazon-FreeRTOS, qui est obsolète. Nous vous recommandons de [commencer ici](freertos-getting-started-modular.md) lorsque vous créez un nouveau projet. Si vous possédez déjà un projet FreeRTOS basé sur le référentiel Amazon-FreeRTOS, désormais obsolète, consultez le. [Guide de migration du référentiel Github d'Amazon-FreeRTOS](github-repo-migration.md)

Ce chapitre explique comment télécharger, créer, flasher et exécuter les applications de démonstration FreeRTOS OTA sur le Renesas N. RX65

**Topics**
+ [Configurez votre environnement d'exploitation](#download-rx65n-ota-environment)
+ [Configurez vos AWS ressources](#download-rx65n-ota-setup)
+ [Importez, configurez le fichier d'en-tête et compilez aws\$1demos et boot\$1loader](#download-rx65n-ota-import-configure)

## Configurez votre environnement d'exploitation
<a name="download-rx65n-ota-environment"></a>

Les procédures décrites dans cette section utilisent les environnements suivants :
+ **IDE** : e 2 studio 7.8.0, e 2 studio 2020-07
+ **Chaînes d'outils : compilateur** CCRX v3.0.1
+ **Appareils cibles** : RSKRX65 N-2MB
+ **Débogueurs** : émulateur E 2, E 2 Lite
+ **Logiciel** : Renesas Flash Programmer, Renesas Secure Flash Programmer.exe, Tera Term

**Pour configurer votre matériel**

1. Connectez l'émulateur E 2 Lite et le port série USB à votre carte RX65 N et à votre PC.

1. Connectez la source d'alimentation au RX65 N.

## Configurez vos AWS ressources
<a name="download-rx65n-ota-setup"></a>

1. Pour exécuter les démos de FreeRTOS, vous devez disposer d' AWS un compte auprès d'un utilisateur IAM autorisé à accéder aux services. AWS IoT Si ce n'est pas déjà fait, suivez les étapes décrites dans[Configuration de votre AWS compte et de vos autorisations](freertos-prereqs.md#freertos-account-and-permissions).

1. Pour configurer les mises à jour OTA, suivez les étapes décrites dans[Conditions préalables aux mises à jour OTA](ota-prereqs.md). En particulier, suivez les étapes décrites dans[Conditions préalables aux mises à jour OTA via MQTT](ota-mqtt-freertos.md).

1. Ouvrez la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Gérer**, puis choisissez **Objets** pour créer un objet.

   Un objet est une représentation d'un périphérique ou d'une entité logique dans AWS IoT. Il peut s'agir d'un appareil physique ou d'un capteur (par exemple, une ampoule ou un interrupteur sur un mur). Il peut également s'agir d'une entité logique, telle qu'une instance d'une application ou d'une entité physique qui ne se connecte pas AWS IoT, mais qui est associée à des appareils qui le font (par exemple, une voiture équipée de capteurs de moteur ou d'un panneau de commande). AWS IoT fournit un registre d'objets qui vous aide à gérer vos objets.

   1. Choisissez **Create**, puis **Create a single thing**.

   1. Entrez un **nom** pour votre objet, puis choisissez **Next**.

   1. Choisissez **Create certificate** (Créer un certificat).

   1. Téléchargez les trois fichiers créés, puis choisissez **Activer**. 

   1. Choisissez **Attacher une stratégie**.  
![\[écran de console affichant les fichiers à télécharger\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/download-these-files-rx65n.png)

   1. Sélectionnez la politique que vous avez créée dans[Politique en matière d'appareils](ota-mqtt-freertos.md#ota-mqtt-freertos-device-policy).

      Chaque appareil qui reçoit une mise à jour OTA à l'aide de MQTT doit être enregistré en tant qu'objet AWS IoT et doit être associé à une politique similaire à celle répertoriée. Vous trouverez plus d'informations sur les éléments dans les objets `"Action"` et `"Resource"` dans [Actions de stratégie AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) et [Ressources d'action AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html).

**Remarques**
      + Les `iot:Connect` autorisations permettent à votre appareil de se connecter AWS IoT via MQTT.
      + Les autorisations `iot:Publish` et `iot:Subscribe` sur les rubriques des tâches AWS IoT (`.../jobs/*`) permettent au périphérique connecté de recevoir des notifications de travail et des documents de travail, et de publier l'état d'achèvement d'une exécution de travail.
      + Les `iot:Publish` autorisations `iot:Subscribe` et sur le thème des flux AWS IoT OTA (`.../streams/*`) permettent à l'appareil connecté de récupérer les données de mise à jour OTA à partir de AWS IoT. Ces autorisations sont requises pour effectuer des mises à jour du firmware sur MQTT.
      + Les `iot:Receive` autorisations permettent AWS IoT Core de publier des messages sur ces sujets sur l'appareil connecté. Cette autorisation est vérifiée à chaque remise d'un message MQTT. Vous pouvez utiliser cette autorisation pour révoquer l'accès aux clients actuellement abonnés à une rubrique.

1. Pour créer un profil de signature de code et enregistrer un certificat de signature de code sur. AWS

   1. Pour créer les clés et la certification, consultez la section 7.3 « Génération de paires de clés ECDSA avec OpenSSL » dans la SHA256 politique de conception de mise à jour du microprogramme du microcontrôleur [Renesas](https://www.renesas.com/us/en/document/apn/renesas-mcu-firmware-update-design-policy).

   1. Ouvrez la [AWS IoT console](https://console.aws.amazon.com/iot/home). Dans le volet de navigation de gauche, sélectionnez **Gérer**, puis **Jobs**. Sélectionnez **Créer une tâche**, puis **Créer une tâche de mise à jour OTA**. 

   1. Sous **Sélectionner les appareils à mettre à jour**, choisissez **Sélectionner**, puis choisissez l'élément que vous avez créé précédemment. Sélectionnez **Suivant**. 

   1. Sur la page **Créer une tâche de mise à jour FreeRTOS OTA**, procédez comme suit :

      1. Pour **sélectionner le protocole de transfert d'image du microprogramme**, choisissez **MQTT**. 

      1. Pour **Sélectionner et signer l'image de votre microprogramme**, choisissez **Signer une nouvelle image du microprogramme pour moi**. 

      1. Pour le **profil de signature de code**, choisissez **Create**.

      1. Dans la fenêtre **Créer un profil de signature de code**, entrez un **nom de profil**. Pour la **plate-forme matérielle de l'appareil**, sélectionnez **Windows Simulator**. Pour le **certificat de signature de code**, choisissez **Importer**.

      1. Naviguez pour sélectionner le certificat (`secp256r1.crt`), la clé privée du certificat (`secp256r1.key`) et la chaîne de certificats (`ca.crt`).

      1. Entrez le **nom de chemin du certificat de signature de code sur l'appareil**. Ensuite, choisissez **Créer**.

1. Pour autoriser l'accès à la signature de code pour AWS IoT, suivez les étapes décrites dans[Accorder l'accès à la signature de code pour AWS IoT](code-sign-policy.md). 

Si Tera Term n'est pas installé sur votre PC, vous pouvez le télécharger depuis [https://ttssh2.osdn.jp/index.html.en](https://ttssh2.osdn.jp/index.html.en) et le configurer comme indiqué ici. Assurez-vous de brancher le port USB série entre votre appareil et votre PC.

![\[Fenêtre de configuration du port série Tera Term\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/tera-team-rx65n.png)


## Importez, configurez le fichier d'en-tête et compilez aws\$1demos et boot\$1loader
<a name="download-rx65n-ota-import-configure"></a>

Pour commencer, vous sélectionnez la dernière version du package FreeRTOS, qui sera téléchargée GitHub et importée automatiquement dans le projet. De cette façon, vous pouvez vous concentrer sur la configuration de FreeRTOS et sur l'écriture du code de l'application.

1. Lancez le studio e 2.

1. Choisissez **File (Fichier)**, puis **Import (Importer)**.

1. Sélectionnez le **projet GitHub FreeRTOS (avec bibliothèques IoT)** de Renesas.  
![\[fenêtre d'importation d'e-squared studio\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/import-renesas-project-rx65n.png)

1. Choisissez **Rechercher une autre version... pour** afficher la boîte de dialogue de téléchargement.  
![\[fenêtre de dialogue de téléchargement d'e-squared studio\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/check-more-version-rx65n.png)

1. Sélectionnez le dernier package.  
![\[fenêtre de dialogue de téléchargement du module e-squared studio\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/choose-latest-version-rx65n.png)

1. Choisissez **Accepter** pour accepter le contrat de licence de l'utilisateur final.  
![\[boîte de dialogue EULA e-squared studio\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/eula-rx65n.png)

1. Attendez que le téléchargement soit terminé.  
![\[barre de progression du téléchargement\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/downloading-rx65n.png)

1. **Sélectionnez les projets **aws\$1demos** et **boot\$1loader**, puis choisissez Terminer pour les importer.**  
![\[fenêtre d'importation de projets\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/import-projects-rx65n.png)

1. Pour les deux projets, ouvrez les propriétés du projet. Dans le volet de navigation, choisissez **Tool Chain Editor**.

   1. Choisissez la **chaîne d'outils actuelle**.

   1. Choisissez le **générateur actuel**.  
![\[fenêtre des propriétés du studio e-squared\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/project-properties-rx65n.png)

1. Dans le panneau de navigation, sélectionnez **Settings** (Paramètres). **Choisissez l'onglet **Chaîne d'outils**, puis choisissez la version de la chaîne d'outils.**  
![\[Paramètres d'intégration de la chaîne d'outils pour Renesas CCRX version v3.01.00, avec option de modification de la chaîne d'outils.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/project-properties-toolchain-rx65n.png)

   Choisissez l'onglet **Paramètres de l'outil**, développez le **convertisseur**, puis choisissez **Sortie**. Dans la fenêtre principale, assurez-vous que le **fichier hexadécimal de sortie** est sélectionné, puis choisissez le **type de fichier de sortie**.  
![\[C/C++ Build fenêtre des paramètres de configuration affichant les options du compilateur et de l'éditeur de liens telles que le fichier hexadécimal de sortie, le type de fichier de sortie, le répertoire de sortie et les options de division de fichiers.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/project-properties-settings-rx65n.png)  
![\[Arborescence des paramètres de l'interface avec options pour l'analyse de la pile, l'éditeur de chaîne d'outils, le C/C++ General, le MCU, les références de projet, etc.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/project-properties-settings-2-rx65n.png)

1. Dans le projet bootloader, ouvrez `projects\renesas\rx65n-rsk\e2studio\boot_loader\src\key\code_signer_public_key.h` et saisissez la clé publique. [Pour plus d'informations sur la création d'une clé publique, consultez [Comment implémenter FreeRTOS OTA à l'aide d'Amazon Web Services RX65 sur](https://www.renesas.com/us/en/document/apn/rx-family-how-implement-freertos-ota-using-amazon-web-services-rx65n) N et la section 7.3 « Génération de paires de SHA256 clés ECDSA avec OpenSSL » dans la politique de conception de mise à jour du microprogramme des microcontrôleurs de Renesas.](https://www.renesas.com/us/en/document/apn/renesas-mcu-firmware-update-design-policy)  
![\[Éditeur de code affichant un fichier d'en-tête C avec la définition de CODE_SIGNER_PUBLIC_KEY et une variable de clé publique de signature de code codée au format PEM.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/open-bootloader-project-rx65n.png)

   Construisez ensuite le projet à créer`boot_loader.mot`.

1. Ouvrez le `aws_demos` projet.

   1. Ouvrez la [AWS IoT console](https://console.aws.amazon.com/iot/home).

   1. Dans le panneau de navigation de gauche, choisissez **Paramètres**. Notez votre point de terminaison personnalisé dans la zone de texte Terminal de **données de l'appareil**.

   1. Choisissez **Gérer**, puis choisissez **Objets**. Notez le nom de l' AWS IoT objet de votre tableau.

   1. Dans le `aws_demos` projet, ouvrez `demos/include/aws_clientcredential.h` et spécifiez les valeurs suivantes.

      ```
      #define clientcredentialMQTT_BROKER_ENDPOINT[] = "Your AWS IoT endpoint";
      #define clientcredentialIOT_THING_NAME "The AWS IoT thing name of your board"
      ```  
![\[Extrait de code indiquant le nom de l' AWS IoT objet et les paramètres de configuration du point de terminaison du broker.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/client-credential-rx65n.png)

   1. Ouvrez le fichier `tools/certificate_configuration/CertificateConfigurator.html`.

   1. Importez le fichier PEM de certificat et le fichier PEM de clé privée que vous avez téléchargés précédemment.

   1. Choisissez **Generate, enregistrez aws\$1clientcredential\$1keys.h** et remplacez ce fichier dans le répertoire. `demos/include/`  
![\[Outil de configuration de certificats avec des champs pour fournir des fichiers PEM de certificat client et de clé privée à partir de la AWS IoT console, et un bouton pour générer et enregistrer le fichier aws_clientcredential_keys.h.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/certificate-config-tool-rx65n.png)

   1. Ouvrez le `vendors/renesas/boards/rx65n-rsk/aws_demos/config_files/ota_demo_config.h` fichier et spécifiez ces valeurs.

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

      Où *your-certificate-key* se trouve la valeur du fichier`secp256r1.crt`. N'oubliez pas d'ajouter « \$1 » après chaque ligne de la certification. [Pour plus d'informations sur la création du `secp256r1.crt` fichier, consultez [Comment implémenter FreeRTOS OTA à l'aide d'Amazon Web Services RX65 sur](https://www.renesas.com/us/en/document/apn/rx-family-how-implement-freertos-ota-using-amazon-web-services-rx65n) N et la section 7.3 « Génération de paires de SHA256 clés ECDSA avec OpenSSL » dans la politique de conception de mise à jour du microprogramme des microcontrôleurs de Renesas.](https://www.renesas.com/us/en/document/apn/renesas-mcu-firmware-update-design-policy)  
![\[Fichier de code source montrant le code C définissant une chaîne constante de certificat de signataire de code codée PEM avec des données de certificat expurgées.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/codesigner-cert-rx65n.png)

1. **Tâche A : Installation de la version initiale du microprogramme**

   1. Ouvrez le `vendors/renesas/boards/board/aws_demos/config_files/aws_demo_config.h` fichier, commentez `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED` et définissez l'un `CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` ou l'autre`CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED`.

   1. Ouvrez le `demos/include/ aws_application_version.h` fichier et définissez la version initiale du microprogramme sur`0.9.2`.  
![\[Extrait de code présentant les définitions de version d'une application, y compris les macros pour les numéros de version majeure, mineure et de version de version.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/firmware-version-rx65n.png)

   1. Modifiez les paramètres suivants dans l'**afficheur de sections**.  
![\[Fenêtre de visualisation des sections affichant les adresses mémoire, les noms de sections tels que SU, SI, les registres et les composants d'interface tels que les tampons réseau, les exceptions et les boutons d'action.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/section-viewer-rx65n.png)

   1. Choisissez **Build** pour créer le `aws_demos.mot` fichier.

1. Créez le fichier `userprog.mot` avec le Renesas Secure Flash Programmer. `userprog.mot`est une combinaison de `aws_demos.mot` et`boot_loader.mot`. Vous pouvez flasher ce fichier sur le RX65 N-RSK pour installer le microprogramme initial.

   1. Téléchargez [ https://github.com/renesas/Amazon-FreeRTOS-Tools](https://github.com/renesas/Amazon-FreeRTOS-Tools) et ouvrez-le. `Renesas Secure Flash Programmer.exe`

   1. Choisissez l'onglet **Firme initiale**, puis définissez les paramètres suivants :
      + **Chemin de clé privée** : emplacement de`secp256r1.privatekey`.
      + **Chemin du fichier Boot Loader** : emplacement de `boot_loader.mot` (`projects\renesas\rx65n-rsk\e2studio\boot_loader\HardwareDebug`).
      + **Chemin du fichier** : emplacement du `aws_demos.mot` (`projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug`).  
![\[Fenêtre Renesas Secure Flash Programmer avec microcontrôleur, vérification du microprogramme, numéro de séquence, chemin de clé AES et champs de chemin de fichier.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/secure-flash-rx65n.png)

   1. Créez un répertoire nommé `init_firmware` `userprog.mot` Generate et enregistrez-le `init_firmware` dans le répertoire. Vérifiez que la génération a réussi.

1. Flashez le microprogramme initial sur le RX65 N-RSK.

   1. Téléchargez la dernière version du programmateur Flash Renesas (interface graphique de programmation) à l'adresse [ 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) .html. 

   1. Ouvrez le `vendors\renesas\rx_mcu_boards\boards\rx65n-rsk\aws_demos\flash_project\erase_from_bank\ erase.rpj` fichier pour effacer les données de la banque.

   1. Choisissez **Démarrer** pour effacer la banque.  
![\[Fenêtre de Renesas Flash Programmer affichant les détails du projet du microcontrôleur RX Group, le chemin du fichier et les options de fonctionnement du flash telles que Erase, Program et Verify à l'aide des boutons Démarrer et OK.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/flash-programmer-erasing-rx65n.png)

   1. Pour flasher`userprog.mot`, choisissez **Parcourir...** et naviguez jusqu'au `init_firmware` répertoire, sélectionnez le `userprog.mot` fichier et choisissez **Démarrer**.  
![\[Fenêtre Renesas Flash Programmer affichant les paramètres d'opération d'effacement, y compris le microcontrôleur RX Group, l'option permettant de parcourir le fichier du programme, les boutons Effacer et Démarrer, et les détails de l'état des blocs sélectionnés à effacer.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/flash-programmer-complete-rx65n.png)

1. La version 0.9.2 (version initiale) du firmware a été installée sur votre RX65 N-RSK. Le conseil d'administration du RX65 N-RSK est actuellement à l'écoute des mises à jour de l'OTA. Si vous avez ouvert Tera Term sur votre PC, vous verrez quelque chose comme ceci lorsque le microprogramme initial s'exécute.

   ```
   -------------------------------------------------
   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. **Tâche B : mettre à jour la version de votre microprogramme**

   1. Ouvrez le `demos/include/aws_application_version.h` fichier et augmentez la valeur du `APP_VERSION_BUILD` jeton à`0.9.3`.

   1. Regénérez le projet.

1. Créez le `userprog.rsu` fichier avec le Renesas Secure Flash Programmer pour mettre à jour la version de votre firmware.

   1. Ouvrez le fichier `Amazon-FreeRTOS-Tools\Renesas Secure Flash Programmer.exe`.

   1. Choisissez l'onglet **Update Firm** et définissez les paramètres suivants :
      + **Chemin du fichier** : emplacement du `aws_demos.mot` fichier (`projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug`).

   1. Créez un répertoire nommé `update _firmware`. Générez-le `userprog.rsu` et enregistrez-le `update_firmware` dans le répertoire. Vérifiez que la génération a réussi.  
![\[Fenêtre Renesas Secure Flash Programmer avec sélection du microcontrôleur, type de vérification du microprogramme, numéro de séquence, champ de clé AES MAC et entrée du chemin du fichier pour générer un microprogramme sécurisé.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/update-firmware-rx65n.png)

1. Téléchargez la mise à jour du microprogramme dans un compartiment Amazon S3`userproj.rsu`, comme décrit dans[Créez un compartiment Amazon S3 pour stocker votre mise à jour](dg-ota-bucket.md).   
![\[Interface de gestion des compartiments Amazon S3 avec options de dossiers, de téléchargements, de versions et d'autorisations\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/upload-firmware-rx65n.png)

1. Créez une tâche pour mettre à jour le microprogramme sur le RX65 N-RSK.

   AWS IoT Jobs est un service qui avertit un ou plusieurs appareils connectés d'un [Job](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) en attente. Une tâche peut être utilisée pour gérer un parc d'appareils, mettre à jour le microprogramme et les certificats de sécurité des appareils, ou effectuer des tâches administratives telles que le redémarrage des appareils et l'exécution de diagnostics.

   1. Connectez-vous à la [console AWS IoT](https://console.aws.amazon.com/iotv2/). Dans le volet de navigation, choisissez **Manage**, puis **Jobs**.

   1. Choisissez **Create a job**, puis **Create OTA Update job**. Sélectionnez un élément, puis cliquez sur **Suivant**.

   1. Créez une tâche de mise à jour FreeRTOS OTA comme suit :
      + Choisissez **MQTT**.
      + Sélectionnez le profil de signature de code que vous avez créé dans la section précédente.
      + Sélectionnez l'image du microprogramme que vous avez chargée dans un compartiment Amazon S3.
      + Pour le **chemin de l'image du microprogramme sur l'appareil**, entrez**test**.
      + Choisissez le rôle IAM que vous avez créé dans la section précédente.

   1. Choisissez **Suivant**.  
![\[Signalisation de l'image du microprogramme et paramètres de mise à jour OTA avec options permettant de signer le nouveau microprogramme, de sélectionner le microprogramme précédemment signé, d'utiliser un microprogramme signé personnalisé, de spécifier le profil de signature de code, le fichier image du microprogramme, le chemin sur l'appareil et le rôle IAM pour la tâche de mise à jour OTA.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/create-job-next-rx65n.png)

   1. Entrez un identifiant, puis choisissez **Créer**.

1. Rouvrez Tera Term pour vérifier que le microprogramme a été correctement mis à jour vers la version de démonstration OTA 0.9.3.  
![\[Sortie de ligne de commande indiquant l'initialisation et la connexion d'un thread à un broker.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/update-successful-rx65n.png)

1. Sur la AWS IoT console, vérifiez que le statut de la tâche est **Réussi**.  
![\[Vue d'ensemble de la tâche de test AFR OTA-Demo indiquant qu'une ressource a réussi.\]](http://docs.aws.amazon.com/fr_fr/freertos/latest/userguide/images/completed-succeeded-rx65n.png)

# Tutoriel : Effectuez des mises à jour OTA sur Espressif à l'aide de ESP32 FreeRTOS Bluetooth Low Energy
<a name="ota-updates-esp32-ble"></a>

**Important**  <a name="deprecation-message"></a>
Cette intégration de référence est hébergée sur le référentiel Amazon-FreeRTOS, qui est obsolète. Nous vous recommandons de [commencer ici](freertos-getting-started-modular.md) lorsque vous créez un nouveau projet. Si vous possédez déjà un projet FreeRTOS basé sur le référentiel Amazon-FreeRTOS, désormais obsolète, consultez le. [Guide de migration du référentiel Github d'Amazon-FreeRTOS](github-repo-migration.md)

Ce didacticiel explique comment mettre à jour un ESP32 microcontrôleur Espressif connecté à un proxy Bluetooth Low Energy MQTT sur un appareil Android. Il met à jour l'appareil à l'aide de tâches de mise à jour AWS IoT Over-the-air (OTA). L'appareil se connecte à AWS IoT l'aide des informations d'identification Amazon Cognito saisies dans l'application de démonstration Android. Un opérateur autorisé lance la mise à jour OTA depuis le cloud. Lorsque l'appareil se connecte via l'application de démonstration Android, la mise à jour OTA est lancée et le micrologiciel est mis à jour sur l'appareil. 

Les versions majeures de FreeRTOS 2019.06.00 et ultérieures incluent le support du proxy Bluetooth Low Energy MQTT qui peut être utilisé pour le provisionnement Wi-Fi et les connexions sécurisées aux services. AWS IoT En utilisant la fonction Bluetooth Low Energy, vous pouvez créer des appareils à faible consommation qui peuvent être couplés à un appareil mobile pour la connectivité sans avoir besoin du Wi-Fi. Les appareils peuvent communiquer à l'aide de MQTT en se connectant via Bluetooth Low Energy Android ou iOS SDKs qui utilisent des profils de profil d'accès générique (GAP) et d'attributs génériques (GATT).

Voici les étapes que nous allons suivre pour autoriser les mises à jour OTA via Bluetooth Low Energy :

1. **Configuration du stockage :** créez un compartiment et des politiques Amazon S3 et configurez un utilisateur capable d'effectuer des mises à jour.

1. **Création d'un certificat de signature de code : créez un certificat** de signature et autorisez l'utilisateur à signer les mises à jour du microprogramme.

1. **Configurez l'authentification Amazon Cognito :** créez un fournisseur d'informations d'identification, un groupe d'utilisateurs et un accès des applications au groupe d'utilisateurs.

1. **Configurer FreeRTOS** : configurez Bluetooth Low Energy, les informations d'identification du client et le certificat public de signature de code.

1. **Configuration d'une application Android : configurez** le fournisseur d'informations d'identification, le groupe d'utilisateurs et déployez l'application sur un appareil Android.

1. **Exécutez le script de mise à jour OTA :** pour lancer une mise à jour OTA, utilisez le script de mise à jour OTA.

Pour plus d'informations sur le fonctionnement des mises à jour, consultez[Mises à jour de FreeRTOS Over-the-Air](freertos-ota-dev.md). Pour plus d'informations sur la configuration de la fonctionnalité du proxy Bluetooth Low Energy MQTT, consultez l'article [Utilisation du Bluetooth Low Energy avec FreeRTOS sur ESP32](https://aws.amazon.com/blogs/iot/using-bluetooth-low-energy-with-amazon-freertos-on-espressif-esp32/) Espressif de Richard Kang.

## Conditions préalables
<a name="ota-updates-esp32-ble-prereq"></a>

Pour effectuer les étapes de ce didacticiel, vous avez besoin des ressources suivantes :
+ Un conseil ESP32 de développement.
+ Un câble microUSB vers USB A.
+ Un AWS compte (le niveau gratuit est suffisant).
+ Un téléphone Android doté d'Android version 6.0 ou ultérieure et de Bluetooth version 4.2 ou ultérieure.

Sur votre ordinateur de développement, vous devez :
+ Espace disque suffisant (\$1500 Mo) pour la chaîne d'outils Xtensa, le code source FreeRTOS et des exemples.
+ Android Studio est installé.
+ L'[AWS CLI](https://aws.amazon.com/cli/)installé.
+ Python3 installé.
+ Le [kit de développement AWS logiciel (SDK) boto3 pour Python](https://github.com/boto/boto3).

Les étapes de ce didacticiel supposent que la chaîne d'outils Xtensa, l'ESP-IDF et le code FreeRTOS sont installés dans le répertoire de votre répertoire personnel. `/esp` Vous devez ajouter des `~/esp/xtensa-esp32-elf/bin` éléments à votre `$PATH` variable.

## Étape 1 : Configuration du stockage
<a name="ota-updates-esp32-ble-step1"></a>

1. [Créez un compartiment Amazon S3 pour stocker votre mise à jour](dg-ota-bucket.md)avec la gestion des versions activée pour conserver les images du microprogramme.

1. [Créer un rôle de service de mise à jour OTA](create-service-role.md)et ajoutez les politiques gérées suivantes au rôle :
   + AWSIotJournalisation
   + AWSIotRuleActions
   + AWSIotThingsRegistration
   + AWSFreeRTOSOTAUpdate

1. [Créez un utilisateur capable d'](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)effectuer des mises à jour OTA. Cet utilisateur peut signer et déployer des mises à jour du microprogramme sur les appareils IoT du compte, et a accès aux mises à jour OTA sur tous les appareils. L'accès doit être limité aux entités de confiance.

1. Suivez les étapes pour [Créer une stratégie utilisateur OTA](create-ota-user-policy.md) le joindre à votre utilisateur.

## Étape 2 : Création du certificat de signature de code
<a name="ota-updates-esp32-ble-step2"></a>

1. Créez un compartiment Amazon S3 avec la gestion des versions activée pour contenir les images du microprogramme.

1. Créez un certificat de signature de code qui peut être utilisé pour signer le microprogramme. Notez le certificat Amazon Resource Name (ARN) lorsque le certificat est importé.

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

   Exemple de sortie :

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

   Vous utiliserez l'ARN ultérieurement pour créer un profil de signature. Si vous le souhaitez, vous pouvez créer le profil dès maintenant à l'aide de la commande suivante :

   ```
   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
   ```

   Exemple de sortie :

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

## Étape 3 : configuration de l'authentification Amazon Cognito
<a name="ota-updates-esp32-ble-step3"></a>

**Création d'une AWS IoT politique**

1. Connectez-vous à la [console AWS IoT](https://console.aws.amazon.com/iot/).

1. Dans le coin supérieur droit de la console, sélectionnez **Mon** compte. Dans **Paramètres du compte**, notez votre identifiant de compte à 12 chiffres.

1. Dans le panneau de navigation de gauche, choisissez **Paramètres**. Dans Point de **terminaison des données de l'appareil**, notez la valeur du point de terminaison. Le point de terminaison doit être quelque chose comme`xxxxxxxxxxxxxx.iot.us-west-2.amazonaws.com`. Dans cet exemple, la AWS région est « us-west-2 ».

1. Dans le volet de navigation de gauche, choisissez **Secure**, **Policies**, puis **Create**. Si aucune politique n'est associée à votre compte, le message « Vous n'avez pas encore de politique » s'affichera et vous pourrez choisir **Créer une politique**.

1. Entrez un nom pour votre politique, par exemple « esp32\$1mqtt\$1proxy\$1iot\$1policy ».

1. Dans la section **Ajouter des instructions**, choisissez **Mode avancé**. Copiez et collez le code JSON suivant dans la fenêtre de l'éditeur de stratégie. `aws-account-id`Remplacez-le par votre numéro de compte et `aws-region` par votre région (par exemple, « 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. Choisissez **Créer**.

**Créez n'importe quel AWS IoT objet**

1. Connectez-vous à la [console AWS IoT](https://console.aws.amazon.com/iot/).

1. Dans le volet de navigation de gauche, choisissez **Gérer**, puis **Objets**.

1. Dans le coin supérieur droit, choisissez **Create**. Si aucun élément n'est enregistré dans votre compte, le message « Vous n'avez rien encore » s'affiche et vous pouvez choisir **Enregistrer un objet**.

1. Sur la page **Création d' AWS IoT objets**, choisissez **Créer un objet unique**.

1. Sur la page **Ajouter votre appareil au registre** des objets, saisissez un nom pour votre objet (par exemple, « esp32-ble »). Seuls les caractères alphanumériques, les tirets (-) et les traits de soulignement (\$1) sont autorisés. Choisissez **Suivant**.

1. Sur la page **Ajouter un certificat pour votre objet**, sous **Ignorer le certificat et créer un objet**, choisissez **Créer un objet sans certificat**. Comme nous utilisons l'application mobile proxy BLE qui utilise un identifiant Amazon Cognito pour l'authentification et l'autorisation, aucun certificat d'appareil n'est requis.

**Création d'un client d'application Amazon Cognito**

1. Connectez-vous à la [console Amazon Cognito](https://console.aws.amazon.com/cognito/users/).

1. Dans le bandeau de navigation en haut à droite, choisissez **Créer un groupe d'utilisateurs.**

1. Entrez le nom du pool (par exemple, « esp32\$1mqtt\$1proxy\$1user\$1pool »).

1. Sélectionnez **Review defaults**.

1. Dans **App Clients**, choisissez **Ajouter un client d'application**, puis choisissez **Ajouter un client d'application**. 

1. Entrez le nom du client de l'application (par exemple « mqtt\$1app\$1client »).

1. Assurez-vous que l'option **Générer le secret du client** est sélectionnée.

1. Choisissez **Créer un client d’application**.

1. Sélectionnez **Revenir aux détails du groupe**.

1. Sur la page de **révision** du groupe d'utilisateurs, choisissez **Create pool**. Vous devriez voir un message indiquant « Votre groupe d'utilisateurs a été créé avec succès ». Notez l'ID du pool.

1. Dans le volet de navigation, sélectionnez **App clients**.

1. Choisissez **Afficher les détails**. Notez l'ID du client de l'application et le secret du client de l'application.

**Créer un groupe d’identités Amazon Cognito**

1. Connectez-vous à la [console Amazon Cognito](https://console.aws.amazon.com/cognito/federated).

1. Sélectionnez **Create new identity pool**.

1. Entrez un nom pour le pool d'identités (par exemple, « mqtt\$1proxy\$1identity\$1pool »).

1. Développez les **fournisseurs d'authentification**.

1. Choisissez l'onglet **Cognito**.

1. Entrez l'ID du groupe d'utilisateurs et l'ID du client de l'application que vous avez indiqués lors des étapes précédentes.

1. Sélectionnez **Créer une réserve**.

1. **Sur la page suivante, pour créer de nouveaux rôles pour les identités authentifiées et non authentifiées, choisissez Autoriser.**

1. Notez l'ID du pool d'identités, qui est au format`us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`. 

**Associer une politique IAM à l'identité authentifiée**

1. Ouvrez la [console Amazon Cognito](https://console.aws.amazon.com/cognito/federated).

1. Sélectionnez le pool d'identités que vous venez de créer (par exemple, « mqtt\$1proxy\$1identity\$1pool »).

1. Choisissez **Edit identity groupe (Modifier le groupe d'identités)**.

1. Notez le rôle IAM attribué au rôle authentifié (par exemple, « Cognito\$1MQTT\$1Proxy\$1Identity\$1PoolAuth\$1Role »).

1. Ouvrez la [console IAM](https://console.aws.amazon.com/iam/home).

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Recherchez le rôle attribué (par exemple, « Cognito\$1MQTT\$1Proxy\$1Identity\$1PoolAuth\$1Role »), puis sélectionnez-le.

1. Choisissez **Ajouter une politique intégrée**, puis choisissez **JSON**.

1. Saisissez la politique suivante :

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

****  

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

------

1. Choisissez **Review Policy (Examiner une stratégie)**.

1. Entrez un nom de politique (par exemple, « mqttProxyCognito Politique »).

1. Choisissez **Create Policy** (Créer une politique).

## Étape 4 : Configuration d'Amazon FreeRTOS
<a name="ota-updates-esp32-ble-step4"></a>

1. [Téléchargez la dernière version du code Amazon FreeRTOS depuis le dépôt FreeRTOS. GitHub ](https://github.com/aws/amazon-freertos)

1. Pour activer la démo de mise à jour OTA, suivez les étapes décrites dans[Commencer à utiliser l'Espressif ESP32 - DevKit C et le ESP-WROVER-KIT](getting_started_espressif.md). 

1. Apportez ces modifications supplémentaires dans les fichiers suivants : 

   1. Ouvrez `vendors/espressif/boards/esp32/aws_demos/config_files/aws_demo_config.h` et définissez`CONFIG_OTA_UPDATE_DEMO_ENABLED`.

   1. Ouvrez `vendors/espressif/boards/esp32/aws_demos/common/config_files/aws_demo_config.h` et remplacez `democonfigNETWORK_TYPES` par`AWSIOT_NETWORK_TYPE_BLE`.

   1. Ouvrez `demos/include/aws_clientcredential.h` et entrez l'URL de votre point de terminaison pour`clientcredentialMQTT_BROKER_ENDPOINT`.

      Entrez le nom de votre objet pour `clientcredentialIOT_THING_NAME` (par exemple, « esp32-ble »). Il n'est pas nécessaire d'ajouter des certificats lorsque vous utilisez les informations d'identification Amazon Cognito.

   1. Ouvrir`vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h`, modifier `configSUPPORTED_NETWORKS` et `configENABLED_NETWORKS` inclure uniquement`AWSIOT_NETWORK_TYPE_BLE`.

   1. Ouvrez le `vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h` fichier et entrez votre certificat.

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

   L'application doit démarrer et imprimer la version de démonstration :

   ```
   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...
   ```

## Étape 5 : Configuration d'une application Android
<a name="ota-updates-esp32-ble-step5"></a>

1. Téléchargez le SDK Bluetooth Low Energy pour Android et un exemple d'application depuis le dépôt [amazon-freertos-ble-android GitHub -sdk](https://github.com/aws/amazon-freertos-ble-android-sdk).

1. Ouvrez le fichier `app/src/main/res/raw/awsconfiguration.json` et renseignez l'ID du pool AppClientId, la région et AppClientSecret suivez les instructions de l'exemple JSON suivant.

   ```
   {
     "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. Ouvrez `app/src/main/java/software/amazon/freertos/DemoConstants.java` et entrez le nom de la politique que vous avez créé précédemment (par exemple,*esp32\$1mqtt\$1proxy\$1iot\$1policy*) ainsi que la région (par exemple,*us-east-1*).

1. Créez et installez l'application de démonstration.

   1. Dans Android Studio, choisissez **Build**, puis **Make Module app**.

   1. Choisissez **Exécuter**, puis **Exécuter l'application**. Vous pouvez accéder au volet de la fenêtre Logcat d'Android Studio pour surveiller les messages du journal.

   1. Sur l'appareil Android, créez un compte à partir de l'écran de connexion.

   1. Créez un utilisateur. Si un utilisateur existe déjà, entrez ses informations d'identification.

   1. Autorisez la démo Amazon FreeRTOS à accéder à la position de l'appareil.

   1. Recherchez les appareils Bluetooth Low Energy.

   1. Déplacez le curseur de l'appareil trouvé **sur** Activé.

   1. Appuyez sur **y** sur la console de débogage du port série pour le ESP32.

   1. Choisissez **Pair & Connect**.

1. Le **plus...** le lien devient actif une fois la connexion établie. L'état de connexion doit passer à « BLE\$1CONNECTED » dans le logcat de l'appareil Android lorsque la connexion est terminée :

   ```
   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. Avant que les messages puissent être transmis, l'appareil Amazon FreeRTOS et l'appareil Android négocient le MTU. Vous devriez voir le résultat suivant dans logcat :

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

1. L'appareil se connecte à l'application et commence à envoyer des messages MQTT à l'aide du proxy MQTT. Pour confirmer que le périphérique peut communiquer, assurez-vous que la valeur des données caractéristiques MQTT\$1CONTROL passe à 01 :

   ```
   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. Lorsque les appareils sont couplés, un message s'affiche sur la ESP32 console. Pour activer BLE, appuyez sur **y.** La démo ne fonctionnera pas tant que vous n'aurez pas effectué cette étape. 

   ```
   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.
   ```

## Étape 6 : Exécuter le script de mise à jour OTA
<a name="ota-updates-esp32-ble-step6"></a>

1. Pour installer les prérequis, exécutez les commandes suivantes :

   ```
   pip3 install boto3
   ```

   ```
   pip3 install pathlib
   ```

1. Incrémentez la version de l'application FreeRTOS en. `demos/include/aws_application_version.h`

1. Créez un nouveau fichier .bin.

1. Téléchargez le script python [start\$1ota.py](https://github.com/aws-samples/amazon-freertos-ota-scripts/blob/master/scripts/start_ota.py). Pour consulter le contenu de l'aide du script, exécutez la commande suivante dans une fenêtre de terminal :

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

   Vous devriez voir quelque chose comme ceci :

   ```
   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. Si vous avez utilisé le CloudFormation modèle fourni pour créer des ressources, exécutez la commande suivante :

   ```
   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
   ```

   Vous devriez voir la mise à jour démarrer dans la console de ESP32 débogage : 

   ```
   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. Lorsque la mise à jour OTA est terminée, l'appareil redémarre conformément au processus de mise à jour OTA. Il essaie ensuite de se connecter à l'aide du microprogramme mis à jour. Si la mise à niveau est réussie, le microprogramme mis à jour est marqué comme actif et vous devriez voir la version mise à jour dans la console :

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