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

18

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?

Pryda
fuente

Respuestas:

20

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

Si desea que su dispositivo admita un retorno al firmware predeterminado de fábrica, entonces 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, generalmente no es necesario proporcionar un medio para restaurar el firmware predeterminado de fábrica.

Michael Karas
fuente
1
Realmente no es una respuesta, así que lo dejaré como un comentario: algunos dispositivos simplemente revierten la configuración a los valores predeterminados, esto es fácil (por ejemplo, simplemente borra la configuración del usuario). Otros (menos, creo) restablecen el firmware a los valores predeterminados de fábrica. Esto es más difícil, ya que necesita una forma de reemplazar el firmware existente con firmware más antiguo.
Dithermaster
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 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.

Jeroen3
fuente
10

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:

  1. Asegúrese de que siempre haya una forma confiable de ingresar al gestor de arranque , de modo que incluso una actualización de firmware parcial / incorrecta no pueda bloquear el dispositivo.
  2. Tenga una manera 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. Encendido + botón presionado = invocar gestor de arranque
  2. Encendido, botón no presionado = espere 3 segundos, parpadee un led, si se presiona un botón (dentro de la ventana) y se mantiene presionado durante 5 segundos, luego restablezca la configuración del firmware
filo
fuente
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 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.

papa
fuente