Portage de l'interface de transport réseau - FreeRTOS

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.

Portage de l'interface de transport réseau

Intégration de la bibliothèque TLS

Pour l'authentification de protocole TLS (Transport Layer Security), utilisez votre protocole TLS (Transport Layer Security) préférée. Nous vous recommandons d'utiliserIntégrer TLScar il est testé avec les bibliothèques FreeRTOS. Vous pouvez en trouver un exemple iciGitHubréférentiel.

Quelle que soit l'implémentation TLS utilisée par votre appareil, vous devez implémenter les crochets de transport sous-jacents pour la pile TLS avec la pile TCP/IP. Ils doivent soutenir leSuites de chiffrement TLS prises en charge parAWS IoT.

Portage de la bibliothèque d'interface de transport réseau

Vous devez implémenter une interface de transport réseau pour utiliserNoyau MQTTetNoyau HTTP. L'interface de transport réseau contient des pointeurs de fonction et des données contextuelles nécessaires pour envoyer et recevoir des données sur une seule connexion réseau. VoirInterface de transportpour plus d'informations. FreeRTOS fournit un ensemble de tests d'interface de transport réseau intégrés pour valider ces implémentations. La section suivante explique comment configurer votre projet pour exécuter ces tests.

Prérequis

Pour transférer ce test, vous avez besoin des éléments suivants :

  • Un projet avec un système de compilation capable de créer FreeRTOS avec un port de noyau FreeRTOS validé.

  • Implémentation fonctionnelle des pilotes réseau.

Portage

  • AjouterTests d'intégration des bibliothèques FreeRTOSen tant que sous-module dans votre projet. Peu importe où le sous-module est placé dans le projet, tant qu'il peut être construit.

  • Copierconfig_template/test_execution_config_template.hetconfig_template/test_param_config_template.hà un emplacement de projet dans le chemin de construction, et renommez-les entest_execution_config.hettest_param_config.h.

  • Incluez les fichiers pertinents dans le système de compilation. Si vous utilisezCMake,qualification_test.cmakeetsrc/transport_interface_tests.cmakesont utilisés pour inclure les fichiers pertinents.

  • Implémentez les fonctions suivantes sur un site de projet approprié :

    • UNnetwork connect function: La signature est définie parNetworkConnectFuncdanssrc/common/network_connection.h. Cette fonction prend en compte un pointeur vers le contexte du réseau, un pointeur vers les informations d'hôte et un pointeur vers les informations d'identification du réseau. Il établit une connexion avec le serveur spécifié dans les informations d'hôte avec les informations d'identification réseau fournies.

    • UNnetwork disconnect function: La signature est définie parNetworkDisconnectFuncdanssrc/common/network_connection.h. Cette fonction prend en compte un pointeur vers un contexte réseau. Il déconnecte une connexion précédemment établie enregistrée dans le contexte du réseau.

    • setupTransportInterfaceTestParam(): Ceci est défini danssrc/transport_interface/transport_interface_tests.h. L'implémentation doit avoir exactement le même nom et la même signature que ceux définis danstransport_interface_tests.h. Cette fonction prend en compte un pointeur vers unTransportInterfaceTestParamstructure. Il remplira les champs duTransportInterfaceTestParamstructure utilisée par le test de l'interface de transport.

  • Mettre en œuvreUNITY_OUTPUT_CHARafin que les journaux des résultats des tests ne soient pas entrelacés avec les journaux des appareils.

  • AppelrunQualificationTest()depuis l'application. Le matériel de l'appareil doit être correctement initialisé et le réseau doit être connecté avant l'appel.

Gestion des informations d'identification (clé générée sur l'appareil)

QuandFORCE_GENERATE_NEW_KEY_PAIRdanstest_param_config.hest défini sur 1, l'application de l'appareil génère une nouvelle paire de clés sur l'appareil et émet la clé publique. L'application de l'appareil utiliseECHO_SERVER_ROOT_CAetCERTIFICAT_CLIENT DE TRANSPORTcomme autorité de certification racine et certificat client du serveur d'écho lors de l'établissement d'une connexion TLS avec le serveur d'écho. IDT définit ces paramètres lors de la phase de qualification.

Gestion des informations d'identification (clé d'importation)

L'application de l'appareil utiliseECHO_SERVER_ROOT_CA,CERTIFICAT_CLIENT DE TRANSPORTetTRANSPORT_CLIENT_CLÉ_PRIVÉEdanstest_param_config.hen tant qu'autorité de certification racine du serveur d'écho, de certificat client et de clé privée du client lors de l'établissement d'une connexion TLS avec le serveur d'écho. IDT définit ces paramètres lors de la phase de qualification.

Test

Cette section décrit comment tester localement l'interface de transport à l'aide des tests de qualification. Pour plus d'informations, consultez le fichier README.md fourni dansinterface de transportsection des tests d'intégration de FreeRTOS-Libraries-sur GitHub.

Vous pouvez également utiliser l'IDT pour automatiser l'exécution. VoirAWS IoT Device Testerpour FreeRTOSdans leGuide d'utilisation de FreeRTOSpour plus d'informations.

Activez le test

Ouverttest_execution_config.het définissezINTERFACE DE TRANSPORT ACTIVÉE POUR LE TESTà 1.

Configurer le serveur Echo pour les tests

Un serveur d'écho accessible depuis l'appareil exécutant les tests est requis pour les tests locaux. Le serveur d'écho doit prendre en charge le protocole TLS si l'implémentation de l'interface de transport prend en charge le protocole TLS. Si vous n'en avez pas déjà un,Tests d'intégration des bibliothèques FreeRTOS GitHub le référentiel a une implémentation de serveur Echo.

Configuration du projet à des fins de test

Danstest_param_config.h, mise à jourPOINT DE TERMINAISON DU SERVEUR ECHOetECHO_SERVER_PORTà la configuration du terminal et du serveur à l'étape précédente.

Informations d'identification de configuration (clé générée sur l'appareil)

  • SetECHO_SERVER_ROOT_CAau certificat de serveur du serveur Echo.

  • SetFORCE_GENERATE_NEW_KEY_PAIRà 1 pour générer une paire de clés et obtenir la clé publique.

  • SetFORCE_GENERATE_NEW_KEY_PAIRretour à 0 après la génération de la clé.

  • Utilisez la clé publique, la clé de serveur et le certificat pour générer le certificat client.

  • SetCERTIFICAT_CLIENT DE TRANSPORTau certificat client généré.

Informations d'identification de configuration (clé d'importation)

  • SetECHO_SERVER_ROOT_CAau certificat de serveur du serveur Echo.

  • SetCERTIFICAT_CLIENT DE TRANSPORTau certificat client prégénéré.

  • SetTRANSPORT_CLIENT_CLÉ_PRIVÉEà la clé privée du client pré-générée.

Créez et flashez l'application

Créez et flashez l'application à l'aide de la chaîne d'outils de votre choix. QuandrunQualificationTest()est invoqué, les tests de l'interface de transport seront exécutés. Les résultats des tests sont transmis au port série.

Note

Pour qualifier officiellement un appareil pour FreeRTOS, vous devez valider le code source porté de l'appareil par rapport aux groupes de test OTA PAL et OTA E2E avecAWS IoT Device Tester. Suivez les instructions deEn utilisantAWS IoT Device Testerpour FreeRTOSdans leGuide d'utilisation de FreeRTOSpour configurerAWS IoT Device Testerpour la validation des ports. Pour tester le port d'une bibliothèque spécifique, le groupe de test approprié doit être activé dansdevice.jsonfichier dans leAWS IoT Device Tester configsdossier.