Vamos a crear un BRAZO de la junta con un módem GSM a bordo.
Queremos ser capaz de actualizar el BRAZO firmware por el aire.
Hay alguna buena, confiable, solución de código abierto para que?
Si no, hay un pagados OS con esta característica?
Vamos a crear un BRAZO de la junta con un módem GSM a bordo.
Queremos ser capaz de actualizar el BRAZO firmware por el aire.
Hay alguna buena, confiable, solución de código abierto para que?
Si no, hay un pagados OS con esta característica?
No estoy al tanto de cualquier pre-hechos de soluciones, pero voy a describir cómo me fui a su alrededor en un proyecto. No es totalmente 'unbrickable' pero yo no soy consciente de que falle a lo largo de miles de actualizaciones. Para esta aplicación una muy baja tasa de fracaso aún sería más barato que tener que tener acceso a las unidades.
La aplicación principal tiene tres tipos de paquetes agregó que es normal que el protocolo de comunicación que incluya la detección de errores y un reintento de nuestra estrategia en la parte superior:
Una de comenzar la actualización del firmware comando borra un área de memoria reservada en un externo SPI Flash. Devuelve un error si la unidad está en funcionamiento desde su copia de seguridad de la batería o si se está ejecutando de alimentación externa, pero la batería estado de carga es inferior al 25%.
Un bloque de escritura de comandos acepta un desplazamiento de direcciones y de datos que está escrito en el exterior de la memoria Flash en trozos pequeños. El protocolo de nivel superior se ocupa de la detección de errores y retransmisiones. Después de cada bloque está escrito se lea y verificada antes de que el comando es reconocido.
Un acabado de actualización de firmware comando incluye la longitud que la recibió firmware debe ser junto con un CRC32 de toda la imagen para su posterior verificación. Si que coincide con el contenido de la Flash externo de la memoria y la potencia de las condiciones son aún ACEPTAR la misma longitud y CRC32 es transferido a una EEPROM de la zona junto con un "número mágico" para indicar que una actualización de firmware está pendiente.
Un duro bucle se ejecuta en la aplicación principal para la fuerza guardiana de reiniciar.
El gestor de arranque (que se encuentra en una escritura de área protegida del BRAZO del Flash) ve el número mágico en la EEPROM y una vez más se comprueba el CRC32 de la imagen. Si todo es correcto se transfiere la imagen de Flash externo en el programa principal zona del BRAZO del Flash.
La pendiente de la actualización de la información se borra de la memoria EEPROM y un duro lazo de fuerzas de otro reinicio. Esta vez el gestor de arranque se iniciará el principal de la aplicación normalmente.
Aunque nunca he visto la actualización de la fase de fallar las pruebas de nuevas versiones de firmware antes de la implementación es crucial el uso de este método. Si una nueva versión no es capaz de conectarse a la red GSM y la aceptación de actualización en el futuro comands va a requerir una actualización de firmware.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.