¿Existen servicios o marcos en la nube listos para la actualización de firmware por aire?

9

Tengo un prototipo del dispositivo con recursos limitados (MCU de 8 bits con firmware sin SO), que interactúa con un servidor web. Me pregunto si hay soluciones, marcos o servicios en la nube para actualizar el firmware de mi dispositivo desde la web. Según mi investigación, existe Microsoft IoT Hub, pero me temo que no es adecuado para dispositivos con recursos limitados. Encontré una solución más: mbed Cloud portal, pero no estoy seguro de cómo funciona. ¿Alguien puede ayudarme a través de algún consejo, tal vez hay algunas mejores prácticas para implementar la actualización de firmware por aire para dispositivos integrados de manera segura y robusta?

Vadimchik
fuente
No existen tales servicios al menos a partir de ahora. Implementar uno en general es muy tedioso, se puede implementar un tipo de dispositivo específico de servicio.
bravokeyl
Hay mender.io , que es aproximadamente lo que quieres. Pero creo que está dirigido a dispositivos integrados de "gama alta" y para nodos de 8 bits.
mat

Respuestas:

4

Solo responderé esta parte, ya que no conozco ningún sistema 'listo para usar' para una pesadilla desconocida.

¿Quizás existen algunas prácticas recomendadas para implementar la actualización de firmware de forma inalámbrica para dispositivos integrados de forma segura y sólida?

En términos de práctica, lo que haría es lo siguiente:

1) Tener un gestor de arranque muy mínimo, algo lo más tonto posible solo responsable de cargar el firmware con las siguientes restricciones:

  • Capacidad para registrar el último éxito / error de arranque (para revertir a una versión de trabajo en caso de falla)
  • Algún tipo de proceso de emergencia para aceptar un nuevo firmware en caso de falla catastrófica (opcional, podría evitarse si se permite un dispositivo "bloqueado")

2) Configure su almacenamiento para que tenga dos "bancos de arranque" de tamaño razonable para manejar la evolución futura y el crecimiento del firmware.

3) Verifique la imagen del firmware después de la descarga para asegurarse de que sea correcta antes de grabar, sume el banco de destino después de la grabación para asegurarse de que no fallará el arranque por un bit faltante en alguna parte.

El punto que se pasa por alto suele ser la suma de comprobación de la imagen descargada antes y después de la grabación, lo que da como resultado un sistema corrupto escrito en el dispositivo. Usar dos bancos y alternar usualmente facilita el proceso de actualización.

Tensibai
fuente
5

mbed cloud ofrece una funcionalidad completa de actualización de firmware, pero creo que tendría problemas para portarlo a su plataforma si está ejecutando sin un sistema operativo. No creo que la fuente esté abierta hoy, por lo que ni siquiera puedes usarla como referencia. Tampoco estoy seguro de cuáles son los criterios para obtener acceso en este momento.

Debe pensar en las características que necesita: ¿se trata de una implementación a gran escala en la que necesita poder realizar implementaciones de firmware por etapas, le importa firmar el firmware o su plataforma está completamente abierta para cualquier persona con acceso físico? ¿Cuánto le importa poder recuperar un dispositivo bloqueado sin JTAG?

Siendo realistas, las características como las actualizaciones de OTA probablemente sean algo que impulse la selección de su sistema operativo y dispositivo, una vez que tenga en cuenta los costos de desarrollo.

Sean Houlihane
fuente
5

Echa un vistazo a OTA, que es la abreviatura de Over The Air. Arduino tiene esa propiedad .

Puede actualizar con Arduino IDE, navegador web o servidor HTTP.

La opción Arduino IDE está destinada principalmente a la fase de desarrollo de software. Las otras dos opciones serían más útiles después de la implementación, para proporcionar al módulo actualizaciones de la aplicación manualmente con un navegador web o automáticamente usando un servidor http.

mico
fuente
Una de las cosas más desagradables de esa biblioteca y de Arduino en general es la falta de seguridad. Esta solución es adecuada para proyectos de bricolaje o escolares, pero no para dispositivos comerciales. Lo particular que no me gusta es la ausencia de autenticación: está desprotegido para reemplazar el firmware por uno malicioso, con un resumen MD5 correcto.
Vadimchik
4

Puede echar un vistazo a Partícula (IoT) . No estoy seguro de que sean compatibles con Arduino, pero sí ofrecen algunas placas integradas baratas.

Jeroen Jacobs
fuente
3

Una plataforma más interesante, descubrí es DeviceDrive . Aquí está el video que explica cómo funcionan las cosas. Su sistema OTA parece ser bastante flexible.

Vadimchik
fuente