关闭

9260 linux RTC驱动问题修正

635人阅读 评论(0) 收藏 举报

原帖地址:http://blog.csdn.net/xuwukong/article/details/4113812


sbc9260 RTC设置问题修正

问题描述:

用date命令设置系统时间

[root@sbc9260 /]# date 042208092009.30

Wed Apr 22 08:09:30 EDT 2009

用hwclock –w将系统时间写到RTC中,更新RTC时钟为系统时钟

[root@sbc9260 /]# hwclock –w

断电重启板子,用date命令设置系统时间

[root@sbc9260 /]# date

Wed Apr 22 04:10:31 EDT 2009

发现系统时间和设置的相差了4个小时。

 

刚开始怀疑在执行hwclock –w设置RTC时钟的时候有问题,可能用户输入的时间和实际设置的时间不同,为了查看设置RTC时钟的情况,将设置过程用Printk打印出来。

[root@sbc9260 /]# date 042208092009.30

Wed Apr 22 08:09:30 EDT 2009

[root@sbc9260 /]# hwclock -w

set to register[before BIN2BCD]

secs=45, mins=9, hours=8, mday=22, mon=3, year=109, wday=3

set to register[after BIN2BCD]

%raw data is st1=00, st2=00, sec=45, min=09, hr=08, mday=22, wday=03, mon=04, year=09

查看输入信息,发现设置数据没有错误,不过这只是证明在设置RTC时钟的时候,传送给RTC的数据正确送达了RTC的数据缓冲区,是不是正确写入了RTC内部的寄存器还未知。

断电重启,执行hwclock –r.

确认将用户输入输入正确写入了RTC寄存器。

RTC正确地保存了断电以前设置的时间,而系统时间又不对,说明系统重启后没有成功执行hwclock –s,将系统时间更新为RTC时间。那么手动输入hwclock –s 命令后系统时间和RTC时间应该一致了。输入hwclock –s后,再执行date,果然系统时间和RTC对上了。

跌跌撞撞到这里,想起来还没有了解RTC时间和系统时间时怎样同步的,汗。

内事问百度,外事问谷歌,前辈们说的。

Google之后,对RTC和系统时间的大致关系了解如下。

1.      系统启动后会读取RTC中的时间,来更新系统时间。

2.      系统时间,RTC时间独立运行。

3.      .每隔660s,系统检查是否需要将系统时间保存到RTC中。

4.      系统关闭时,将系统时间保存到RTC中,更新RTC时间

如此说来,系统在启动时应该会自动执行hwclock –s命令,应该在某个启动脚本里,最终在/etc/rc.sysinit shell脚本中找到如下内容

If [-f “/dev/rtc”];then

/sbin/hwclock –s

Fi

这段程序的意思,若存在/dev/rtc文件,则执行hwclcok –s 命令,而实际是没有执行hwclock –s命令,也就是说if为假,不存在/dev/rtc文件,再/dev目录下执行ls –l,

lrwxrwxrwx    1 root     root            4 Apr 22 06:21 rtc -> rtc0

crw-------    1 root     root     254,   0 Apr 22 06:21 rtc0

该文件确实存在,到此又迷糊了,明明存在,怎么判断不存在呢,先不管了,加上#屏蔽判断

#If [-f “/dev/rtc”];then

/sbin/hwclock –s

#Fi

重新编译根文件系统,烧录,重启,用date设置时间,再重启,再执行date命令。

系统时间和RTC时间一致了!

到此问题似乎解决了,但是前提是/dev/rtc是始终存在的,是想当然的认为/dev/rtc是一定存在的,感觉不够严谨,因为对shell语言不熟悉,找了shell的文章,在test章节发现如下内容。

test –e File                                           文件存在

test –f File                                            文件存在并且是普通文件

那么设备文件应该不是普通文件,应该是-e才对,将-f改为-e,去掉if屏蔽。

Game over!

问题最终解决了。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:324566次
    • 积分:3746
    • 等级:
    • 排名:第8933名
    • 原创:8篇
    • 转载:194篇
    • 译文:0篇
    • 评论:34条
    文章分类
    最新评论