Portabilidad de la interfaz de transporte de red - FreeRTOS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Portabilidad de la interfaz de transporte de red

Integración de la biblioteca TLS

Para la autenticación de la seguridad de la capa de transporte (TLS), utilice la pila de TLS que prefiera. Recomendamos usar Mbed TLS porque se ha probado con las bibliotecas FreeRTOS. Puede encontrar un ejemplo en este repositorio de GitHub.

Independientemente de la implementación de TLS que utilice su dispositivo, debe implementar los enlaces de transporte subyacentes para la pila de TLS con la pila de TCP/IP. Deben ser compatibles con los conjuntos de cifrado TLS compatibles con AWS IoT.

Portabilidad de la biblioteca de interfaces de transporte de red

Debe implementar una interfaz de transporte de red para usar coreMQTT y coreHTTP. La interfaz de transporte de red contiene los punteros de función y los datos de contexto necesarios para enviar y recibir datos en una sola conexión de red. Consulte Interfaz de transporte para obtener más información. FreeRTOS proporciona un conjunto de pruebas de interfaz de transporte de red integradas para validar estas implementaciones. La siguiente sección le guía sobre cómo configurar su proyecto para ejecutar estas pruebas.

Requisitos previos

Para realizar la portabilidad de esta prueba, necesita lo siguiente:

  • Un proyecto con un sistema de creación que permita crear FreeRTOS con un puerto de kernel de FreeRTOS validado.

  • Implementación funcional de los controladores de red.

Portabilidad

  • Añada FreeRTOS-Libraries-Integration-Tests como un submódulo al proyecto. No importa dónde se coloque el submódulo en el proyecto, siempre que se pueda crear.

  • Copie config_template/test_execution_config_template.h y config_template/test_param_config_template.h en una ubicación del proyecto en la ruta de creación y cámbieles el nombre a test_execution_config.h y test_param_config.h.

  • Incluya los archivos relevantes en el sistema creación. Si utiliza CMake, qualification_test.cmake y src/transport_interface_tests.cmake se usan para incluir los archivos relevantes.

  • Implemente las siguientes funciones en la ubicación adecuada del proyecto:

    • Una network connect function: la firma se define mediante NetworkConnectFunc en src/common/network_connection.h. Esta función incorpora un puntero al contexto de red, un puntero a la información del host y un puntero a las credenciales de red. Establece una conexión con el servidor especificado en la información del host con las credenciales de red proporcionadas.

    • Una network disconnect function: la firma se define mediante NetworkDisconnectFunc en src/common/network_connection.h. Esta función incorpora un puntero a un contexto de red. Desconecta una conexión establecida previamente almacenada en el contexto de red.

    • setupTransportInterfaceTestParam(): se define en src/transport_interface/transport_interface_tests.h. La implementación debe tener exactamente el mismo nombre y firma que se definen en transport_interface_tests.h. Esta función incorpora un puntero a una estructura TransportInterfaceTestParam. Rellenará los campos de la estructura TransportInterfaceTestParam que se utiliza en la prueba de la interfaz de transporte.

  • Implemente UNITY_OUTPUT_CHAR para que los registros de salida de la prueba no se intercalen con los registros del dispositivo.

  • Llame a runQualificationTest()desde la aplicación. El hardware del dispositivo debe estar correctamente inicializado y la red debe estar conectada antes de la llamada.

Gestión de credenciales (clave generada en el dispositivo)

Cuando FORCE_GENERATE_NEW_KEY_PAIR en test_param_config.h se establece en 1, la aplicación del dispositivo genera un nuevo par de claves en el dispositivo y genera la clave pública. La aplicación del dispositivo utiliza ECHO_SERVER_ROOT_CA y TRANSPORT_CLIENT_CERTIFICATE como CA raíz del servidor echo y certificado de cliente al establecer una conexión TLS con el servidor echo. IDT establece estos parámetros durante la ejecución de la calificación.

Gestión de credenciales (clave de importación)

La aplicación del dispositivo utiliza ECHO_SERVER_ROOT_CA, TRANSPORT_CLIENT_CERTIFICATE y TRANSPORT_CLIENT_PRIVATE_KEY en test_param_config.h como CA raíz del servidor echo, certificado de cliente y clave privada de cliente al establecer una conexión TLS con el servidor echo. IDT establece estos parámetros durante la ejecución de la calificación.

Pruebas

En esta sección se describe cómo puede probar localmente la interfaz de transporte con las pruebas de calificación. Puede encontrar detalles adicionales en el archivo README.md que se proporciona en la sección transport_interface de FreeRTOS-Libraries-Integration-Tests en GitHub.

También puede utilizar IDT para automatizar la ejecución. Consulte AWS IoT Device Tester para FreeRTOS en la Guía del usuario de FreeRTOS para obtener más información.

Habilitación de la prueba

Abra test_execution_config.h y defina TRANSPORT_INTERFACE_TEST_ENABLED en 1.

Configuración del servidor echo para realizar las pruebas

Para realizar las pruebas locales, es necesario disponer de un servidor de eco al que se pueda acceder desde el dispositivo que ejecuta las pruebas. El servidor echo debe admitir TLS si la implementación de la interfaz de transporte admite TLS. Si aún no tiene uno, el repositorio GitHub FreeRTOS-Libraries-Integration-Tests tiene una implementación de servidor echo.

Configuración del proyecto para probarlo

En test_param_config.h, actualice ECHO_SERVER_ENDPOINT y ECHO_SERVER_PORT con la configuración del punto de conexión y del servidor del paso anterior.

Configuración de las credenciales (clave generada en el dispositivo)

  • Establezca ECHO_SERVER_ROOT_CA con el certificado de servidor del servidor echo.

  • Establezca FORCE_GENERATE_NEW_KEY_PAIR en 1 para generar un par de claves y obtener la clave pública.

  • Vuelva a establecer FORCE_GENERATE_NEW_KEY_PAIR en 0 tras la generación de la clave.

  • Utilice la clave pública y la clave y el certificado de servidor para generar el certificado de cliente.

  • Establezca TRANSPORT_CLIENT_CERTIFICATE con el certificado de cliente generado.

Configuración de las credenciales (clave de importación)

  • Establezca ECHO_SERVER_ROOT_CA con el certificado de servidor del servidor echo.

  • Establezca TRANSPORT_CLIENT_CERTIFICATE con el certificado de cliente generado previamente.

  • Establezca TRANSPORT_CLIENT_PRIVATE_KEY con la clave privada de cliente generada previamente.

Creación e instalación de la aplicación

Cree e instale la aplicación con la cadena de herramientas que prefiera. Cuando se invoque a runQualificationTest(), se ejecutarán las pruebas de la interfaz de transporte. Los resultados de la prueba se envían al puerto de serie.

nota

Para calificar oficialmente un dispositivo para FreeRTOS, debe validar el código fuente portado del dispositivo con los grupos de prueba OTA PAL y OTA E2E con AWS IoT Device Tester. Siga las instrucciones de Uso de AWS IoT Device Tester para FreeRTOS en la Guía del usuario de FreeRTOS para configurar AWS IoT Device Tester para la validación de la portabilidad. Para probar la portabilidad de una biblioteca concreta, se debe habilitar el grupo de pruebas correcto en el archivo device.json de la carpeta configs de AWS IoT Device Tester.