Как работает сброс до заводских настроек?

Все встроенные устройства включают опцию «Сброс к заводским настройкам», которая позволяет пользователю сбросить настройки своего устройства, если что-то не так.

Я разрабатываю прошивку на плате STM32. Прошивка включает в себя загрузчик, который позволяет обновлять приложение через UART (путем отправки двоичного файла, содержащего новый образ), и я хочу добавить еще одну функцию: сброс настроек к заводским. Когда пользователь выбирает эту опцию, доска загружает исходное изображение.

Что такое сброс до заводских настроек? Речь идет о повторной загрузке всего двоичного файла в память или просто вызове функции, которая повторно инициализирует переменные, измененные конечным пользователем?

Каковы наилучшие методы для этого?

Где хранить оригинальную прошивку? во внутренней или внешней флешке?

Ответы (4)

Вообще говоря, упомянутая вами функция сброса к заводским настройкам восстановит любую сохраненную информацию о переменных данных до значений по умолчанию. Неправда, что все встроенные устройства имеют эту возможность. Некоторые делают, но не все.

Если вы хотите, чтобы ваше устройство само поддерживало возврат к заводской прошивке по умолчанию, тогда ваша конструкция должна включать память в схему для хранения этого образа. Обычным компонентом для этого является микросхема флэш-памяти SPI. Затем ваш загрузчик также необходимо изменить, чтобы он поддерживал режим получения образа прошивки с флэш-чипа SPI вместо получения образа через последовательный порт. Если ваше устройство не поддерживает заменяемую пользователем прошивку, обычно нет необходимости предоставлять средства для восстановления заводской прошивки по умолчанию.

Не совсем ответ, поэтому я оставлю его в качестве комментария: некоторые устройства просто возвращают настройки к значениям по умолчанию, это легко (например, просто стереть пользовательские настройки). Другие (думаю, меньше) сбрасывают прошивку до заводских настроек. Это сложнее, так как вам нужен способ заменить существующую прошивку более старой прошивкой.

Если взять наиболее распространенный пример заводских настроек по умолчанию, это UEFI (BIOS) вашего ПК.

Он состоит из флэш-чипа и чипа памяти SRAM с резервным питанием от энергозависимой батареи. Флэш-чип содержит программу, а SRAM — настройки.

При сбросе к заводским настройкам содержимое энергозависимой памяти стирается. При следующей загрузке обнаруживает, что контрольная сумма настроек неверна, и восстанавливает значения по умолчанию, содержащиеся в программе.

Это не ограничивается резервной батареей SRAM, то же самое можно сделать с FLASH или EEPROM. Но SRAM с резервным питанием от батареи можно стереть без включения машины.


Другой термин — заводское восстановление , это просто означает, что оно содержит основную программу дважды. Но только одна копия может быть обновлена ​​пользователем.
Двойной BIOS является примером этого.

В системах более высокого уровня, таких как телефоны и компьютеры, это означает, что он использует установочные файлы для восстановления операционной системы до заводских условий.

Сброс к заводским настройкам - это то, что вы хотите. Это зависит от приложения и типа устройства.

Обычно я делаю две вещи:

  1. Убедитесь, что всегда есть надежный способ войти в загрузчик , чтобы даже частичное/неправильное обновление прошивки не могло испортить устройство.
  2. Иметь способ сбросить настройки прошивки на случай, если пользователь что-то изменит, определенная комбинация настроек приведет к сбою приложения и т. д.

И то, и другое можно сделать с помощью кнопок (долгие нажатия, короткие нажатия), DIP-переключателей или других средств связи (например, UART, USB).

Например, если вы используете один GPIO для одной кнопки, вы можете использовать его следующим образом:

  1. Включение + нажатая кнопка = вызов загрузчика
  2. Включение питания, кнопка не нажата = подождите 3 секунды, светодиод мигает, если кнопка нажата (в пределах окна) и удерживается 5 секунд, сброс настроек прошивки

Как вы сказали, сброс к заводским настройкам перезагружает исходный заводской образ на устройство. Это может быть необходимо в случае неправильной настройки, когда пользователь просто не знал, что он делает, или просто хочет вернуться к исходной конфигурации. В таких случаях, как ваш, когда выполняется обновление программного обеспечения, вы можете захотеть учесть определенные сценарии сбоев во время обновления. В этом случае у вас может быть даже выделенная флэш-память с сохраненным исходным заводским образом, который можно выбрать с помощью перемычки для восстановления заводской конфигурации по умолчанию. Это делается, например, на материнских платах компьютеров, где вы можете восстановить исходную конфигурацию BIOS в случае сбоя обновления и повреждения основного образа.