Portierung der Netzwerktransportschnittstelle - Kostenlos RTOS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Portierung der Netzwerktransportschnittstelle

Integration der TLS-Bibliothek

Verwenden Sie für Transport Layer Security (TLS) -Authentifizierung Ihren bevorzugten TLS Stack. Wir empfehlen die VerwendungTLS einbettenweil es mit FreeRTOS-Bibliotheken getestet wurde. Ein Beispiel dafür finden Sie hierGitHubEndlager.

Unabhängig von der von Ihrem Gerät verwendeten TLS-Implementierung müssen Sie die zugrunde liegenden Transport-Hooks für den TLS-Stack mit dem TCP/IP-Stack implementieren. Sie müssen dieTLS-Verschlüsselungssammlungen, die unterstützt werden vonAWS IoT.

Portierung der Network Transport Interface-Bibliothek

Sie müssen eine Netzwerktransportschnittstelle implementieren, um sie verwenden zu könnenCoreMQTTundCoreHTTP. Die Netzwerktransportschnittstelle enthält Funktionszeiger und Kontextdaten, die zum Senden und Empfangen von Daten über eine einzelne Netzwerkverbindung erforderlich sind. SieheTransport Interfacefür weitere Informationen. FreeRTOS bietet eine Reihe von integrierten Netzwerk-Transport-Schnittstellentests, um diese Implementierungen zu validieren. Im folgenden Abschnitt erfahren Sie, wie Sie Ihr Projekt für die Ausführung dieser Tests einrichten.

Voraussetzungen

Um diesen Test zu portieren, benötigen Sie Folgendes:

  • Ein Projekt mit einem Build-System, das FreeRTOS mit einem validierten FreeRTOS-Kernelport erstellen kann.

  • Funktionierende Implementierung von Netzwerktreibern.

Portierung

  • HinzufügenFreeRTOS-Bibliotheken — Integrationstestsals Submodul in Ihr Projekt. Es spielt keine Rolle, wo sich das Submodul im Projekt befindet, solange es gebaut werden kann.

  • Kopierenconfig_template/test_execution_config_template.hundconfig_template/test_param_config_template.hzu einem Projektspeicherort im Build-Pfad und benennen sie um intest_execution_config.hundtest_param_config.h.

  • Nehmen Sie relevante Dateien in das Build-System auf. Wenn Sie verwendenCMake,qualification_test.cmakeundsrc/transport_interface_tests.cmakewerden verwendet, um relevante Dateien einzuschließen.

  • Implementieren Sie die folgenden Funktionen an einem geeigneten Projektstandort:

    • EINnetwork connect function: Die Signatur ist definiert durchNetworkConnectFuncinsrc/common/network_connection.h. Diese Funktion verwendet einen Zeiger auf den Netzwerkkontext, einen Zeiger auf Hostinformationen und einen Zeiger auf Netzwerkanmeldedaten. Sie stellt mit den angegebenen Netzwerkanmeldedaten eine Verbindung zu dem in den Host-Informationen angegebenen Server her.

    • EINnetwork disconnect function: Die Signatur ist definiert durchNetworkDisconnectFuncinsrc/common/network_connection.h. Diese Funktion nimmt einen Zeiger auf einen Netzwerkkontext auf. Sie trennt eine zuvor hergestellte Verbindung, die im Netzwerkkontext gespeichert ist.

    • setupTransportInterfaceTestParam(): Das ist definiert insrc/transport_interface/transport_interface_tests.h. Die Implementierung muss genau den gleichen Namen und die gleiche Signatur haben, wie sie in definiert sindtransport_interface_tests.h. Diese Funktion nimmt einen Zeiger auf einTransportInterfaceTestParamStruktur. Es wird die Felder in der füllenTransportInterfaceTestParamStruktur, die vom Transportschnittstellentest verwendet wird.

  • ImplementierenUNITY_OUTPUT_CHARsodass sich Testausgabeprotokolle nicht mit Geräteprotokollen überschneiden.

  • Rufen Sie anrunQualificationTest()aus der Anwendung. Die Gerätehardware muss ordnungsgemäß initialisiert und das Netzwerk muss vor dem Anruf verbunden sein.

Verwaltung von Anmeldeinformationen (auf dem Gerät generierter Schlüssel)

WannFORCE_GENERATE_NEW_KEY_PAIRintest_param_config.hist auf 1 gesetzt, generiert die Geräteanwendung ein neues key pair auf dem Gerät und gibt den öffentlichen Schlüssel aus. Die Geräteanwendung verwendetECHO_SERVER_ROOT_CAundTRANSPORT_CLIENT_CERTIFICATEals Root-CA des Echo-Servers und als Client-Zertifikat beim Aufbau einer TLS-Verbindung mit dem Echo-Server. IDT legt diese Parameter während des Qualifikationslaufs fest.

Verwaltung von Anmeldeinformationen (Schlüssel importieren)

Die Geräteanwendung verwendetECHO_SERVER_ROOT_CA,TRANSPORT_CLIENT_CERTIFICATEundTRANSPORT_CLIENT_PRIVATE_KEYintest_param_config.hals Root-CA des Echo-Servers, Client-Zertifikat und privater Client-Schlüssel, wenn eine TLS-Verbindung mit dem Echo-Server hergestellt wird. IDT legt diese Parameter während des Qualifikationslaufs fest.

Testen

In diesem Abschnitt wird beschrieben, wie Sie die Transportschnittstelle mit den Qualifikationstests lokal testen können. Weitere Informationen finden Sie untertransport_interfaceAbschnitt der FreeRTOS-Libraries-Integrationstests zu GitHub.

Alternativ können Sie auch IDT verwenden, um die Ausführung zu automatisieren. SieheAWS IoT Device Testerfür FreeRTOSin derFreeRTOS BenutzerhandbuchWeitere Informationen.

Den Test aktivieren

Öffnentest_execution_config.hund definiereTRANSPORT_INTERFACE_TEST_ENABLEDbis 1.

Richten Sie den Echo-Server zum Testen ein

Für lokale Tests ist ein Echoserver erforderlich, auf den von dem Gerät aus zugegriffen werden kann, auf dem die Tests ausgeführt werden. Der Echoserver muss TLS unterstützen, wenn die Implementierung der Transportschnittstelle TLS unterstützt. Wenn Sie noch keine haben,FreeRTOS-Bibliotheken — Integrationstests GitHub Das Repository hat eine Echo-Server-Implementierung.

Konfiguration des Projekts zum Testen

Imtest_param_config.h, aktualisierenECHO_SERVER_ENDPOINTundECHO_SERVER_PORTzum Endpunkt- und Server-Setup im vorherigen Schritt.

Anmeldeinformationen für die Einrichtung (auf dem Gerät generierter Schlüssel)

  • EingestelltECHO_SERVER_ROOT_CAzum Serverzertifikat des Echoservers.

  • EingestelltFORCE_GENERATE_NEW_KEY_PAIRauf 1, um ein key pair zu generieren und den öffentlichen Schlüssel zu erhalten.

  • Stellen Sie einFORCE_GENERATE_NEW_KEY_PAIRnach der Schlüsselgenerierung zurück auf 0.

  • Verwenden Sie den öffentlichen Schlüssel sowie den Serverschlüssel und das Zertifikat, um das Client-Zertifikat zu generieren.

  • SetTRANSPORT_CLIENT_CERTIFICATEzum generierten Client-Zertifikat.

Anmeldeinformationen einrichten (Schlüssel importieren)

  • EinstellenECHO_SERVER_ROOT_CAzum Serverzertifikat des Echoservers.

  • EingestelltTRANSPORT_CLIENT_CERTIFICATEzum vorgenerierten Client-Zertifikat.

  • SetTRANSPORT_CLIENT_PRIVATE_KEYzum vorgenerierten privaten Client-Schlüssel.

Erstellen und flashen Sie die Anwendung

Erstellen und flashen Sie die Anwendung mit der Toolchain Ihrer Wahl. WannrunQualificationTest()wird aufgerufen, werden die Tests der Transportschnittstelle ausgeführt. Die Testergebnisse werden an die serielle Schnittstelle ausgegeben.

Anmerkung

Um ein Gerät offiziell für FreeRTOS zu qualifizieren, müssen Sie den portierten Quellcode des Geräts anhand von OTA PAL- und OTA E2E-Testgruppen validieren mitAWS IoT Device Tester. Folgen Sie den Anweisungen unterVerwendenAWS IoT Device Testerfür FreeRTOSin derFreeRTOS BenutzerhandbucheinrichtenAWS IoT Device Testerfür die Portvalidierung. Um den Port einer bestimmten Bibliothek zu testen, muss die richtige Testgruppe in derdevice.jsonDatei imAWS IoT Device Tester configsOrdner.