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.
Téléchargez, compilez, flashez et exécutez la démo FreeRTOS OTA sur le Renesas RX65N
Important
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 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 RTOS Github gratuit sur Amazon
Ce chapitre explique comment télécharger, créer, flasher et exécuter les applications de démonstration FreeRTOS OTA sur le Renesas RX65N.
Rubriques
Configurez votre environnement d'exploitation
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 : RSKRX65N-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
-
Connectez l'émulateur E 2 Lite et le port série USB à votre carte RX65N et à votre PC.
-
Connectez la source d'alimentation au RX65N.
Configurez vos AWS ressources
-
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 dansConfiguration de votre AWS compte et autorisations.
-
Pour configurer les mises à jour OTA, suivez les étapes décrites dansOTAmise à jour des prérequis. En particulier, suivez les étapes décrites dansConditions requises pour les OTA mises à jour à l'aide de MQTT.
-
Ouvrez la AWS IoT console
. -
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.
-
Choisissez Create, puis Create a single thing.
-
Entrez un nom pour votre objet, puis choisissez Next.
-
Choisissez Create certificate (Créer un certificat).
-
Téléchargez les trois fichiers créés, puis choisissez Activer.
-
Choisissez Attacher une stratégie.
-
Sélectionnez la politique que vous avez créée dansPolitique en matière d'appareils.
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 et Ressources d'action AWS IoT Core.Remarques
-
Les
iot:Connect
autorisations permettent à votre appareil de se connecter AWS IoT via MQTT. -
Les autorisations
iot:Publish
etiot: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
autorisationsiot: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.
-
-
-
Pour créer un profil de signature de code et enregistrer un certificat de signature de code sur. AWS
-
Ouvrez la AWS IoT console
. Dans le volet de navigation de gauche, sélectionnez Gérer, puis Tâches. Sélectionnez Créer une tâche, puis Créer une tâche de mise à jour OTA. -
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.
-
Sur la page Créer une tâche de mise à jour FreeRTOS OTA, procédez comme suit :
-
Pour sélectionner le protocole de transfert d'image du microprogramme, choisissez MQTT.
-
Pour Sélectionner et signer l'image de votre microprogramme, choisissez Signer une nouvelle image du microprogramme pour moi.
-
Pour le profil de signature de code, choisissez Create.
-
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.
-
Naviguez pour sélectionner le certificat (
secp256r1.crt
), la clé privée du certificat (secp256r1.key
) et la chaîne de certificats (ca.crt
). -
Entrez le nom de chemin du certificat de signature de code sur l'appareil. Ensuite, choisissez Créer.
-
-
Pour autoriser l'accès à la signature de code pour AWS IoT, suivez les étapes décrites dansAccorder l'accès à la signature de code pour AWS IoT.
Si Tera Term n'est pas installé sur votre PC, vous pouvez le télécharger depuis https://ttssh2.osdn.jp/index.html.en
Importez, configurez le fichier d'en-tête et compilez aws_demos et boot_loader
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.
-
Lancez le studio e 2.
-
Choisissez Fichier, puis Importer...
-
Sélectionnez le projet GitHub FreeRTOS (avec bibliothèques IoT) de Renesas.
-
Choisissez Rechercher une autre version... pour afficher la boîte de dialogue de téléchargement.
-
Sélectionnez le dernier package.
-
Choisissez Accepter pour accepter le contrat de licence de l'utilisateur final.
-
Attendez que le téléchargement soit terminé.
-
Sélectionnez les projets aws_demos et boot_loader, puis choisissez Terminer pour les importer.
-
Pour les deux projets, ouvrez les propriétés du projet. Dans le volet de navigation, choisissez Tool Chain Editor.
-
Choisissez la chaîne d'outils actuelle.
-
Choisissez le générateur actuel.
-
-
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.
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.
-
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 surle RX65N et section 7.3 « Génération de paires de clés ECDSA-SHA256 avec OpenSSL » dans la politique de conception des mises à jour du microprogramme des microcontrôleurs de Renesas. Construisez ensuite le projet à créer
boot_loader.mot
. -
Ouvrez le
aws_demos
projet.-
Ouvrez la AWS IoT console
. -
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.
-
Choisissez Gérer, puis choisissez Objets. Notez le nom de l' AWS IoT objet de votre tableau.
-
Dans le
aws_demos
projet, ouvrezdemos/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
" -
Ouvrez le fichier
tools/certificate_configuration/CertificateConfigurator.html
. -
Importez le fichier PEM de certificat et le fichier PEM de clé privée que vous avez téléchargés précédemment.
-
Choisissez Generate, enregistrez aws_clientcredential_keys.h et remplacez ce fichier dans le répertoire.
demos/include/
-
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 est la
valeur du fichier.secp256r1.crt
N'oubliez pas d'ajouter « \ » après chaque ligne de la certification. Pour plus d'informations sur la création dusecp256r1.crt
fichier, consultez Comment implémenter FreeRTOS OTA à l'aide d'Amazon Web Services surle RX65N et section 7.3 « Génération de paires de clés ECDSA-SHA256 avec OpenSSL » dans la politique de conception de mise à jour du microprogramme du microcontrôleur de Renesas.
-
-
Tâche A : Installation de la version initiale du microprogramme
-
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'unCONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED
ou l'autreCONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED
. -
Ouvrez le
demos/include/ aws_application_version.h
fichier et définissez la version initiale du microprogramme sur0.9.2
. -
Modifiez les paramètres suivants dans l'afficheur de sections.
-
Choisissez Build pour créer le
aws_demos.mot
fichier.
-
-
Créez le fichier
userprog.mot
avec le Renesas Secure Flash Programmer.userprog.mot
est une combinaison deaws_demos.mot
etboot_loader.mot
. Vous pouvez flasher ce fichier sur le RX65N-RSK pour installer le microprogramme initial.-
Téléchargez https://github.com/renesas/Amazon-FreeRTOS-Tools
et ouvrez Renesas Secure Flash Programmer.exe
. -
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
).
-
-
Créez un répertoire nommé
init_firmware
userprog.mot
Generate et enregistrez-leinit_firmware
dans le répertoire. Vérifiez que la génération a réussi.
-
-
Flashez le microprogramme initial sur le RX65N-RSK.
-
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. -
Choisissez Démarrer pour effacer la banque.
-
Pour flasher
userprog.mot
, choisissez Parcourir... et naviguez jusqu'auinit_firmware
répertoire, sélectionnez leuserprog.mot
fichier et choisissez Démarrer.
-
La version 0.9.2 (version initiale) du microprogramme a été installée sur votre RX65N-RSK. La carte RX65N-RSK écoute actuellement les mises à jour 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
-
Tâche B : mettre à jour la version de votre microprogramme
-
Ouvrez le
demos/include/aws_application_version.h
fichier et augmentez la valeur duAPP_VERSION_BUILD
jeton à0.9.3
. -
Regénérez le projet.
-
-
Créez le
userprog.rsu
fichier avec le Renesas Secure Flash Programmer pour mettre à jour la version de votre firmware.-
Ouvrez le fichier
Amazon-FreeRTOS-Tools\Renesas Secure Flash Programmer.exe
. -
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
).
-
-
Créez un répertoire nommé
update _firmware
. Générez-leuserprog.rsu
et enregistrez-leupdate_firmware
dans le répertoire. Vérifiez que la génération a réussi.
-
-
Téléchargez la mise à jour du microprogramme dans un compartiment Amazon S3
userproj.rsu
, comme décrit dansCréez un compartiment Amazon S3 pour stocker votre mise à jour. -
Créez une tâche pour mettre à jour le microprogramme du RX65N-RSK.
AWS IoT Jobs est un service qui avertit un ou plusieurs appareils connectés d'un Job 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.
-
Connectez-vous à la console AWS IoT
. Dans le volet de navigation, choisissez Manage, puis Jobs. -
Choisissez Create a job, puis Create OTA Update job. Sélectionnez un élément, puis cliquez sur Suivant.
-
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 d'accès 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.
-
-
Choisissez Suivant.
-
Entrez un identifiant, puis choisissez Créer.
-
-
Rouvrez Tera Term pour vérifier que le microprogramme a été correctement mis à jour vers la version de démonstration OTA 0.9.3.
-
Sur la AWS IoT console, vérifiez que le statut de la tâche est Réussi.