Portare l'interfaccia di trasporto di rete - Gratuito RTOS

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

Integrazione della libreria TLS

Per l'autenticazione Transport Layer Security (TLS), utilizza il tuo stack TLS preferito. Consigliamo l'utilizzoTransport Transport Transport Transportperché è testato con le librerie FreerTOS. Puoi trovarne un esempio in questoGitHubdeposito.

Indipendentemente dall'implementazione TLS utilizzata dal dispositivo, è necessario implementare gli hook di trasporto sottostanti per lo stack TLS con lo stack TCP/IP. Devono sostenere ilsuite di crittografia TLS supportate daAWS IoT.

Portare la libreria Network Transport Interface

È necessario implementare un'interfaccia di trasporto di rete da utilizzareCoreMQTTeCoreHTTP. Network Transport Interface contiene puntatori di funzioni e dati contestuali necessari per inviare e ricevere dati su una singola connessione di rete. VediInterfaccia di trasportoper ulteriori informazioni. 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

Per il porting del test, sono necessari i seguenti elementi:

  • 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à

  • InserisciTest di integrazione delle librerie ERTOS gratuiticome sottomodulo del tuo progetto. Non importa dove sia collocato il sottomodulo nel progetto, purché possa essere costruito.

  • Copiaconfig_template/test_execution_config_template.heconfig_template/test_param_config_template.hin una posizione del progetto nel percorso di creazione e rinominali intest_execution_config.hetest_param_config.h.

  • Includi i file pertinenti nel sistema di compilazione. Se si utilizzaCMake,qualification_test.cmakeesrc/transport_interface_tests.cmakevengono utilizzati per includere i file pertinenti.

  • Implementa le seguenti funzioni in una sede di progetto appropriata:

    • UNnetwork connect function: La firma è definita daNetworkConnectFuncnelsrc/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.

    • UNnetwork disconnect function: La firma è definita daNetworkDisconnectFuncnelsrc/common/network_connection.h. Questa funzione utilizza un puntatore a un contesto di rete. Disconnette una connessione precedentemente stabilita memorizzata nel contesto di rete.

    • setupTransportInterfaceTestParam(): Questo è definito insrc/transport_interface/transport_interface_tests.h. L'implementazione deve avere esattamente lo stesso nome e la stessa firma definiti intransport_interface_tests.h. Questa funzione utilizza un puntatore aTransportInterfaceTestParamstruttura. Popolerà i campi delTransportInterfaceTestParamstruttura utilizzata dal test dell'interfaccia di trasporto.

  • IMPLEMENTAREUNITY_OUTPUT_CHARin modo che i registri di output del test non si interlacciano con i registri del dispositivo.

  • ChiamarunQualificationTest()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)

QuandoFORCE_GENERATE_NEW_KEY_PAIRneltest_param_config.hè impostato su 1, l'applicazione del dispositivo genera una nuova coppia di chiavi sul dispositivo ed emette la chiave pubblica. L'applicazione del dispositivo utilizzaECHO_SERVER_ROOT_CAeTRANSPORT_CLIENT_CERTIFICATEcome CA root del server echo e certificato client quando si stabilisce una connessione TLS con il server echo. IDT imposta questi parametri durante la fase di qualificazione.

Gestione delle credenziali (chiave di importazione)

L'applicazione del dispositivo utilizzaECHO_SERVER_ROOT_CA,CERTIFICATO_CLIENT_TRASPORTOeTRANSPORT_CLIENT_PRIVATE_KEYneltest_param_config.hcome CA principale del server echo, certificato client e chiave privata del client quando si stabilisce una connessione TLS con il server echo. IDT imposta questi parametri durante la fase di qualificazione.

Test

Questa sezione descrive come testare localmente l'interfaccia di trasporto con i test di qualificazione. Ulteriori informazioni sono disponibili nel file README.md fornito neltransport_interfacesezione dei FreeRTOS-Libraries-Integration-Tests su GitHub.

In alternativa, puoi anche utilizzare IDT per automatizzare l'esecuzione. VediAWS IoT Device Testerper FreerTOSnelGuida per l'utente di FreerTOSper ulteriori informazioni.

Abilita il test

Apriretest_execution_config.he definisciTRANSPORT_INTERFACE_TEST_ENABLEDa 1.

Configura il server echo per il test

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à il certificato,Test di integrazione delle librerie ERTOS gratuiti GitHub il repository ha un'implementazione del server echo.

Configurazione del progetto per i test

Intest_param_config.h, aggiornaECHO_SERVER_ENDPOINTeECHO_SERVER_PORTalla configurazione dell'endpoint e del server nel passaggio precedente.

Credenziali di configurazione (chiave generata sul dispositivo)

  • ImpostareECHO_SERVER_ROOT_CAal certificato del server echo.

  • ImpostareFORCE_GENERATE_NEW_KEY_PAIRa 1 per generare una coppia di chiavi e ottenere la chiave pubblica.

  • ImpostareFORCE_GENERATE_NEW_KEY_PAIRtorna a 0 dopo la generazione della chiave.

  • Usa la chiave pubblica e la chiave e il certificato del server per generare il certificato client.

  • ImpostareTRANSPORT_CLIENT_CERTIFICATEal certificato client generato.

Credenziali di configurazione (chiave di importazione)

  • ImpostareECHO_SERVER_ROOT_CAal certificato del server echo.

  • ImpostareTRANSPORT_CLIENT_CERTIFICATEal certificato client pregenerato.

  • ImpostareTRANSPORT_CLIENT_PRIVATE_KEYalla chiave privata del client pregenerata.

Crea ed esegui il flashing dell'applicazione

Crea ed esegui il flashing dell'applicazione utilizzando la toolchain che preferisci. QuandorunQualificationTest()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 conAWS IoT Device Tester. Segui le istruzioni inUsandoAWS IoT Device Testerper FreerTOSnelGuida per l'utente di FreerTOSda configurareAWS IoT Device Testerper la convalida delle porte. Per testare la porta di una libreria specifica, è necessario abilitare il gruppo di test corretto neldevice.jsonfile inAWS IoT Device Tester configscartella.