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 TLS (Transport Layer Security) de transport Layer Security (TLS), utilisez votre pile TLS préférée. Nous vous recommandons d'utiliserTLS Mbedcar il est testé avec les bibliothèques FreeRTOS. Vous trouverez un exemple de cela sur cette pageGitHubrepository.

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

Portage de la bibliothèque Network Transport Interface

Vous devez implémenter une interface de transport réseau pour utiliserCoreMQTTetHTTP de base. L'interface de transport réseau contient des pointeurs de fonction et des données contextuelles nécessaires à l'envoi et à la réception des données sur une seule connexion réseau. VoirInterface de transportPour plus d'informations, veuillez consulter. FreeRTOS fournit un ensemble de tests d'interface de transport réseau intégrés pour valider ces implémentations. La section suivante vous explique comment configurer votre projet pour exécuter ces tests.

Prérequis

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

  • Projet doté d'un système de génération capable de créer FreeRTOS avec un port de noyau FreeRTOS validé.

  • Mise en œuvre opérationnelle de pilotes réseau.

Portage

  • AdditionTests d'intégration des bibliothèques FreerTOSen tant que sous-module de 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.hvers un emplacement de projet dans le chemin de construction, puis renommez-le entest_execution_config.hettest_param_config.h.

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

  • Implémentez les fonctions suivantes à un emplacement de projet approprié :

    • UNnetwork connect function : La signature est définie parNetworkConnectFuncdanssrc/common/network_connection.h. Cette fonction prend en compte un pointeur sur le contexte réseau, un pointeur sur les informations d'hôte et un pointeur sur les informations d'identification 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 stockée dans le contexte réseau.

    • setupTransportInterfaceTestParam(): Il est défini danssrc/transport_interface/transport_interface_tests.h. L'implémentation doit porter 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 sur unTest de l'interface de transport Paramstruct. Il remplira les champs de laTest de l'interface de transport Paramstruct utilisé par le test de l'interface de transport.

  • Implémentez .UNITY_OUTPUT_CHARde sorte que les journaux de sortie de test ne s'entremêlent pas avec les journaux des périphériques.

  • AppelezrunQualificationTest()depuis l'application. Le matériel du périphérique 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 key pair sur l'appareil et produit la clé publique. L'application de l'appareil utiliseECHO_SERVER_ROOT_CAetCERTIFICAT TRANSPORT_CLIENT_comme autorité de certification racine du serveur echo et certificat client lors de l'établissement d'une connexion TLS avec le serveur echo. IDT définit ces paramètres pendant l'exécution de qualification.

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

L'application de l'appareil utiliseECHO_SERVER_ROOT_CA,CERTIFICAT TRANSPORT_CLIENT_etTRANSPORT_CLIENT_PRIVATE_KEYdanstest_param_config.hen tant qu'autorité de certification racine du serveur echo, certificat client et clé privée client lors de l'établissement d'une connexion TLS avec le serveur echo. IDT définit ces paramètres pendant l'exécution de qualification.

Test

Cette section décrit comment tester localement l'interface de transport avec les tests de qualification. Vous pouvez également utiliser IDT pour automatiser l'exécution. VoirAWS IoT Device TesterFreeRTOSdans leGuide de l'utilisateur FreeRTOSpour de plus amples informations.

Activer le test

Ouvrirtest_execution_config.het définissezTRANSPORT_INTERFACE_TEST_ENABLEDà 1.

Configuration du serveur echo pour tester

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

Configuration du projet pour les tests

Danstest_param_config.h, mettre à jourPOINT DE TERMINAISON ECHO_SERVER_FRetECHO_SERVER_PORTau point de terminaison et au serveur configuré à l'étape précédente.

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

  • DéfinirECHO_SERVER_ROOT_CAvers le certificat de serveur du serveur echo.

  • DéfinirFORCE_GENERATE_NEW_KEY_PAIRà 1 pour générer une key pair et obtenir la clé publique.

  • DéfinirFORCE_GENERATE_NEW_KEY_PAIRretour à 0 après la génération des clés.

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

  • DéfinirCERTIFICAT TRANSPORT_CLIENT_au certificat client généré.

Informations d'identification d'installation (clé d'importation)

  • DéfinirECHO_SERVER_ROOT_CAvers le certificat de serveur du serveur echo.

  • DéfinirCERTIFICAT TRANSPORT_CLIENT_vers le certificat client prégénéré.

  • DéfinirTRANSPORT_CLIENT_PRIVATE_KEYà la clé privée 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 appelé, les tests de l'interface de transport seront exécutés. Les résultats des tests sont sortis au port série.

Note

Pour qualifier officiellement un périphérique pour FreeRTOS, vous devez valider le code source porté du périphérique par rapport aux groupes de test OTA PAL et OTA E2E avecAWS IoT Device Tester. Suivez les instructions de la sectionA l'aide deAWS IoT Device TesterFreeRTOSdans leGuide de l'utilisateur FreeRTOSpour configurerAWS IoT Device Testerpour la validation des ports. Pour tester le port d'une bibliothèque spécifique, le groupe de test correct doit être activé dans ledevice.jsondans le fichierAWS IoT Device Tester configsfolder.