Biblioteca de actualizaciones inalámbricas de AWS IoT - Gratuito RTOS

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.

Biblioteca de actualizaciones inalámbricas de AWS IoT

nota

Es posible que el contenido de esta página no esté actualizado. Consulte la página de la biblioteca de FreeRTOS.org para obtener la última actualización.

Introducción

La Biblioteca de actualizaciones inalámbricas de AWS IoT le permite administrar la notificación, descarga y verificación de actualizaciones de firmware para dispositivos de FreeRTOS que utilizan HTTP o MQTT como protocolo. Mediante la biblioteca de Agente de OTA, puede separar lógicamente las actualizaciones de firmware y la aplicación que se ejecuta en sus dispositivos. El Agente de OTA pueden compartir una conexión de red con la aplicación. Compartir una conexión de red le ofrece el potencial de ahorrar una cantidad considerable de RAM. Además, la biblioteca de Agentes de OTA le permite definir lógica específica de la aplicación para realizar pruebas, confirmar o revertir una actualización de firmware.

El Internet de las cosas (IoT) extiende la conectividad a Internet a los dispositivos integrados que tradicionalmente no estaban conectados. Estos dispositivos se pueden programar para comunicar datos utilizables a través de Internet y se pueden supervisar y controlar de forma remota. Con los avances de la tecnología, estos dispositivos integrados tradicionales están incorporando las capacidades de Internet a los espacios de consumo, industriales y empresariales a un ritmo acelerado.

Los dispositivos de IoT suelen desplegarse en grandes cantidades y, a menudo, en lugares de difícil o poco práctico acceso para un operador humano. Imagine un escenario en el que se descubre una vulnerabilidad de seguridad que puede exponer los datos. En estos escenarios, es importante actualizar los dispositivos afectados con correcciones de seguridad de forma rápida y fiable. Sin la capacidad de realizar actualizaciones OTA, también puede resultar difícil actualizar los dispositivos que están dispersos geográficamente. Hacer que un técnico actualice estos dispositivos será costoso, consumirá mucho tiempo y, a menudo, no será práctico. El tiempo necesario para actualizar estos dispositivos los expone a vulnerabilidades de seguridad durante un período más prolongado. Retirar estos dispositivos para actualizarlos también será costoso y puede causar importantes interrupciones a los consumidores debido al tiempo de inactividad.

Las actualizaciones inalámbricas permiten actualizar el firmware de los dispositivos sin tener que recurrir a costosas retiradas del mercado ni a la visita de un técnico. Este método ofrece las siguientes ventajas:

  • Seguridad - La capacidad de responder rápidamente a las vulnerabilidades de seguridad y los errores de software que se descubren una vez que los dispositivos se despliegan sobre el terreno.

  • Innovación - Los productos se pueden actualizar con frecuencia a medida que se desarrollan nuevas características, lo que impulsa el ciclo de innovación. Las actualizaciones pueden efectuarse rápidamente con un tiempo de inactividad mínimo en comparación con los métodos de actualización tradicionales.

  • Coste - Las actualizaciones OTA pueden reducir los costes de mantenimiento de forma significativa en comparación con los métodos utilizados tradicionalmente para actualizar estos dispositivos.

Proporcionar la funcionalidad OTA requiere las siguientes consideraciones de diseño:

  • Comunicación segura - Las actualizaciones deben utilizar canales de comunicación cifrados para evitar que las descargas se alteren durante el tránsito.

  • Recuperación - Las actualizaciones pueden fallar debido a factores como la conectividad de red intermitente o la recepción de una actualización no válida. En estos escenarios, el dispositivo debe poder volver a un estado estable y evitar que se bloquee.

  • Verificación del autor - Se debe verificar que las actualizaciones provienen de una fuente fiable, junto con otras validaciones, como comprobar la versión y la compatibilidad.

Para obtener más información acerca de cómo configurar las actualizaciones OTA con FreeRTOS, consulte Actualizaciones vía inalámbrica de FreeRTOS.

Biblioteca de actualizaciones inalámbricas de AWS IoT

La biblioteca OTA de AWS IoT le permite gestionar las notificaciones de las nuevas actualizaciones disponibles, descargarlas y realizar una verificación criptográfica de las actualizaciones del firmware. Con la biblioteca de clientes inalámbrica (OTA), puede separar de forma lógica los mecanismos de actualización del firmware de la aplicación que se ejecuta en el dispositivo. La biblioteca de clientes inalámbrica (OTA) puede compartir una conexión de red con la aplicación, lo que ahorra memoria en los dispositivos con recursos limitados. Además, la biblioteca de clientes inalámbrica (OTA) le permite definir lógica específica de la aplicación para realizar pruebas, confirmar o revertir una actualización de firmware. La biblioteca admite distintos protocolos de aplicación, como el transporte por telemetría de colas de mensajes (MQTT) y el protocolo de transferencia de hipertexto (HTTP), y ofrece varias opciones de configuración que puede ajustar con precisión al tipo y las condiciones de la red.

Las API de esta biblioteca proporcionan las siguientes funciones principales:

  • Registrarse para recibir notificaciones o sondear las nuevas solicitudes de actualización que estén disponibles.

  • Recibir, analizar y validar la solicitud de actualización.

  • Descargar y verificar el archivo de acuerdo con la información de la solicitud de actualización.

  • Realizar una autocomprobación antes de activar la actualización recibida para garantizar la validez funcional de la actualización.

  • Actualizar el estado del dispositivo.

Esta biblioteca utiliza servicios de AWS para gestionar diversas funciones relacionadas con la nube, como el envío de actualizaciones de firmware, la supervisión de un gran número de dispositivos en varias regiones, la reducción del radio de impacto de las implementaciones defectuosas y la verificación de la seguridad de las actualizaciones. Esta biblioteca se puede utilizar con cualquier biblioteca MQTT o HTTP.

Las demostraciones de esta biblioteca muestran actualizaciones inalámbricas completas mediante la biblioteca de coreMQTT y los servicios de AWS en un dispositivo FreeRTOS.

Características

A continuación, se muestra la interfaz de Agente de OTA completa:

OTA_Init

Inicializa el motor OTA iniciando el agente OTA (“tarea OTA”) en el sistema. Solo puede existir un agente OTA.

OTA_Shutdown

Indica al agente de OTA que debe apagarse. El agente de OTA podrá cancelar la suscripción a todos los temas de notificaciones de trabajo de MQTT, detener las tareas de OTA en curso, si las hubiera, y borrará todos los recursos.

OTA_GetState

Obtiene el estado actual del Agente de OTA.

OTA_ActivateNewImage

Activa la imagen de firmware del microcontrolador más reciente recibida a través de OTA. (El estado del trabajo detallado ahora debe ser autodiagnóstico).

OTA_SetImageState

Establece el estado de validación de la imagen de firmware del microcontrolador en ejecución actualmente (prueba, aceptada o rechazada).

OTA_GetImageState

Obtiene el estado de la imagen de firmware del microcontrolador en ejecución actualmente (prueba, aceptada o rechazada).

OTA_CheckForUpdate

Solicita la siguiente actualización OTA disponible del servicio de actualización OTA.

OTA_Suspend

Suspende todas las operaciones del agente de OTA.

OTA_Resume

Reanuda las operaciones del agente de OTA.

OTA_SignalEvent

Indica un evento a la tarea del agente de OTA.

OTA_EventProcessingTask

Bucle de procesamiento de eventos del agente de OTA.

OTA_GetStatistics

Obtiene las estadísticas de los paquetes de mensajes OTA, que incluyen el número de paquetes recibidos, puestos en cola, procesados y descartados.

OTA_Err_strerror

Conversión de código de error a cadena en caso de errores de OTA.

OTA_JobParse_strerror

Convierte un código de error de análisis de trabajos de OTA en una cadena.

OTA_PalStatus_strerror

Conversión de código de estado a cadena para obtener el estado PAL de OTA.

OTA_OsStatus_strerror

Conversión de código de estado a cadena para obtener el estado OS de OTA.

Referencia de la API

Para obtener más información, consulte Actualización inalámbrica de AWS IoT: funciones.

Ejemplo de uso

Una aplicación de dispositivo típica compatible con OTA que utiliza el protocolo MQTT controla el Agente OTA mediante la siguiente secuencia de llamadas a la API.

  1. Se conecta al agente de coreMQTT de AWS IoT. Para obtener más información, consulte Biblioteca de agente coreMQTT.

  2. Inicializa el agente de OTA mediante una llamada a OTA_Init, incluidos los búferes, las interfaces OTA requeridas, el nombre del objeto y la devolución de llamada de la aplicación. La devolución de llamada implementa lógica específica de la aplicación que se ejecuta después de completar un trabajo de actualización OTA.

  3. Cuando la actualización OTA se ha completado, FreeRTOS llama a la devolución de llamada de finalización del trabajo con uno de los siguientes eventos: accepted, rejected o self test.

  4. Si se rechaza la nueva imagen de firmware (por ejemplo, debido a un error de validación), por lo general, la aplicación puede hacer caso omiso de la notificación y esperar la siguiente actualización.

  5. Si la actualización es válida y se ha marcado como aceptada, llame a OTA_ActivateNewImage para restablecer el dispositivo e iniciar la nueva imagen de firmware.

Portabilidad

Para obtener más información sobre la función de portabilidad de OTA a su plataforma, consulte Portabilidad de la biblioteca OTA en la Guía de portabilidad de FreeRTOS.

Uso de memoria

Tamaño de código de trabajos OTA de AWS IoT (ejemplo generado con GCC para ARM Cortex-M)
Archivos Con optimización -O1 Con optimización -Os
ota.c 8,3 K 7,5 K
ota_interface.c 0,1 K 0,1 K
ota_base64.c 0,6 K 0,6 K
ota_mqtt.c 2,4 K 2,2 K
ota_cbor.c 0,8 K 0,6 K
ota_http.c 0,3 K 0,3 K
Estimaciones totales 12,5 K 11,3 K