9260 linux RTC驱动问题修正

103 篇文章 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值