一. 开发环境
1. 硬件环境。使用的是 am5728,rtc硬件模块为 ISL1208,i2c总线控制,原理图如下:
2. 软件环境。此处 dts的设置如下:此 rtc 挂在 i2c1 上
二. 调试时常碰到的问题
1. arm板重新上电时,硬件时钟总是重置
2. 使用 hwclock 读取硬件时钟时,出错
三. 解决方法
调试中常使用的两个工具:date 和 hwclock
a. date。显示当前的系统时间。
可以使用此命令,修改当前系统时间,为:date -s "2010-04-05 14:31:00"
b. hwclock。显示当前硬件 rtc的时间(默认为rtc0)
hwclock -s。将硬件时间同步到系统时间
hwclock -w。将系统时间同步到硬件时间
hwclock -f /dev/rtc1。读取指定硬件 rtc的时间
1. 排查硬件问题。用万用表量 vbat 和 gnd间是否有电压。并确定电池是否有电
2. 排查驱动是否编译进内核。使用 dmsg 查看是否有相关的打印信息,没有则可能是驱动没有添加。
此处的问题为驱动没有编译进内核,将驱动编译进即可
3. 对照原理图,查看 rtc挂在那个 i2c上即可。
4. 解决hwclock: RTC_SET_TIME: Invalid argument问题的方法。当 rtc驱动加载完成后,应该使用 hwclock -w,将新的时间写入 rtc