Todos los dispositivos integrados incluyen una opción de "Restablecimiento de fábrica" que permite al usuario restablecer su dispositivo si algo está mal.
Estoy desarrollando un firmware en una placa STM32. El firmware incluye un cargador de arranque que permite actualizar la aplicación a través de UART (enviando un archivo binario que contiene la nueva imagen) y quiero agregar otra función: un restablecimiento de fábrica. Cuando el usuario elige esta opción, el tablero cargará la imagen original.
¿Qué es un restablecimiento de fábrica? ¿Se trata de volver a cargar todo el archivo binario en la memoria o simplemente está llamando a una función que reinicializa las variables modificadas por el usuario final?
¿Cuáles son las mejores prácticas para hacerlo?
¿Dónde almacenar el FW original? ¿Está en un flash interno o externo?
Si toma el ejemplo más común de los valores predeterminados de fábrica, es el UEFI (BIOS) de su PC.
Está hecho con un chip flash y un chip de memoria SRAM de respaldo de batería volátil. El chip flash contiene el programa y la SRAM contiene la configuración.
En el restablecimiento de fábrica , el contenido del sram volátil se borra. En el próximo inicio, detecta que la suma de comprobación de la configuración no es válida y restaura los valores predeterminados contenidos en el programa.
Esto no se limita a la batería de respaldo SRAM, lo mismo se puede hacer con FLASH o EEPROM. Pero la SRAM de respaldo de la batería se puede borrar sin encender la máquina.
Otro término es recuperación de fábrica , esto simplemente significa que contiene el programa principal dos veces. Pero solo una copia puede ser actualizada por el usuario.
Dual-BIOS es un ejemplo de esto.
En sistemas de nivel superior, como teléfonos y computadoras, significa que utiliza los archivos de instalación para restaurar el sistema operativo a las condiciones de fábrica.
fuente
El restablecimiento de fábrica es lo que quieras que sea. Depende de la aplicación y el tipo de dispositivo.
Usualmente hago dos cosas:
Ambos se pueden hacer con botones (pulsaciones largas, pulsaciones cortas), interruptores DIP u otros medios de comunicación (por ejemplo, UART, USB).
Por ejemplo, si usa un GPIO para un solo botón, puede usarlo de la siguiente manera:
fuente
Como dijiste, el restablecimiento de fábrica vuelve a cargar la imagen de fábrica inicial en el dispositivo. Esto puede ser necesario en caso de una configuración incorrecta en la que el usuario simplemente no sabía lo que hace o simplemente quiere volver a la configuración inicial. En casos como el suyo donde se realiza una actualización de software, es posible que desee cubrir ciertos escenarios de falla durante la actualización. En este caso, incluso puede tener una memoria flash dedicada con la imagen original de fábrica almacenada que puede seleccionarse usando un puente para restaurar la configuración predeterminada de fábrica. Esto se hace, por ejemplo, en las placas base de la computadora donde puede restaurar la configuración original del BIOS en caso de que una actualización falle y dañe la imagen principal.
fuente