¿Cómo funciona el restablecimiento de fábrica?

18

Todos los dispositivos incorporados 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 (al enviar un archivo binario que contiene la nueva imagen) y quiero agregar otra característica: un restablecimiento de fábrica. Cuando el usuario elige esta opción, la placa debe 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 se llama 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?

    
pregunta Pryda

4 respuestas

20

En términos generales, la función de restablecimiento de fábrica que menciona restablecerá la información de datos variables guardados a los valores predeterminados. No es cierto que todos los dispositivos integrados tengan esta capacidad. Algunos lo hacen, pero no todos.

Si desea que su dispositivo sea compatible con el retorno al firmware predeterminado de fábrica, su diseño debe incorporar una memoria en el circuito para almacenar esa imagen. Un componente común para esto es un chip flash SPI. Luego, su cargador de arranque también debe cambiarse para admitir un modo de obtener una imagen de firmware del chip flash SPI en lugar de obtener la imagen a través del puerto serie. Si su dispositivo no es compatible con el firmware reemplazable por el usuario, por lo general no es necesario proporcionar un medio para restaurar el firmware predeterminado de fábrica.

    
respondido por el Michael Karas
11

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 restablecimiento de fábrica , se borran los contenidos del sram volátil. En el siguiente arranque, 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 está limitado a la batería de respaldo SRAM, lo mismo se puede hacer con FLASH o EEPROM. Pero la batería de respaldo SRAM 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.

    
respondido por el Jeroen3
10

El restablecimiento de fábrica es lo que tú quieras que sea. Depende de la aplicación y del tipo de dispositivo.

Normalmente hago dos cosas:

  1. Asegúrese de que siempre haya una forma confiable de ingresar al cargador de arranque , de modo que incluso una actualización de firmware parcial / incorrecta no pueda bloquear el dispositivo.
  2. Tenga una forma de restablecer la configuración del firmware en caso de que el usuario cambie algo, una combinación de configuración particular bloqueará la aplicación, etc.

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:

  1. Botón de encendido + presionado = invocar el gestor de arranque
  2. Encendido, botón no presionado = espera 3s, parpadea un led, si se presiona un botón (dentro de la ventana) y se mantiene presionado durante 5s, luego reinicie la configuración del firmware
respondido por el filo
2

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 mala configuración en la que el usuario simplemente no supiera lo que hace o simplemente quiera volver a la configuración inicial. En casos como el suyo, se realiza una actualización de software, es posible que desee cubrir ciertos escenarios de fallas durante la actualización. En este caso, incluso puede tener una memoria flash dedicada con la imagen original de fábrica almacenada que se puede seleccionar mediante un puente para restaurar la configuración predeterminada de fábrica. Esto es por ejemplo hecho en las placas 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.

    
respondido por el Humpawumpa

Lea otras preguntas en las etiquetas