No linux, como descobrir se a bateria do CMOS está funcionando ou não? [fechadas]

1

Eu quero determinar programaticamente se a bateria do CMOS está funcionando ou não. No meu programa C ++ no linux eu quero conectar-me à internet e atualizar a hora do sistema se a bateria do CMOS não estiver presente ou não estiver funcionando.

    
por neckTwi 16.08.2013 / 17:23

3 respostas

3

Acredito que os BIOS configuram um pouco na memória RAM do CMOS em algum lugar se ocorrer um erro de soma de verificação. Mas isso é específico para cada fabricante de placa-mãe.

Uma coisa que pode funcionar ...

  • Descarregue a RAM do CMOS no desligamento - dd if=/dev/nvram of=cmos_ram.bin provavelmente fará isso.
  • Recupere-o ao ligar.
  • Compare com o arquivo salvo do último desligamento. Se houver uma incompatibilidade, o CMOS foi alterado ou corrompido. Então faça atualização do tempo do sistema.

Honestamente, devido ao drifiting e à imprecisão de muitos relógios CMOS, você deve atualizar a hora do sistema em cada inicialização de qualquer maneira.

    
por 16.08.2013 / 18:01
1

KISS!

usa o NTP para corrigir a hora sempre (ntpdate e depois o ntpd).

Desta forma, você tem a hora correta sempre. Isto é o que o computador sem CMOS ou relógio interno faz.

Não há necessidade de criar qualquer outro programa (eles já existem) nem verificar o CMOS (é bom tê-lo, mas não é obrigatório)

    
por 16.08.2013 / 19:39
0

Isso pode ser possível, mas provavelmente não será multi-plataforma (já que você quer usá-lo tanto em um PC quanto em um BeagleBone, que possui um hardware muito diferente).

Execute o ntp, que sempre manterá seu tempo correto, independentemente do status da bateria.

    
por 16.08.2013 / 19:46