WinCE系统时间年份不准的问题(记录)
2010-01-28 10:27
225 查看
近来发现一个奇怪问题,我们WinCE设备的系统时间年份不准。具体情况是:过了2010年之后,系统时间每当到了整分的时候,年份会跳变到2016,然后马上又跳回2010。而且更恶劣的是,双击右下角的时间图标,打开“日期/时间属性”对话框查看,是发现不到这个现象的。为此我编写了一段小代码,在代码中获取系统时间,然后将时间显示到一个Static控件上。这样就能够很容易发现这个现象。如果人为的将系统时间2010改为2011年,则现象就变为了2011跳变到2017再跳回2011。这个小小的跳变将导致很多应用程序出错。
后来打开/KERNEL/HAL/ARM下的timer.c文件。出现上述问题的代码段已经被找到:
很容看出为什么会是到了整分的时候才会发生这种怪现象?因为是if ( lpst->wSecond == 0 )这个条件判断的原因。看来这个if语句中执行的代码可能存在问题。其中年份的一句代码:lpst->wYear = (2000 + s2440RTC->rBCDYEAR) ; 更改成:
lpst->wYear = 2000 + FROM_BCD(s2440RTC->rBCDYEAR);问题就好了。
根据别人的指示这个问题解决了。这个BSP包是离职同事在其他BSP包的基础上修改的。还存在一个问题就是SetTimer不准的问题。现在自己还没有能力解决,先记录到这。
后来打开/KERNEL/HAL/ARM下的timer.c文件。出现上述问题的代码段已经被找到:
lpst->wSecond = FROM_BCD(s2440RTC->rBCDSEC & 0x7f); lpst->wMinute = FROM_BCD(s2440RTC->rBCDMIN & 0x7f); lpst->wHour = FROM_BCD(s2440RTC->rBCDHOUR& 0x3f); lpst->wDayOfWeek = (s2440RTC->rBCDDATE - 1); lpst->wDay = FROM_BCD(s2440RTC->rBCDDAY & 0x3f); lpst->wMonth = FROM_BCD(s2440RTC->rBCDMON & 0x1f); // lpst->wYear = (2000 + s2440RTC->rBCDYEAR) ; lpst->wYear = FROM_BCD(s2440RTC->rBCDYEAR) + 2000 ; if ( lpst->wSecond == 0 ) { lpst->wSecond = FROM_BCD(s2440RTC->rBCDSEC & 0x7f); lpst->wMinute = FROM_BCD(s2440RTC->rBCDMIN & 0x7f); lpst->wHour = FROM_BCD(s2440RTC->rBCDHOUR& 0x3f); lpst->wDayOfWeek = (s2440RTC->rBCDDATE - 1); lpst->wDay = FROM_BCD(s2440RTC->rBCDDAY & 0x3f); lpst->wMonth = FROM_BCD(s2440RTC->rBCDMON & 0x1f); lpst->wYear = (2000 + s2440RTC->rBCDYEAR) ; }
很容看出为什么会是到了整分的时候才会发生这种怪现象?因为是if ( lpst->wSecond == 0 )这个条件判断的原因。看来这个if语句中执行的代码可能存在问题。其中年份的一句代码:lpst->wYear = (2000 + s2440RTC->rBCDYEAR) ; 更改成:
lpst->wYear = 2000 + FROM_BCD(s2440RTC->rBCDYEAR);问题就好了。
根据别人的指示这个问题解决了。这个BSP包是离职同事在其他BSP包的基础上修改的。还存在一个问题就是SetTimer不准的问题。现在自己还没有能力解决,先记录到这。
相关文章推荐
- WinCE系统时间年份不准的问题(记录)
- WinCE系统时间年份不准的原因
- ArcGIS Server JS 开发在线新增要素同时记录添加人、添加时间出现的问题
- 若干时间后忘记的问题-----xp wince5.0 activesync 无法连接之记录
- Linux系统时间不准问题分析
- Vmware虚拟机时间不准问题
- 记录几个暂时没有找到解决方法的问题,后续有时间依次解决
- Mysql自动更新的时间值TimeStamp与Java(mybatis)读取后多了8小时问题记录
- [转帖]VMware时间不准问题的解决方法
- android时间戳转换成日期(与php后台),日期转换成时间戳小问题记录
- 记录一个浪费我一天时间的ajax问题
- 配置win2003 server IIS的总结,为什么IIs的工作进程会在空闲时间释放的问题。同时学会了throw的真正含义,throw的真正含义就是导致程序停止,崩溃,很简单,网摘也有记录。
- 彻底解决cmos电池无电造成每次开机电脑时间老是不准问题。
- [问题记录] spring-boot 打印启动时间
- 标准版数采仪问题解决全记录-时间跳变问题
- 过去的时间记录小问题
- kettle对排序记录节点集群时,关于数据不准问题
- JIRA开启时间追踪并为问题记录工作日志
- Django 使用 MySQL 存储时间中遇到的问题(在数据库中记录插入时间、更新时间、删除时间)
- 【问题记录】uwsgi部署并启动俩个几乎一样的python flask web app,发现有一个app响应时间非常长