18 votos

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

Todos los dispositivos integrados incluyen una opción de "restablecimiento de fábrica" que permite al usuario restablecer su dispositivo si algo va mal.

Estoy desarrollando un Firmware en una placa STM32. El firmware incluye un cargador de arranque que permite actualizar la aplicación vía UART (Enviando un archivo binario que contiene la nueva imagen) y quiero añadir otra característica: Un reset de fábrica. Cuando el usuario elija esta opción, la placa cargará la imagen original.

¿Qué es un restablecimiento de fábrica? ¿Se trata de cargar todo el archivo binario en la memoria de nuevo o es simplemente llamar a una función que reinicie las variables modificadas por el usuario final?

¿Cuáles son las mejores prácticas para hacerlo?

¿Dónde se guarda el FW original? ¿Está en una flash interna o externa?

20voto

Bernd Puntos 61

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

Si quieres que tu dispositivo admita una vuelta al firmware de fábrica por sí mismo, tu diseño tiene que incorporar una memoria en el circuito para almacenar esa imagen. Un componente común para esto es un chip flash SPI. Entonces su cargador de arranque también necesita ser cambiado para soportar un modo de obtener una imagen de firmware desde el chip flash SPI en lugar de obtener la imagen a través del puerto serie. Si su dispositivo no soporta firmware reemplazable por el usuario, entonces normalmente no es necesario proporcionar un medio para restaurar el firmware de fábrica.

1 votos

No es realmente 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, sólo borrar la configuración del usuario). Otros (menos, creo) restablecen el firmware a los valores de fábrica. Esto es más difícil, ya que se necesita una manera de reemplazar el firmware existente con un firmware más antiguo.

11voto

JukesOnYou Puntos 398

Si tomas el ejemplo más común de valores de fábrica, es la UEFI (BIOS) de tu PC.

Está fabricado con un chip flash y un chip de memoria SRAM volátil de apoyo a la batería. El chip flash contiene el programa, y la SRAM contiene los ajustes.

En restablecimiento de fábrica El contenido de la memoria volátil se borra. En el siguiente arranque, detecta que la suma de comprobación de los ajustes no es válida y restaura los valores predeterminados contenidos en el programa.

Esto no se limita a la SRAM de respaldo de la batería, lo mismo puede hacerse con FLASH o EEPROM. Pero la SRAM de respaldo de la batería puede ser borrada sin encender la máquina.


Otro término es recuperación en fábrica Esto significa simplemente que contiene el programa principal dos veces. Pero sólo una copia puede ser actualizada por el usuario.
Dual-BIOS es un ejemplo de ello.

En sistemas de nivel superior, como teléfonos y ordenadores, significa que utiliza los archivos de instalación para restaurar el sistema operativo a las condiciones de fábrica.

10voto

filo Puntos 1

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

Suelo hacer dos cosas:

  1. Asegúrese de que siempre haya un forma fiable de entrar en el bootloader para que incluso una actualización parcial o incorrecta del firmware no pueda bloquear el dispositivo.
  2. Tener una forma de restablecer la configuración del firmware en caso de que el usuario cambie algo, una determinada combinación de ajustes haga caer la aplicación, etc.

Ambas cosas pueden hacerse con botones (pulsaciones largas, pulsaciones cortas), interruptores DIP u otros medios de comunicación (por ejemplo, UART, USB).

Por ejemplo, si usas un GPIO para un solo botón, podrías usarlo de la siguiente manera:

  1. Encendido + botón pulsado = invocar el bootloader
  2. Encendido, botón no pulsado = espera 3s, parpadea un led, si se pulsa un botón (dentro de la ventana) y se mantiene pulsado durante 5s entonces se reinicia la configuración del firmware

2voto

Humpawumpa Puntos 131

Como has dicho el restablecimiento de fábrica vuelve a cargar la imagen inicial de fábrica en el dispositivo. Esto puede ser necesario en caso de una mala configuración donde el usuario simplemente no sabía lo que hacía o simplemente quiere volver a la configuración inicial. En casos como el suyo, en el que se realiza una actualización de software, puede querer cubrir ciertos escenarios de fallo durante la actualización. En este caso puede incluso tener una memoria flash dedicada con la imagen original de fábrica almacenada que puede ser seleccionada usando un jumper para restaurar la configuración de fábrica. Esto se hace, por ejemplo, en las placas base de los ordenadores, donde se puede restaurar la configuración original de la BIOS en caso de que una actualización falle y corrompa la imagen principal.

i-Ciencias.com

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.

Powered by:

X