Saya sudah:
- Raspberry Pi dengan 2015-05-05-raspbian-wheezy
- ds1307 terpasang (ini adalah papan Adafruit, resistor pullup tidak dipasang).
Bagaimana saya:
- konfigurasikan driver
- pastikan Pi benar-benar menggunakan waktu RTC saat startup?
Sebenarnya saya sudah melakukan bagian pertama, sejauh yang saya tahu, tetapi tidak berhasil dengan bagian kedua. Banyak informasi di luar sana, termasuk instruksi Adafruit, sudah usang karena ini: https://www.raspberrypi.org/forums/viewtopic.php?t=97314
Jadi, langkah pertama: Anda mengaktifkan I2c dan driver di raspi-config, tambahkan dtoverlay=i2c-rtc,ds1307
di akhir /boot/config.txt, dan Anda punya driver, dan hwclock
berfungsi untuk saya sekarang, tampaknya (tidak dapat menjalankan i2cdetect, lebih lanjut nanti).
Anda sekarang perlu menghapus jam palsu dan mengaturnya agar benar-benar membaca rtc saat startup. Saya telah mencoba mengikuti saran ini - yang sebagian besar sesuai dengan hal-hal lain yang telah saya lihat, dan sangat baru - https://www.raspberrypi.org/forums/viewtopic.php?p=842661#p842661
(itu untuk RTC yang berbeda, tapi saya hanya mengikuti bagian kedua tentang menghapus jam palsu dan sebagainya).
Tapi tidak berhasil, dan 'kalimat yang harus dikomentari' di sana tidak ada pada pi saya. Pi saya muncul dengan 1 Januari 1970 00:00 dan hwclock -r
mengatakan RTC rusak. Bahkan jika saya belum dimatikan sejak mengatur RTC dan me-reboot pi, jadi sepertinya itu sudah rusak oleh startup.
Saya juga belum bisa menjalankan i2cdetect sama sekali. Ia mengeluh bahwa perangkat / dev / i2c (sesuatu) tidak ada - dan memang mereka tidak ...
Pembaruan Sementara
OK, saya telah menetapkan bahwa:
- korupsi hanya dari info waktu / tanggal. Jika saya menggunakan i2cset untuk mengisi nvram dengan sebuah pola, informasi itu tidak dimodifikasi saat reboot, tetapi tahun berjalan ke 0x66
- Jika saya menghapus
,ds1307
dari barisdtoverlay=i2c-rtc,ds1307
di config.txt, maka sistem muncul tanpa merusak RTC! Yang mendukung gagasan bahwa pengemudi itu sendiri merusak data. Saya telah melihat kode driver, dan ia melewati waktu dan mengubah hal-hal yang tidak disukainya (misalnya ia mengubah format 12 jam menjadi 24 jam). Jadi, mungkin masalahnya adalah bahwa driver diinstal pada saat port I2C sebenarnya tidak siap untuk bekerja (mungkin karena jam tidak siap?) - Jika saya melakukan ini setelah startup:
sudo sh -c 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device'
itu menyebabkan driver rtc_ds1307 dimuat, dan / dev / rtc0 muncul. Dan waktunya masih oke. Dan itu dapat digunakan sebagai dasar bagaimana mod skrip init - Satu lagi detail yang menyenangkan: jika saya menggunakan
hwclock -s
skrip tepat setelah menulis ke /sys/..../new_device, gagal. Perlu adasleep 0.5
atau sesuatu di antaranya.
Jadi sepertinya saya sekarang memiliki sistem yang dapat dimatikan, dan memulai, dan akan memiliki waktu yang tepat - saya akan segera menuliskannya dengan benar.
dtparam=i2c1=on
ke config.txt ketika bekerja untuk micksulley pada bulan Januari raspberrypi.org/forums/viewtopic.php?f=28&t=97639 - Reboot. Masih tidak ada / dev / i2c *, masih tidak ada i2cdetect.
sudo invoke-rc.d hwclock.sh start
tidak apa-apa, itu keluar karena /run/udev
ada. Tetapi sudo invoke-rc.d hwclock.sh show
membaca jam, dan sudo invoke-rc.d hwclock.sh stop
menyalin jam sistem ke jam perangkat keras.