小弟稍早之前已经就WinCE 系统时钟跳变的问题发帖提问。但因为自己测试的不够详细,所以没能得到满意的答案。这几天我又重新进行了检查,有一定进展但是问题还是没能解决。恳请论坛朋友能为我稍加分析,提供思路。
软硬件条件:DevKit8000 开发版、WinCE6.0 系统 安装到R3补丁。
现象描述:系统默认开机时间2014年12月1日12时0分0秒。 开机一小时后,也就是当分钟从59分到60分后,会出现一个约0.5秒的2014年12月1日13时0分0秒,然后时间跳变到2023年10月31日13时0分。在之后的时间,系统都是基于2023年10月31日13时正常进位。
打印信息:在每个整点进位时系统都会调用位于 PLATFORM\DevKit8000\SRC\OAL\OALRTC 中的tycoon.c
OALIoCtlHalRtcUpdAte() 函数。这个函数的功能是周期性的调用RTC 驱动,来更新系统RTC 时间。
通过打印信息我可以确定在函数内部该函数获取了正确的时间。但是显示的是那个2023年的错误时间。
当我把这个函数内部注释之后,系统在2014年这个默认时间就不会发生跳变,而是正常进位。
自己的分析:系统每过一个小时利用OALIoCtlHalRtcUpdate()函数进行时间校准。该函数也确实获得了正确的RTC时间。但在将其调用显示的主程序存在问题,例如把2014错解成2023,那么我想问的是如果确实是这里存在问题,这个OALIoCtlHalRtcUpdate() 函数是在哪里被调用,或者说rtc.c 文件在哪里被调用。关于这个函数的调用,我找了很久也没有找到,麻烦知道的朋友告知一下。
如果我的分析思路是错误的,那么问题可能会出在哪?
------解决思路----------------------
很多 BSP 都存在这一问题。
更可恨的是有人将 MS 的代码修改一下,然后就不开源了。
————————————————————————————————————————————————
我参加 CSDN 博客了,投票网址如下,大家多多支持。多谢先!
http://vote.blog.csdn.net/blogstar2014/details?username=91program#content
------解决思路----------------------
你好好检查一下BCD2BIN和BIN2BCD调用的地方,看是否有错误。我以前修改2410平台的就是这个有bug。你的平台我没用过,所以代码只能你自己检查。