Eu tenho:
- Raspberry Pi com 05-05-2015-raspbian-wheezy
- DS1307 conectado (é uma placa Adafruit, resistores pullup não instalados).
Como é que eu:
- configurar drivers
- verifique se o Pi realmente usa o tempo do RTC na inicialização?
Na verdade, eu fiz a primeira parte, até onde sei, mas não tive sorte com a segunda. Muitas das informações disponíveis, incluindo as instruções da Adafruit, estão obsoletas devido a isso: https://www.raspberrypi.org/forums/viewtopic.php?t=97314
Então, primeiro passo: você habilita o I2c e os drivers no raspi-config, adiciona dtoverlay=i2c-rtc,ds1307
no final do /boot/config.txt e hwclock
possui drivers e funciona para mim agora, aparentemente (não pode executar o i2cdetect, mais nisso depois).
Agora você precisa remover o fake-hwclock e configurá-lo para que ele realmente leia o rtc na inicialização. Eu tenho tentado seguir este conselho - que está amplamente de acordo com outras coisas que vi e é muito recente - https://www.raspberrypi.org/forums/viewtopic.php?p=842661#p842661
(isso é para um RTC diferente, mas estou apenas seguindo a segunda parte sobre a remoção de fake-hwclock e assim por diante).
Mas sem sorte, e as 'linhas a serem comentadas' não existem no meu pi. Meu pi aparece com 1 de janeiro de 1970 00:00 e hwclock -r
diz que o RTC está corrompido. Mesmo que eu não desliguei desde a configuração do RTC e a reinicialização do pi, parece que ele deve ter sido corrompido pela inicialização.
Também não consegui executar o i2cdetect. Ele reclama que os dispositivos / dev / i2c (algo) não existem - e de fato não existem ...
Atualização provisória
OK, eu estabeleci que:
- a corrupção é apenas da informação de hora / data. Se eu usar o i2cset para preencher o nvram com um padrão, essas informações não serão modificadas na reinicialização, mas o ano será 0x66
- Se eu remover o
,ds1307
da linhadtoverlay=i2c-rtc,ds1307
em config.txt, o sistema será instalado sem danificar o RTC! O que apóia a idéia de que o próprio driver está corrompendo os dados. Eu olhei para o código do driver, e ele percorre o tempo e muda as coisas de que não gosta (por exemplo, altera o formato de 12 horas para 24 horas). Portanto, talvez o problema seja que o driver esteja instalado em um momento em que a porta I2C não esteja pronta para funcionar (talvez porque os relógios não estejam prontos?) - Se eu fizer isso após a inicialização:
sudo sh -c 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device'
ele fará com que o driver rtc_ds1307 seja carregado e o / dev / rtc0 seja exibido. E o tempo ainda está bom. E assim isso pode ser usado como base de como modificar os scripts init - Mais um detalhe divertido: se eu usar
hwclock -s
um script logo após escrever em /sys/..../new_device, ele falhará. Precisa haver umsleep 0.5
ou algo entre.
Parece que agora tenho um sistema que pode ser desligado e iniciado, e terá a hora correta - escreverei isso corretamente em breve.
dtparam=i2c1=on
a config.txt como trabalhou para micksulley em janeiro raspberrypi.org/forums/viewtopic.php?f=28&t=97639 - Reiniciar. Ainda sem / dev / i2c *, ainda sem i2cdetect.
sudo invoke-rc.d hwclock.sh start
não faz nada, sai porque /run/udev
existe. Mas sudo invoke-rc.d hwclock.sh show
lê o relógio e sudo invoke-rc.d hwclock.sh stop
copia o relógio do sistema para o relógio do hardware.