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?
security
microcontrollers
over-the-air-updates
Vadimchik
fuente
fuente
Respuestas:
Solo responderé esta parte, ya que no conozco ningún sistema 'listo para usar' para una pesadilla desconocida.
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:
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.
fuente
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.
fuente
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.
fuente
Puede echar un vistazo a Partícula (IoT) . No estoy seguro de que sean compatibles con Arduino, pero sí ofrecen algunas placas integradas baratas.
fuente
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.
fuente