Tôi có:
- Raspberry Pi với 2015-05-05-raspbian-wheezy
- DS1307 được đính kèm (đó là bảng Adaf nhung, điện trở pullup chưa được cài đặt).
Làm thế nào để tôi:
- cấu hình trình điều khiển
- chắc chắn rằng Pi thực sự sử dụng thời gian RTC khi khởi động?
Tôi thực sự đã thực hiện phần đầu tiên, theo như tôi có thể nói, nhưng không có may mắn với phần thứ hai. Phần lớn thông tin ngoài kia, bao gồm cả các hướng dẫn của Adafbean, đã lỗi thời do điều này: https://www.raspberrypi.org/forums/viewtopic.php?t=97314
Vì vậy, bước đầu tiên: bạn kích hoạt I2c và trình điều khiển trong raspi-config, thêm dtoverlay=i2c-rtc,ds1307
vào cuối /boot/config.txt và bạn đã có trình điều khiển và hwclock
làm việc cho tôi ngay bây giờ, rõ ràng (không thể chạy i2cdetect, hơn nữa về điều đó sau).
Bây giờ bạn cần xóa fake-hwclock và thiết lập để nó thực sự đọc rtc khi khởi động. Tôi đã cố gắng làm theo lời khuyên này - phần lớn là đồng ý với những điều khác tôi đã thấy và rất gần đây - https://www.raspberrypi.org/forums/viewtopic.php?p=842661#p842661
(đó là cho một RTC khác, nhưng tôi chỉ theo dõi phần thứ hai về việc loại bỏ giờ giả và vân vân).
Nhưng không có may mắn, và 'dòng để được nhận xét' không tồn tại trên pi của tôi. Số pi của tôi xuất hiện vào ngày 1 tháng 1 năm 1970 00:00 và hwclock -r
nói rằng RTC bị hỏng. Ngay cả khi tôi không tắt nguồn kể từ khi cài đặt RTC và khởi động lại pi, vì vậy có vẻ như nó đã bị hỏng khi khởi động.
Tôi cũng không thể chạy i2cdetect. Nó phàn nàn rằng các thiết bị / dev / i2c (thứ gì đó) không tồn tại - và thực sự chúng không ...
Cập nhật tạm thời
OK, tôi đã thiết lập rằng:
- tham nhũng chỉ là thông tin thời gian / ngày. Nếu tôi sử dụng i2cset để điền vào mẫu nvram, thông tin đó không được sửa đổi khi khởi động lại, nhưng năm sẽ chuyển sang 0x66
- Nếu tôi xóa dòng
,ds1307
khỏidtoverlay=i2c-rtc,ds1307
config.txt, thì hệ thống sẽ xuất hiện mà không làm hỏng RTC! Điều này hỗ trợ cho ý tưởng rằng chính trình điều khiển đang làm hỏng dữ liệu. Tôi đã xem mã trình điều khiển, và nó đi qua thời gian và thay đổi những thứ nó không thích (ví dụ: nó thay đổi định dạng 12 giờ thành 24 giờ). Vì vậy, có lẽ vấn đề là trình điều khiển được cài đặt tại thời điểm cổng I2C chưa thực sự sẵn sàng để hoạt động (có lẽ do đồng hồ chưa sẵn sàng?) - Nếu tôi làm điều này sau khi khởi động:
sudo sh -c 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device'
nó khiến trình điều khiển rtc_ds1307 tải và / dev / rtc0 xuất hiện. Và thời gian vẫn ổn. Và do đó, có thể được sử dụng làm cơ sở cho cách sửa đổi các tập lệnh init - Thêm một chi tiết thú vị: nếu tôi sử dụng
hwclock -s
trong một tập lệnh ngay sau khi viết vào /sys/..../new_device, thì nó thất bại. Cần phải có mộtsleep 0.5
hoặc một cái gì đó giữa.
Vì vậy, có vẻ như bây giờ tôi có một hệ thống có thể ngừng hoạt động và khởi động và sẽ có thời gian chính xác - tôi sẽ viết nó ngay lập tức.
dtparam=i2c1=on
vào config.txt như đã làm việc cho micksulley vào tháng 1 raspberrypi.org/forums/viewtopic.php?f=28&t=97639 - Khởi động lại. Vẫn không có / dev / i2c *, vẫn không có i2cdetect.
sudo invoke-rc.d hwclock.sh start
không có gì, nó thoát vì /run/udev
tồn tại. Nhưng sudo invoke-rc.d hwclock.sh show
đọc đồng hồ, và sudo invoke-rc.d hwclock.sh stop
sao chép đồng hồ hệ thống sang đồng hồ phần cứng.