La respuesta simple es sí: necesita suficientes bloques de flash para soportar el gestor de arranque y las imágenes de código A / B si desea una alta confiabilidad. Antes de activar la nueva imagen, puede escribir todo, verificarlo y volver a intentarlo.
Sin embargo, esta es una estrategia costosa / confiable y hay cosas que puede hacer para reducir los gastos generales. El soporte de bajo nivel para las actualizaciones de OTA también puede venir como parte del firmware del sistema operativo o del sistema operativo, por lo que puede evitar la suya propia a menos que desee aprender. Esta característica podría describirse como FOTA
.
Particionar su base de código permite actualizaciones incrementales, en el mejor de los casos el gestor de arranque puede abrir la conexión de red, descargar y verificar el código sin necesidad de ningún código de usuario alternativo. Con una puerta de enlace local, la administración de esta tarea se puede delegar desde los puntos finales de bajo costo.
Muchos dispositivos tienen una pequeña cantidad de flash de borrado de palabras, e incluso si falla esto, generalmente puede establecer bits sin necesidad de borrar un bloque completo. Estas características se pueden utilizar para manipular tablas de salto y unir código que se actualiza en bloques de tamaños de bloque. Incluso si inicialmente planificó un espacio de código A / B completo, es posible que deba recurrir a un esquema más complejo cuando la base de código crece demasiado.
Para aclarar la funcionalidad que se puede lograr con una solución sofisticada de firmware por aire, el gestor de arranque y potencialmente una pila de comunicación primaria pueden permanecer residentes mientras se vuelve a flashear el espacio de aplicación de usuario restante. Esto no necesita ninguna sobrecarga (particularmente si la partición del bloque es suave). En el escenario donde la pila de comunicación necesita actualizarse, la región generalmente utilizada para el código de la aplicación se puede usar temporalmente durante la descarga y la verificación. Lograr esto requiere cierto soporte en el SoC, pero los dispositivos de segunda y tercera generación diseñados con esto en mente ya existen.