恢复出厂设置如何工作?


18

所有嵌入式设备都包含“恢复出厂设置”选项,如果出现问题,用户可以使用该选项重置其设备。

我正在STM32板上开发固件。该固件包括一个引导加载程序,该加载程序允许通过UART升级应用程序(通过发送包含新映像的二进制文件),我想添加另一个功能:恢复出厂设置。当用户选择此选项时,电路板应加载原始图像。

什么是出厂重置?是将整个二进制文件再次加载到内存中,还是只是调用一个函数来重新初始化最终用户修改的变量?

最佳做法是什么?

原始FW存放在哪里?是内置闪光灯还是外接闪光灯?

Answers:


20

一般来说,您提到的恢复出厂设置功能会将所有保存的变量数据信息恢复为默认值。并非所有嵌入式设备都具有此功能。有些做到了,但不是全部。

如果您希望设备本身支持恢复出厂默认固件,则您的设计必须在电路中集成一个存储器以存储该图像。一个常见的组件是SPI闪存芯片。然后,还需要更改引导加载程序以支持从SPI闪存芯片获取固件映像而不是通过串行端口获取映像的模式。如果您的设备不支持用户可更换的固件,则通常无需提供恢复出厂默认固件的方法。


1
并不是一个真正的答案,因此我将其留为注释:某些设备只是将设置恢复为默认值,这很容易(例如,删除用户设置)。其他人(我认为较少)会将固件重置为出厂默认值。这比较困难,因为您需要一种将旧固件替换为旧固件的方法。
Dithermaster '18

11

如果您使用最常见的出厂默认值示例,那就是PC的UEFI(BIOS)。

它由闪存芯片和易失性电池备用SRAM存储器芯片制成。闪存芯片包含程序,而SRAM包含设置。

恢复出厂设置后,易失性内存的内容将被删除。下次启动时,它将检测到设置的校验和无效,并恢复程序中包含的默认值。

这不仅限于备用电池SRAM,也可以使用FLASH或EEPROM进行。但是无需打开机器电源就可以删除备用电池SRAM。


另一个术语是工厂恢复,它只是意味着它包含两次主程序。但是用户只能升级一份。
Dual-BIOS就是一个例子。

在更高级别的系统(例如电话和计算机)上,这意味着它使用安装文件将操作系统还原为出厂状态。


10

恢复出厂设置就是想要的。这取决于应用程序和设备类型。

我通常会做两件事:

  1. 确保始终有可靠的方式进入引导加载程序,以使即使是部分/错误的固件更新也无法使设备变砖。
  2. 有一种方法可以重置固件设置,以防用户更改某些内容,特定的设置组合会使应用程序崩溃等。

两者都可以通过按钮(长按,短按),DIP开关或其他通信方式(例如UART,USB)来完成。

例如,如果将一个GPIO用于单个按钮,则可以通过以下方式使用它:

  1. 开机+按下按钮=调用引导加载程序
  2. 开机,未按下按钮=等待3秒钟,闪烁LED,如果按下了按钮(在窗口内)并保持5秒钟,则重置固件设置

2

如您所说,恢复出厂设置会将初始出厂映像重新加载到设备。如果配置错误,用户只是不知道自己的工作,或者只是想回到初始配置,这可能是必要的。如果像您一样执行了软件更新,则您可能希望涵盖更新期间的某些失败情况。在这种情况下,您甚至可能具有专用的闪存,其中存储了原始出厂映像,可以使用跳线将其选中以恢复出厂默认配置。例如,这可以在计算机主板上完成,如果可以恢复原始BIOS配置,以防更新失败并损坏主映像。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.