

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
<a name="afr-porting-network-transport-interface"></a>

## Integration der TLS-Bibliothek
<a name="afr-porting-tls"></a>

Verwenden Sie für die TLS-Authentifizierung (Transport Layer Security) Ihren bevorzugten TLS-Stack. Wir empfehlen die Verwendung von [Mbed TLS](https://tls.mbed.org/), da es mit FreeRTOS-Bibliotheken getestet wurde. Ein Beispiel dafür finden Sie in diesem Repository. [GitHub](https://github.com/FreeRTOS/FreeRTOS)

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 TCP/IP Stack implementieren. Sie müssen die [TLS-Verschlüsselungssammlungen unterstützen, die von unterstützt werden](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html#tls-cipher-suite-support). AWS IoT

## Portierung der Network Transport Interface-Bibliothek
<a name="network-intro"></a>

[Sie müssen eine Netzwerktransportschnittstelle implementieren, um [CoreMQTT und CoreHTTP](https://www.freertos.org/mqtt/index.html) verwenden zu können.](https://www.freertos.org/http/index.html) Die Netzwerktransportschnittstelle enthält Funktionszeiger und Kontextdaten, die zum Senden und Empfangen von Daten über eine einzelne Netzwerkverbindung erforderlich sind. Weitere Informationen finden Sie unter [Transportschnittstelle](https://www.freertos.org/network-interface.html). 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
<a name="prereqs"></a>

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
<a name="porting-network-transport-interface"></a>
+ Fügen Sie [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests)es Ihrem Projekt als Submodul hinzu. Es spielt keine Rolle, wo sich das Submodul im Projekt befindet, solange es erstellt werden kann.
+ Kopieren Sie `config_template/test_execution_config_template.h` und `config_template/test_param_config_template.h` an einen Projektspeicherort im Buildpfad und benennen Sie sie in `test_execution_config.h` und `test_param_config.h` um.
+ Fügen Sie relevante Dateien in das Build-System ein. Falls verwendet`CMake`, `qualification_test.cmake` und `src/transport_interface_tests.cmake` werden verwendet, um relevante Dateien einzubeziehen.
+ Implementieren Sie die folgenden Funktionen an einem geeigneten Projektstandort:
+ 
  + A`network connect function`: Die Signatur ist durch `NetworkConnectFunc` in definiert`src/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.
  + A`network disconnect function`: Die Signatur ist durch `NetworkDisconnectFunc` in definiert`src/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()`: Dies ist in `src/transport_interface/transport_interface_tests.h` definiert. Die Implementierung muss genau den gleichen Namen und die gleiche Signatur haben wie in definiert`transport_interface_tests.h`. Diese Funktion nimmt einen Zeiger auf eine *TransportInterfaceTestParam*Struktur auf. Sie füllt die Felder in der *TransportInterfaceTestParam*Struktur auf, die vom Transportschnittstellentest verwendet wird.
+ Implementieren Sie **UNITY\$1OUTPUT\$1CHAR**, sodass sich die Testausgabeprotokolle nicht mit den Geräteprotokollen überschneiden.
+ `runQualificationTest()`Rufen Sie von der Anwendung aus an. 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)
<a name="cred-management-key"></a>

Wenn **FORCE\$1GENERATE\$1NEW\$1KEY\$1PAIR in auf 1 gesetzt `test_param_config.h` ist, generiert die Geräteanwendung ein neues key pair** auf dem Gerät und gibt den öffentlichen Schlüssel aus. Die Geräteanwendung verwendet **ECHO\$1SERVER\$1ROOT\$1CA und TRANSPORT\$1CLIENT\$1CERTIFICATE als Root-CA** **und Client-Zertifikat des Echoservers, wenn eine TLS-Verbindung mit dem Echo-Server hergestellt** wird. IDT legt diese Parameter während des Qualifikationslaufs fest. 

### Verwaltung von Anmeldeinformationen (Schlüssel importieren)
<a name="cred-management-importing-key"></a>

Die Geräteanwendung verwendet **ECHO\$1SERVER\$1ROOT\$1CA, TRANSPORT\$1CLIENT\$1CERTIFICATE** **und TRANSPORT\$1CLIENT\$1PRIVATE\$1KEY als Stammzertifizierungsstelle für den Echoserver, als Client-Zertifikat** **und `test_param_config.h` als privaten Client-Schlüssel**, wenn eine TLS-Verbindung mit dem Echo-Server hergestellt wird. IDT legt diese Parameter während des Qualifikationslaufs fest.

## Testen
<a name="testing-transport-interface"></a>

In diesem Abschnitt wird beschrieben, wie Sie die Transportschnittstelle mit den Qualifizierungstests lokal testen können. Zusätzliche Details finden Sie in der Datei README.md, die im Abschnitt [transport\$1interface](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/src/transport_interface) von on bereitgestellt wird. FreeRTOS-Libraries-Integration-Tests GitHub

Alternativ können Sie IDT auch verwenden, um die Ausführung zu automatisieren. Einzelheiten finden Sie unter [AWS IoT Device Tester für FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) im *FreeRTOS-Benutzerhandbuch*.

### Aktivieren Sie den Test
<a name="enabling-test"></a>

Öffnen `test_execution_config.h` und definieren Sie **TRANSPORT\$1INTERFACE\$1TEST\$1ENABLED auf 1.**

### Richten Sie den Echo-Server zum Testen ein
<a name="configuring-echo-server-test"></a>

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. Falls Sie noch keinen haben, verfügt das [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/tools/echo_server) GitHub Repository über eine Echo-Server-Implementierung.

### Konfiguration des Projekts zum Testen
<a name="configure-project"></a>

Aktualisieren Sie `test_param_config.h` unter **ECHO\$1SERVER\$1ENDPOINT und ECHO\$1SERVER\$1PORT** **auf das Endpunkt- und Server-Setup** im vorherigen Schritt.

### Anmeldeinformationen (auf dem Gerät generierter Schlüssel)
<a name="setup-credentials-device-key"></a>
+ Setzen Sie **ECHO\$1SERVER\$1ROOT\$1CA** auf das Serverzertifikat des Echoservers.
+ Setzen Sie **FORCE\$1GENERATE\$1NEW\$1KEY\$1PAIR auf 1, um ein key pair** zu generieren und den öffentlichen Schlüssel abzurufen.
+ **Setzen Sie FORCE\$1GENERATE\$1NEW\$1KEY\$1PAIR nach der Schlüsselgenerierung wieder auf 0.**
+ Verwenden Sie den öffentlichen Schlüssel sowie den Serverschlüssel und das Zertifikat, um das Client-Zertifikat zu generieren.
+ Setzen Sie **TRANSPORT\$1CLIENT\$1CERTIFICATE auf das generierte Client-Zertifikat**.

### Anmeldeinformationen einrichten (Schlüssel importieren)
<a name="setup-credentials-import-key"></a>
+ Setzen Sie **ECHO\$1SERVER\$1ROOT\$1CA** auf das Serverzertifikat des Echoservers.
+ **Setzen Sie TRANSPORT\$1CLIENT\$1CERTIFICATE auf das vorgenerierte Client-Zertifikat.**
+ Setzen Sie **TRANSPORT\$1CLIENT\$1PRIVATE\$1KEY auf den vorgenerierten privaten Client-Schlüssel**.

### Erstellen und flashen Sie die Anwendung
<a name="build-flash"></a>

Erstellen und flashen Sie die Anwendung mit der Toolchain Ihrer Wahl. Wenn aufgerufen `runQualificationTest()` wird, 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 mit validieren. AWS IoT Device Tester Folgen Sie den Anweisungen [unter Using AWS IoT Device Tester for FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) im *FreeRTOS User Guide, um die Port-Validierung* einzurichten AWS IoT Device Tester . Um den Port einer bestimmten Bibliothek zu testen, muss die richtige Testgruppe in der `device.json` Datei im Ordner aktiviert sein. AWS IoT Device Tester `configs`