

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Portare l'interfaccia di trasporto di rete
<a name="afr-porting-network-transport-interface"></a>

## Integrazione della libreria TLS
<a name="afr-porting-tls"></a>

Per l'autenticazione Transport Layer Security (TLS), usa il tuo stack TLS preferito. Ti consigliamo di utilizzare [Mbed TLS](https://tls.mbed.org/) perché è testato con le librerie FreerTOS. Puoi trovarne un esempio in questo repository. [GitHub](https://github.com/FreeRTOS/FreeRTOS)

Indipendentemente dall'implementazione TLS utilizzata dal dispositivo, è necessario implementare gli hook di trasporto sottostanti per lo stack TLS con stack. TCP/IP Devono supportare le suite di [crittografia TLS](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html#tls-cipher-suite-support) supportate da. AWS IoT

## Portare la libreria Network Transport Interface
<a name="network-intro"></a>

[È necessario implementare un'interfaccia di trasporto di rete per utilizzare [CoreMQTT e CoreHTTP](https://www.freertos.org/mqtt/index.html).](https://www.freertos.org/http/index.html) L'interfaccia di trasporto di rete contiene puntatori di funzioni e dati contestuali necessari per inviare e ricevere dati su una singola connessione di rete. Vedi [Transport Interface](https://www.freertos.org/network-interface.html) per maggiori dettagli. FreerTOS fornisce una serie di test di interfaccia di trasporto di rete integrati per convalidare queste implementazioni. La sezione seguente illustra come configurare il progetto per eseguire questi test. 

## Prerequisiti
<a name="prereqs"></a>

Per eseguire il porting di questo test, è necessario quanto segue:
+ Un progetto con un sistema di build in grado di creare FreerTOS con una porta del kernel FreerTOS convalidata.
+ Implementazione funzionante dei driver di rete.

## Portabilità
<a name="porting-network-transport-interface"></a>
+ Aggiungi [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests)come sottomodulo al tuo progetto. Non importa dove sia collocato il sottomodulo nel progetto, purché possa essere costruito.
+ Copia `config_template/test_execution_config_template.h` e `config_template/test_param_config_template.h` in una posizione del progetto nel percorso di creazione e rinominali in e. `test_execution_config.h` `test_param_config.h`
+ Includi i file pertinenti nel sistema di compilazione. Se si utilizza`CMake`, `qualification_test.cmake` e `src/transport_interface_tests.cmake` vengono utilizzati per includere i file pertinenti.
+ Implementa le seguenti funzioni in una posizione di progetto appropriata:
+ 
  + R`network connect function`: La firma è definita da `NetworkConnectFunc` in`src/common/network_connection.h`. Questa funzione utilizza un puntatore al contesto di rete, un puntatore alle informazioni sull'host e un puntatore alle credenziali di rete. Stabilisce una connessione con il server specificato nelle informazioni sull'host con le credenziali di rete fornite.
  + R`network disconnect function`: La firma è definita da `NetworkDisconnectFunc` in. `src/common/network_connection.h` Questa funzione inserisce un puntatore a un contesto di rete. Disconnette una connessione precedentemente stabilita memorizzata nel contesto di rete.
  + `setupTransportInterfaceTestParam()`: Questo è definito in`src/transport_interface/transport_interface_tests.h`. L'implementazione deve avere esattamente lo stesso nome e la stessa firma definiti in`transport_interface_tests.h`. Questa funzione inserisce un puntatore a una *TransportInterfaceTestParam*struttura. Compilerà i campi della *TransportInterfaceTestParam*struttura utilizzata dal test dell'interfaccia di trasporto.
+ Implementa **UNITY\_OUTPUT\_CHAR** in modo che i log di output del test non si interlacciano con i log del dispositivo.
+ `runQualificationTest()`Chiama dall'applicazione. L'hardware del dispositivo deve essere inizializzato correttamente e la rete deve essere connessa prima della chiamata.

### Gestione delle credenziali (chiave generata sul dispositivo)
<a name="cred-management-key"></a>

Quando **FORCE\_GENERATE\_NEW\_KEY\_PAIR in `test_param_config.h` è impostato su 1, l'applicazione del dispositivo genera una nuova coppia** di chiavi sul dispositivo e restituisce la chiave pubblica. **L'applicazione del dispositivo utilizza **ECHO\_SERVER\_ROOT\_CA e TRANSPORT\_CLIENT\_CERTIFICATE come CA root del server echo e certificato client quando stabilisce una connessione** TLS con il server echo.** IDT imposta questi parametri durante la fase di qualificazione. 

### Gestione delle credenziali (chiave di importazione)
<a name="cred-management-importing-key"></a>

L'applicazione del dispositivo utilizza **ECHO\_SERVER\_ROOT\_CA, TRANSPORT\_CLIENT\_CERTIFICATE** **e TRANSPORT\_CLIENT\_PRIVATE\_KEY `test_param_config.h` come CA principale del server echo, certificato** **client e chiave privata del client quando stabilisce** una connessione TLS con il server echo. IDT imposta questi parametri durante l'esecuzione della qualificazione.

## Test in corso
<a name="testing-transport-interface"></a>

Questa sezione descrive come testare localmente l'interfaccia di trasporto con i test di qualificazione. Ulteriori dettagli sono disponibili nel README.md file fornito nella sezione [transport\_interface](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/src/transport_interface) di on. FreeRTOS-Libraries-Integration-Tests GitHub

In alternativa, puoi anche usare IDT per automatizzare l'esecuzione. Vedi [AWS IoT Device Tester FreerTOS nella FreerTOS](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) User *Guide per i dettagli*.

### Abilita il test
<a name="enabling-test"></a>

Aprite `test_execution_config.h` e definite **TRANSPORT\_INTERFACE\_TEST\_ENABLED su 1**.

### Configura il server echo per il test
<a name="configuring-echo-server-test"></a>

Per i test locali è necessario un server echo accessibile dal dispositivo che esegue i test. Il server echo deve supportare TLS se l'implementazione dell'interfaccia di trasporto supporta TLS. Se non ne hai già uno, il [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/tools/echo_server) GitHub repository ha un'implementazione del server echo.

### Configurazione del progetto per il test
<a name="configure-project"></a>

In`test_param_config.h`, aggiorna **ECHO\_SERVER\_ENDPOINT e ECHO\_SERVER\_PORT alla configurazione dell'endpoint** **e del server nel passaggio precedente**.

### Credenziali di configurazione (chiave generata sul dispositivo)
<a name="setup-credentials-device-key"></a>
+ Imposta **ECHO\_SERVER\_ROOT\_CA sul** certificato del server echo.
+ Imposta **FORCE\_GENERATE\_NEW\_KEY\_PAIR su 1 per generare una coppia** di chiavi e ottenere la chiave pubblica.
+ Reimposta **FORCE\_GENERATE\_NEW\_KEY\_PAIR** su 0 dopo la generazione della chiave.
+ Utilizza la chiave pubblica, la chiave e il certificato del server per generare il certificato client.
+ Imposta **TRANSPORT\_CLIENT\_CERTIFICATE sul certificato** client generato.

### Credenziali di configurazione (chiave di importazione)
<a name="setup-credentials-import-key"></a>
+ Imposta **ECHO\_SERVER\_ROOT\_CA sul** certificato del server echo.
+ **Imposta TRANSPORT\_CLIENT\_CERTIFICATE** sul certificato client pregenerato.
+ Imposta **TRANSPORT\_CLIENT\_PRIVATE\_KEY sulla chiave privata del client** pregenerata.

### Crea e esegui il flashing dell'applicazione
<a name="build-flash"></a>

Crea ed esegui il flashing dell'applicazione utilizzando la toolchain che preferisci. Quando `runQualificationTest()` viene richiamato, verranno eseguiti i test dell'interfaccia di trasporto. I risultati dei test vengono inviati alla porta seriale.

**Nota**  
Per qualificare ufficialmente un dispositivo per FreerTOS, è necessario convalidare il codice sorgente portato del dispositivo rispetto ai gruppi di test OTA PAL e OTA E2E con. AWS IoT Device Tester Segui le istruzioni in [Using AWS IoT Device Tester for FreerTOS](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) nella FreeRTOS *User Guide per configurare la convalida delle porte*. AWS IoT Device Tester Per testare la porta di una libreria specifica, è necessario abilitare il gruppo di test corretto nel file nella `device.json` cartella. AWS IoT Device Tester `configs`