Restaura o relógio após a falta de energia para o sistema sem rede, sem RTC

2

Eu fiz um comutador de energia programável usando Raspberry Pi (embora essa questão não seja específica para RPi - é mais um "Linux genérico" com problemas causados por falhas de hardware). O Raspberry não possui RTC com bateria; O objetivo é funcionar em rede e sincronizar seu relógio logo após a inicialização pela rede.

O meu problema é que enquanto faço a programação do referido comutador através da rede, e posso obter as tomadas para ligar / desligar a determinada hora dessa forma, o próprio dispositivo deve ser usado em locais diferentes, incluindo em rede. Quando eu carrego de onde eu programo para onde ele deve ser conectado, ele é desligado e o clock perde o estado. Depois de ligá-lo, não há conectividade para restaurar a data.

Os poucos minutos em que não é alimentado não são um problema para mim - não me importo de o relógio estar desligado por um minuto ou dois. Eu me importo se ele estiver desligado por 43 anos, como é o caso depois de eu ligar ele em rede.

Existe alguma maneira legal de restaurar o relógio na inicialização de um estado anterior ao sistema, devido à perda de energia? (Escrevê-lo a cada segundo para o cartão SD que é o meio de memória do RPi vai matar o cartão muito rápido, então isso não é bem uma opção.)

    
por SF. 03.09.2013 / 14:19

2 respostas

3

Eu vejo algumas maneiras de abordar isso

  1. Analise o sistema de arquivos em busca do arquivo com a mais nova modificação ou tempo de acesso. Use esse tempo para acertar o relógio. É lento, e a precisão provavelmente ficará muito distante, mas funcionará. Se você tem um diretório / arquivo que você sabe que é modificado com bastante frequência, você poderia usá-lo apenas como fonte.

  2. Siga a ideia que você mencionou; 'toque em um arquivo a cada poucos segundos'. Muitos cartões SD possuem nivelamento de desgaste. Então você não está escrevendo exatamente no mesmo local o tempo todo e, portanto, não é um problema.

  3. Use NVRAM. Escreva a data atual na NVRAM quantas vezes quiser e depois a restaure durante a inicialização. A NVRAM é pequena, mas você pode armazenar alguns bytes sem problemas.

  4. Use o GPS para sincronização de horário. Isso é o que faço em dispositivos que precisam de tempo, mas não têm acesso a uma rede. Os dispositivos GPS USB são baratos e fornecem fontes de tempo muito precisas.

por 03.09.2013 / 14:38
1

Eu suspeito que o mais fácil é realmente adicionar um relógio em tempo real, como este: link

    
por 03.09.2013 / 14:53

Tags