免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4021 | 回复: 8
打印 上一主题 下一主题

关于RTC的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-27 09:25 |只看该作者 |倒序浏览
20可用积分
最近在我的开发板出现一个时钟上的奇怪现象:

在某些月份的最后一天会出现多一天的现象,也就是说:


前面正常
第一天:6月30日
第二天:7月1日
第三天:还是7月1日第四天:7月2日
后继正常


时钟使用的是:M41T0,内核是linux 2.6.17

大家觉得问题出现在哪里呢?

论坛徽章:
0
2 [报告]
发表于 2009-07-28 11:41 |只看该作者
1、硬件方面,会不会是rtc时钟跑偏了
2、你的意思是只有天不准,那时分秒准不准?
3、软件方面,有可能是系统里跑了什么其他的程序,把时间改掉了
4、外星人搞的鬼~
用天来统计是不是跨度太大了啊~
就是这个样子~

论坛徽章:
0
3 [报告]
发表于 2009-07-28 15:19 |只看该作者
1、硬件方面,会不会是rtc时钟跑偏了
re:rtc硬件本身应该没有问题,因为裸机下测试过

2、你的意思是只有天不准,那时分秒准不准?
re:只有天不准,出了问题的那天,出了日期不对,其他时分秒完全正确!很准确

3、软件方面,有可能是系统里跑了什么其他的程序,把时间改掉了
re:系统除了linux没有其他程序

4、外星人搞的鬼~
re:哈哈哈,这个只有上帝知道

论坛徽章:
0
4 [报告]
发表于 2009-07-29 08:29 |只看该作者
毫无疑问,肯定是3了

论坛徽章:
0
5 [报告]
发表于 2009-07-29 16:27 |只看该作者
经过测试,发现问题出在这个地方:
linux获得的RTC会放到一个结构体中,结构体分为两种,一个是:
struct rtc_time
{
        int        sec;        /* Seconds (0-59) */
        int        min;        /* Minutes (0-59) */
        int        hour;        /* Hour (0-23) */
        int        dow;        /* Day of the week (1-7) */
        int        dom;        /* Day of the month (1-31) */
        int        month;        /* Month of year (1-12) */
        int        year;        /* Year (0-99) */
};

另外一个是:

/*
* The struct used to pass data via the following ioctl. Similar to the
* struct tm in <time.h>, but it needs to be here so that the kernel
* source is self contained, allowing cross-compiles, etc. etc.
*/
struct rtc_time {
        int tm_sec;
        int tm_min;
        int tm_hour;
        int tm_mday;
        int tm_mon;           /* tm_mon starts at zero */
        int tm_year;
        int tm_wday;
        int tm_yday;
        int tm_isdst;
};

而两个的关于月的起始值是不同的,因此在传输等过程中,一不小心就搞错误了!

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:15午马
日期:2015-02-04 12:00:07羊年新春福章
日期:2015-02-04 11:57:56双子座
日期:2014-12-02 11:44:59金牛座
日期:2014-10-08 16:47:08狮子座
日期:2014-08-29 13:37:46巳蛇
日期:2014-08-26 17:32:29NBA常规赛纪念章
日期:2015-05-04 22:32:03
6 [报告]
发表于 2009-07-29 17:21 |只看该作者

回复 #5 dorke 的帖子

呵呵 这个问题 有点滑稽啊

论坛徽章:
0
7 [报告]
发表于 2009-07-31 20:37 |只看该作者
以前碰到过,关于月份不对的情况。。。。。

论坛徽章:
0
8 [报告]
发表于 2010-12-15 13:21 |只看该作者
这个只能测试:
1.排除硬件问题,例如更换同一个型号的RTC始终新品,跑相同的程序,会不会出现相同问题。
2.如果更换一个芯片还出现就是软件商的问题。你把其他程序全部关掉,重新写一个只读程序看会不会出问题。极有可能是你程序里面在有关于一定计时的东西,把始终写入几次,时间变了

论坛徽章:
0
9 [报告]
发表于 2010-12-15 19:40 |只看该作者
楼上的好牛x
一年前的帖子你也翻出来了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP