Todos os dispositivos incorporados incluem uma opção "Redefinição de fábrica" que permite ao usuário redefinir seu dispositivo se algo estiver errado.
Estou desenvolvendo um firmware em uma placa STM32. O firmware inclui um carregador de inicialização que permite atualizar o aplicativo via UART (enviando um arquivo binário que contém a nova imagem) e desejo adicionar outro recurso: Uma redefinição de fábrica. Quando o usuário escolhe esta opção, o quadro carrega a imagem original.
O que é uma redefinição de fábrica? Trata-se de carregar o arquivo binário inteiro na memória novamente ou está apenas chamando uma função que reinicializa variáveis modificadas pelo usuário final?
Quais são as melhores práticas para fazer isso?
Onde armazenar o FW original? está em um flash interno ou externo?
Se você usar o exemplo mais comum de padrões de fábrica, é o UEFI (BIOS) do seu PC.
É feito com um chip flash e um chip de memória SRAM de backup de bateria volátil. O chip flash contém o programa e a SRAM contém as configurações.
Na redefinição de fábrica , o conteúdo do sram volátil é apagado. Na próxima inicialização, ele detecta que a soma de verificação das configurações é inválida e restaura os padrões contidos no programa.
Isso não se limita à SRAM de backup de bateria, o mesmo pode ser feito com FLASH ou EEPROM. Mas o SRAM de backup da bateria pode ser apagado sem ligar a máquina.
Outro termo é recuperação de fábrica , isso significa simplesmente que ele contém o programa principal duas vezes. Mas apenas uma cópia pode ser atualizada pelo usuário.
O BIOS duplo é um exemplo disso.
Em sistemas de nível superior, como telefones e computadores, significa que ele usa os arquivos de instalação para restaurar o sistema operacional às condições de fábrica.
fonte
A redefinição de fábrica é o que você deseja que seja. Depende do aplicativo e do tipo de dispositivo.
Eu costumo fazer duas coisas:
Ambos podem ser feitos com botões (pressão longa, pressão curta), interruptores DIP ou outros meios de comunicação (por exemplo, UART, USB).
Por exemplo, se você usar um GPIO para um único botão, poderá usá-lo da seguinte maneira:
fonte
Como você disse, a redefinição de fábrica recarrega a imagem inicial de fábrica no dispositivo. Isso pode ser necessário no caso de uma configuração incorreta, na qual o usuário simplesmente não sabia o que faz ou apenas deseja retornar à configuração inicial. Em casos como o seu, onde uma atualização de software é realizada, você pode querer cobrir certos cenários de falha durante a atualização. Nesse caso, você pode até ter uma memória flash dedicada com a imagem original de fábrica armazenada que pode ser selecionada usando um jumper para restaurar a configuração padrão de fábrica. Isso é feito, por exemplo, nas placas mãe do computador, onde você pode restaurar a configuração original do BIOS, caso uma atualização falhe e corrompa a imagem principal.
fonte