Solución de problemas - 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.

Solución de problemas

importante

Esta es una versión archivada de la Guía del usuario de FreeRTOS para su uso con la versión 202012.00 de FreeRTOS. Para obtener la última versión de este documento, consulte la Guía del usuario de FreeRTOS.

Cada ejecución del conjunto de pruebas tiene un ID de ejecución único que se utiliza para crear una carpeta llamada results/execution-id en el directorio results. Los registros de grupos de pruebas individuales se encuentran en el directorio results/execution-id/logs. Utilice la salida de la consola de IDT para FreeRTOS para encontrar el ID de ejecución, el del caso de prueba y el del grupo de pruebas que tiene errores y, a continuación, abra el archivo de registro de ese caso de prueba llamado results/execution-id/logs/test_group_id__test_case_id.log. La información que incluye este archivo es la siguiente:

  • Salida completa de los comandos Build y Flash.

  • Salida de la ejecución de la prueba.

  • Más información sobre la salida de la consola de IDT para FreeRTOS.

Le recomendamos que utilice el siguiente flujo de trabajo para solucionar problemas:

  1. Si aparece el error «no user/role está autorizado a acceder a este recurso», asegúrese de configurar los permisos tal y como se especifica en.

  2. Lea la salida de la consola para obtener información, como el UUID de ejecución y las tareas que se están ejecutando actualmente.

  3. Examine el archivo FRQ_Report.xml para ver la lista de errores de cada prueba. Este directorio contiene los registros de ejecución de cada grupo de pruebas.

  4. Consulte los archivos de registro de /results/execution-id/logs.

  5. Investigue alguna de las siguientes áreas de problemas:

    • Configuración del dispositivo, como archivos de configuración JSON en la carpeta /configs/.

    • Interfaz del dispositivo. Compruebe los registros para determinar qué interfaz produce el error.

    • Herramientas de dispositivos. Asegúrese de que las cadenas de herramientas de compilación y actualización del dispositivo estén instaladas y configuradas correctamente.

    • Asegúrese de que tiene una versión limpia y clonada del código fuente de FreeRTOS. Las versiones de FreeRTOS se etiquetan según la versión de FreeRTOS. Para clonar una versión específica del código, utilice los comandos siguientes:

      git clone --branch version-number https://github.com/aws/amazon-freertos.git cd amazon-freertos git submodule update --checkout --init --recursive

Solución de problemas de configuración del dispositivo

Al utilizar IDT para FreeRTOS, debe tener implementados los archivos de configuración correctos antes de ejecutar el binario. Si obtiene errores de análisis y de configuración, el primer paso debe ser localizar y utilizar una plantilla de configuración adecuada para su entorno. Estas plantillas se encuentran en el directorio IDT_ROOT/configs.

Si continúa teniendo problemas, consulte el siguiente proceso de depuración.

¿Dónde buscar?

Para empezar, lea la salida de la consola para obtener información, como el UUID de ejecución, que se denomina execution-id en esta documentación.

A continuación, examine el archivo FRQ_Report.xml del directorio /results/execution-id. Este archivo contiene todos los casos de prueba ejecutados y los fragmentos de error de cada error. Para obtener todos los registros de ejecución, busque el archivo /results/execution-id/logs/test_group_id__test_case_id.log de cada caso de prueba.

Códigos de error de IDT

En la siguiente tabla se explican los códigos de error generados por IDT para FreeRTOS:

Código de error Nombre del código de error Causa posible Solución de problemas

201

InvalidInputError

Los campos de device.json, config.json o userdata.json faltan o tienen un formato incorrecto.

Asegúrese de que no falten los campos obligatorios y de que tengan el formato obligatorio en los archivos de la lista. Para obtener más información, consulte Preparación para probar su placa de microcontrolador por primera vez.

202

ValidationError

Los campos de device.json, config.json o userdata.json contienen valores no válidos.

Compruebe el mensaje de error en la parte derecha del código de error del informe:

  • AWS Región no válida: especifique una AWS región válida en el config.json archivo. Para obtener más información sobre AWS las regiones, consulte Regiones y puntos finales.

  • AWS Credenciales no válidas: establezca AWS credenciales válidas en su máquina de prueba (mediante variables de entorno o el archivo de credenciales). Compruebe que el campo de autenticación se haya configurado correctamente. Para obtener más información, consulte .

203

CopySourceCodeError

No se puede copiar el código fuente de FreeRTOS en el directorio especificado.

Compruebe los siguientes elementos:

  • Compruebe que se haya especificado una sourcePath válida en el archivo userdata.json.

  • Elimine la carpeta build del directorio del código fuente de FreeRTOS, si existe. Para obtener más información, consulte Configurar ajustes de Build, Flash y Test.

204

BuildSourceError

No se puede compilar el código fuente de FreeRTOS.

Compruebe los siguientes elementos:

  • Compruebe que la información de buildTool del archivo userdata.json sea correcta.

  • Si utiliza cmake como herramienta de compilación, asegúrese de que se haya especificado {{enableTests}} en el comando buildTool. Para obtener más información, consulte Configurar ajustes de Build, Flash y Test.

  • Si ha extraído IDT para FreeRTOS a una ruta de archivo de su sistema que contiene espacios, por ejemplo, C:\Users\My Name\Desktop\, es posible que necesite comillas adicionales dentro de los comandos de compilación para asegurarse de que las rutas se analizan correctamente. Es posible que necesite lo mismo para los comandos flash.

205

FlashOrRunTestError

IDT para FreeRTOS no puede instalar ni ejecutar FreeRTOS en su DUT.

Compruebe que la información de flashTool del archivo userdata.json sea correcta. Para obtener más información, consulte Configurar ajustes de Build, Flash y Test.

206

StartEchoServerError

IDT FreeRTOS no puede iniciar el servidor echo para las pruebas ni para WiFi las pruebas de sockets seguros.

Compruebe que los puertos que están configurados en echoServerConfiguration del archivo userdata.json no estén en uso o bloqueados por la configuración de la red o del firewall.

Depuración de errores de análisis

Ocasionalmente, un error tipográfico en una configuración de JSON puede dar lugar a errores de análisis. En la mayoría de los casos, el problema es resultado de omitir un paréntesis, una coma o unas comillas en el archivo JSON. IDT para FreeRTOS realiza la validación de JSON e imprime información de depuración. Imprime la línea en la que se produjo el error, el número de línea y el número de la columna del error de sintaxis. Esta información debería ser suficiente para ayudarte a corregir el error, pero si sigues teniendo problemas para localizar el error, puedes realizar la validación manualmente en tu IDE, en un editor de texto como Atom o Sublime, o a través de una herramienta online similar. JSONLint

Depuración de errores de comprobación de integridad

Cuando ejecutes el grupo de RTOSIntegrity pruebas Free y encuentres errores, asegúrate primero de no haber modificado ninguno de los archivos del freertos directorio. Si no lo ha hecho y sigue teniendo problemas, asegúrese de que está utilizando la rama correcta. Si ha ejecutado el comando list-supported-products de IDT, podrá encontrar qué rama etiquetada del repositorio freertos debería estar usando.

Si ha clonado la rama etiquetada correcta del repositorio freertos y sigue teniendo problemas, asegúrese de haber ejecutado también el comando submodule update. El flujo de trabajo de clonación del repositorio freertos es el siguiente.

git clone --branch version-number https://github.com/aws/amazon-freertos.git cd amazon-freertos git submodule update --checkout —init —recursive

La lista de archivos que busca el comprobador de integridad se encuentra en el archivo checksums.json de su directorio freertos. Para calificar un puerto de FreeRTOS sin modificar los archivos ni la estructura de carpetas, asegúrese de que no se haya modificado ninguno de los archivos que figuran en las secciones “exhaustive” y “minimal” del archivo checksums.json. Para ejecutarlo con un SDK configurado, compruebe que no se haya modificado ninguno de los archivos de la sección “minimal”.

Si ha ejecutado IDT con un SDK y ha modificado algunos archivos del directorio freertos, asegúrese de configurar correctamente el SDK en el archivo userdata. De lo contrario, el comprobador de integridad verificará todos los archivos del directorio freertos.

Depuración de errores del grupo FullWiFi de prueba

Si ve errores en el grupo de FullWiFi prueba y la prueba «AFQP_WiFiConnectMultipleAP» falla, puede deberse a que ambos puntos de acceso no están en la misma subred que el equipo host que ejecuta IDT. Asegúrese de que ambos puntos de acceso estén en la misma subred que el equipo host que ejecuta IDT.

Depuración de error de “ausencia de parámetro obligatorio”

Dado que se están añadiendo nuevas características a IDT para FreeRTOS, es posible que se hayan introducido cambios en los archivos de configuración. Utilizar un archivo de configuración antiguo podría romper la configuración. Si esto ocurre, en el archivo test_group_id__test_case_id.log del directorio results/execution-id/logs se muestran explícitamente todos los parámetros que faltan. IDT para FreeRTOS también valida los esquemas del archivo de configuración JSON para asegurarse de que se ha utilizado la versión más reciente compatible.

Depuración de error de “imposibilidad de iniciar una prueba”

Es posible que vea errores que apuntan a fallos durante el inicio de las pruebas. Dado que hay varias causas posibles, asegúrese de comprobar que las siguientes áreas son correctas:

  • Asegúrese de que el nombre del grupo que ha incluido en el comando de ejecución realmente existe. A esto se hace referencia directamente desde el archivo device.json.

  • Asegúrese de que el dispositivo o dispositivos del grupo tienen parámetros de configuración correctos.

Error que indica “not authorized to access resource”

Es posible que aparezca el error «no user/role está autorizado a acceder a este recurso» en la salida del terminal o en el test_manager.log archivo que se encuentra debajo. /results/execution-id/logs Para resolver este problema, asocie la política administrada AWSIoTDeviceTesterForFreeRTOSFullAccess al usuario de prueba. Para obtener más información, consulte .

Depuración de errores de prueba de red

En las pruebas basada en red, IDT inicia un servidor de eco que se vincula a un puerto no reservado en el equipo host. Si se producen errores debido a que se han agotado los tiempos de espera o a que las conexiones no están disponibles en las pruebas WiFi o en las pruebas de sockets seguros, asegúrese de que la red esté configurada para permitir el tráfico a los puertos configurados en el rango de 1024 a 49151.

Las pruebas de sockets seguros utiliza los puertos 33333 y 33334 de forma predeterminada. Las WiFi pruebas utilizan el puerto 33335 de forma predeterminada. Si estos tres puertos están en uso o bloqueados por el firewall o la red, puede elegir puertos diferentes para las pruebas en userdata.json. Para obtener más información, consulte Configurar ajustes de Build, Flash y Test. Puede utilizar los siguientes comandos para comprobar si un puerto específico está en uso:

  • Windows: netsh advfirewall firewall show rule name=all | grep port

  • Linux: sudo netstat -pan | grep port

  • macOS: netstat -nat | grep port

Errores de actualización de OTA producidos por una carga útil de la misma versión

Si los casos de prueba OTA fallan porque la misma versión está en el dispositivo después de haber realizado una operación OTA, puede deberse a que su sistema de compilación (por ejemplo, cmake) no reconoció los cambios de IDT en el código fuente de FreeRTOS y no creó un binario actualizado. Esto hace que la actualización OTA se realice con el mismo binario que está actualmente en el dispositivo y que la prueba produzca un error. Para solucionar errores de actualización OTA, comience por asegurarse de que está utilizando la última versión compatible de su sistema de compilación.

Fallo de prueba de OTA en caso de prueba de PresignedUrlExpired

Un requisito previo de esta prueba es que el tiempo de actualización OTA sea superior a 60 segundos; de lo contrario, la prueba producirá un error. Si esto ocurre, encontrará el siguiente mensaje de error en el registro: "Test takes less than 60 seconds (url expired time) to finish. Please reach out to us" (La prueba tarda menos de 60 segundos (tiempo de vencimiento de la url) en finalizar. Póngase en contacto con nosotros.).

Depuración de errores de puerto e interfaz del dispositivo

Esta sección contiene información acerca de las interfaces de dispositivo que IDT utiliza para conectarse a sus dispositivos.

Plataformas admitidas

IDT es compatible con Linux, macOS y Windows. Las tres plataformas tienen diferentes esquemas de nomenclatura para dispositivos de serie que se asocian a ellas:

  • Linux: /dev/tty*

  • macOS: /dev/tty.* o /dev/cu.*

  • Windows: COM*

Para comprobar el puerto del dispositivo:

  • En Linux/macOS, abra un terminal y ejecute ls /dev/tty*.

  • En macOS, abra un terminal y ejecute ls /dev/tty.* o ls /dev/cu.*.

  • En el caso de Windows, abra el Administrador de dispositivos y expanda el grupo de dispositivos de serie.

Para verificar qué dispositivo está conectado a un puerto:

  • En Linux, asegúrese de que el paquete udev está instalado y, a continuación, ejecute udevadm info –name=PORT. Esta utilidad imprime información del controlador de dispositivo que le ayuda a verificar que está utilizando el puerto correcto.

  • En macOS, abra Launchpad y busque System Information.

  • En el caso de Windows, abra el Administrador de dispositivos y expanda el grupo de dispositivos de serie.

Interfaces de dispositivos

Cada dispositivo integrado es diferente, lo que significa que pueden tener uno o más puertos de serie. Es frecuente que los dispositivos tengan dos puertos cuando se conectan a un equipo.

  • Un puerto de datos para actualizar el dispositivo.

  • Un puerto de lectura para leer la salida.

    Debe establecer el puerto de lectura correcto en el archivo device.json. De lo contrario, podría no ser posible leer la salida del dispositivo.

    En el caso de varios puertos, asegúrese de utilizar el puerto de lectura del dispositivo en el archivo device.json. Por ejemplo, si conectas un WRover dispositivo Espressif y los dos puertos que tiene asignados son /dev/ttyUSB0 y/dev/ttyUSB1, /dev/ttyUSB1 utilízalo en tu archivo. device.json

    En el caso de Windows, siga la misma lógica.

Lectura de datos de dispositivo

IDT para FreeRTOS utiliza herramientas individuales de compilación e instalación de dispositivos para especificar la configuración de los puertos. Si va a probar el dispositivo y no obtiene salida, pruebe los valores predeterminados siguientes:

  • Velocidad en baudios: 115 200

  • Bits de datos: 8

  • Paridad: ninguna

  • Bits de parada: 1

  • Control del flujo: ninguno

IDT para FreeRTOS administra esta configuración. No tiene que definirla. Sin embargo, puede utilizar el mismo método para leer manualmente la salida del dispositivo. En Linux o macOS, puede hacerlo con el comando screen. En Windows, puede usar un programa como. TeraTerm

Screen: screen /dev/cu.usbserial 115200

TeraTerm: Use the above-provided settings to set the fields explicitly in the GUI.

Problemas de la cadena de herramientas de desarrollo

En esta sección se explican los problemas que pueden ocurrir con la cadena de herramientas.

Code Composer Studio en Ubuntu

Las versiones más recientes de Ubuntu (17.10 y 18.04) tienen una versión del paquete glibc que no es compatible con las versiones de Code Composer Studio 7.x. Se recomienda instalar la versión de Code Composer Studio 8.2 o posterior.

Los síntomas de incompatibilidad podrían incluir:

  • FreeRTOS no puede compilarse ni instalarse en el dispositivo.

  • El instalador de Code Composer Studio puede bloquearse.

  • No se muestra la salida de registro en la consola durante el proceso de compilación o actualización.

  • El comando de compilación intenta lanzarse en modo GUI incluso cuando se invoca como sin encabezado.

Registro

Los registros de IDT para FreeRTOS se colocan en una única ubicación. En el directorio IDT raíz, estos archivos están disponibles en results/execution-id/:

  • FRQ_Report.xml

  • awsiotdevicetester_report.xml

  • logs/test_group_id__test_case_id.log

FRQ_Report.xml y logs/test_group_id__test_case_id.log son los registros más importantes que debe examinar. FRQ_Report.xml contiene información sobre qué casos de prueba registraron errores con un mensaje específico. Puede utilizar logs/test_group_id__test_case_id.log para investigar más a fondo el problema y tener más contexto.

Errores de la consola

Cuando AWS IoT Device Tester se ejecuta, los errores se notifican a la consola con breves mensajes. Busque en results/execution-id/logs/test_group_id__test_case_id.log para obtener más información sobre el error.

Errores de registro

Cada ejecución del conjunto de pruebas tiene un ID único que se utiliza para crear una carpeta llamada results/execution-id. Los registros de casos de prueba individuales se encuentran en el directorio results/execution-id/logs. Utilice la salida de la consola de IDT para FreeRTOS para encontrar el ID de ejecución, el ID del caso de prueba y el ID del grupo de pruebas que tiene errores. A continuación, utilice esta información para buscar y abrir el archivo de registro correspondiente al caso de prueba denominado. results/execution-id/logs/test_group_id__test_case_id.log La información de este archivo incluye el resultado completo de los comandos build y flash, el resultado de la ejecución de la prueba y el resultado de la AWS IoT Device Tester consola más detallado.

Problemas con los buckets de S3

Si pulsa CTRL+C al ejecutar IDT, IDT iniciará un proceso de limpieza. Parte de esa limpieza consiste en eliminar los recursos de Amazon S3 que se crearon como parte de las pruebas de IDT. Si la limpieza no puede finalizar, es posible que se produzca un problema por el hecho de que se hayan creado demasiados buckets de Amazon S3. Esto significa que la próxima vez que ejecute IDT, las pruebas comenzarán a fallar.

Si pulsa CTRL+C para detener IDT, debe dejar que finalice el proceso de limpieza para evitar este problema. También puede eliminar los buckets de Amazon S3 de su cuenta que se crearon manualmente.

Resolución de problemas de errores de tiempo de espera

Si ve errores de tiempo de espera mientras ejecuta un conjunto de pruebas, aumente el tiempo de espera especificando un factor multiplicador de tiempo de espera. Este factor se aplica al valor de tiempo de espera predeterminado. Cualquier valor configurado para esta marca debe ser superior o igual a 1,0. Para utilizar el multiplicador de tiempo de espera, utilice la marca --timeout-multiplier al ejecutar el conjunto de pruebas.

IDT v3.0.0 and later
./devicetester_linux run-suite --suite-id FRQ_1.0.1 --pool-id DevicePool1 --timeout-multiplier 2.5
IDT v1.7.0 and earlier
./devicetester_linux run-suite --suite-id FRQ_1 --pool-id DevicePool1 --timeout-multiplier 2.5

Función móvil y cargos AWS

Cuando la Cellular función esté configurada Yes en su device.JSON archivo, FullSecureSockets utilizará EC2 instancias de t.micro para ejecutar las pruebas, lo que puede suponer costes adicionales para su AWS cuenta. Para obtener más información, consulta los EC2 precios de Amazon.

Política de generación de informes de calificación

Los informes de calificación solo los generan las versiones AWS IoT Device Tester (IDT) que admiten las versiones de FreeRTOS publicadas en los últimos dos años. Si tiene alguna pregunta acerca de la política de compatibilidad, póngase en contacto con AWS Support.