Como a redefinição de fábrica funciona?

18

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?

Pryda
fonte

Respostas:

20

De um modo geral, a função de redefinição de fábrica mencionada restaurará as informações de dados variáveis ​​salvas de volta aos valores padrão. Não é verdade que todos os dispositivos incorporados tenham esse recurso. Alguns fazem, mas não todos.

Se você deseja que seu dispositivo suporte o retorno ao firmware padrão de fábrica, seu design deve incorporar uma memória no circuito para armazenar essa imagem. Um componente comum para isso é um chip flash SPI. Em seguida, o seu carregador de inicialização também precisa ser alterado para suportar um modo de obter uma imagem de firmware do chip flash SPI, em vez de obter a imagem pela porta serial. Se o seu dispositivo não suportar firmware substituível pelo usuário, geralmente não é necessário fornecer um meio de restaurar o firmware padrão de fábrica.

Michael Karas
fonte
11
Não é realmente uma resposta, por isso vou deixar como comentário: alguns dispositivos apenas revertem as configurações para os padrões, isso é fácil (por exemplo, basta apagar as configurações do usuário). Outros (acho que menos) redefinem o firmware para o padrão de fábrica. Isso é mais difícil, pois você precisa de uma maneira de substituir o firmware existente por um firmware mais antigo.
Dithermaster
11

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.

Jeroen3
fonte
10

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:

  1. Verifique se há sempre uma maneira confiável de entrar no carregador de inicialização , para que nem mesmo uma atualização de firmware parcial / incorreta possa bloquear o dispositivo.
  2. Tenha uma maneira de redefinir as configurações de firmware, caso o usuário altere alguma coisa, uma combinação de configurações específica irá travar o aplicativo etc.

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:

  1. Botão Power-on + pressionado = chamar o gerenciador de inicialização
  2. Ligar, botão não pressionado = aguarde 3s, pisque um led, se um botão for pressionado (dentro da janela) e pressionado por 5s, em seguida, redefinir as configurações de firmware
filo
fonte
2

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.

papa
fonte