feishanm
驱动牛犊
驱动牛犊
  • 注册日期2009-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4082回复:12

WINCE6.0+2440 断电后保存系统时间?

楼主#
更多 发布于:2009-02-04 15:57


WINCE6.0+2440 断电后如何保存系统时间?
谢谢!




feishanm
驱动牛犊
驱动牛犊
  • 注册日期2009-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-02-04 16:47
有备用电池的。
每次重启后时间都会重至为12:00。
应该是重启后没有读取RTC的值。
 4.2中这样修改一下就可以了
case IOCTL_HAL_INIT_RTC:
  // The kernel has detected a cold-boot.  
  if(nInBufSize >= sizeof(SYSTEMTIME))
    return OEMSetRealTime((LPSYSTEMTIME)lpInBuf);//把这里改成return TRUE;
  else
    return FALSE;
  break;
但6.0中没有找到这部分代码。

高手请帮忙啊。
谢谢。
feishanm
驱动牛犊
驱动牛犊
  • 注册日期2009-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-02-04 23:16
liulord
驱动牛犊
驱动牛犊
  • 注册日期2007-07-31
  • 最后登录2009-05-18
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望155点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-02-05 10:22
你备用电池是对什么进行供电的?对cpu的rtc模块供电?如果断电了你cpu没有了供电,是不会保存时间的,
OEMSetRealTime这个函数你2440的bsp(oal)中应该会实现的。
CE6.0中platform\common\src\inc下有个oal_ioctl_tab.h中有定义{ IOCTL_HAL_INIT_RTC,                       0,  OALIoCtlHalInitRTC          },查找OALIoCtlHalInitRT函数的定义,你的2440的oal层的代码里面应该有这个函数的实现。
feishanm
驱动牛犊
驱动牛犊
  • 注册日期2009-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-02-09 11:02
OALIoCtlHalInitRTC函数的实现是这样的:
BOOL OALIoCtlHalInitRTC(
    UINT32 code, VOID *pInpBuffer, UINT32 inpSize, VOID *pOutBuffer,
    UINT32 outSize, UINT32 *pOutSize
) {
    BOOL rc = FALSE;
    SYSTEMTIME *pTime = (SYSTEMTIME*)pInpBuffer;
    OALMSG(OAL_IOCTL&&OAL_FUNC, (L"+OALIoCtlHalInitRTC(...)\r\n"));
    // Validate inputs
    if (pInpBuffer == NULL || inpSize < sizeof(SYSTEMTIME)) {
        NKSetLastError(ERROR_INVALID_PARAMETER);
        OALMSG(OAL_ERROR, (
            L"ERROR: OALIoCtlHalInitRTC: Invalid parameter\r\n"
        ));
        goto cleanUp;
    }
    // Add static mapping for RTC alarm
    OALIntrStaticTranslate(SYSINTR_RTC_ALARM, IRQ_RTC);

    // Set time
    rc = OEMSetRealTime(pTime);

    cleanUp:
    OALMSG(OAL_IOCTL&&OAL_FUNC, (L"-OALIoCtlHalInitRTC(rc = %d)\r\n", rc));
    return rc;
}
按4.2的修改,应该是把rc = OEMSetRealTime(pTime);改成rc = TRUE;
但还是不行。
 试着改成rc = OEMGetRealTime(pTime);也不行。

哪位大哥大姐帮帮忙,急救啦……
feishanm
驱动牛犊
驱动牛犊
  • 注册日期2009-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2009-02-10 11:23
liulord
驱动牛犊
驱动牛犊
  • 注册日期2007-07-31
  • 最后登录2009-05-18
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望155点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2009-02-10 14:31
我试着帮你解决问题,但是我问你的问题你一个都没有回答,你这样别人也不知道该怎么帮助你。
feishanm
驱动牛犊
驱动牛犊
  • 注册日期2009-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2009-02-10 20:39
引用第6楼liulord于2009-02-10 14:31发表的  :
我试着帮你解决问题,但是我问你的问题你一个都没有回答,你这样别人也不知道该怎么帮助你。


  兄弟,我不知道你在哪里问了我问题?请说明白一点。
feishanm
驱动牛犊
驱动牛犊
  • 注册日期2009-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2009-02-10 20:43
liulord兄弟

 你备用电池是对什么进行供电的?对cpu的rtc模块供电?如果断电了你cpu没有了供电,是不会保存时间的,

      ------------------------------------------------------------------------------
不知道你是不是说我没有回答这些问题?
谢谢你的回答 。。。

  我的设备之前是使用4.2,在4.2上没问题的。所以应该不要怀疑硬件有什么问题。
   由于硬件是另一部门同事做的,我不清楚是不是外接RTC。不过既然4.2没问题,那应该是6.0驱动的问题。
liulord
驱动牛犊
驱动牛犊
  • 注册日期2007-07-31
  • 最后登录2009-05-18
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望155点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2009-02-11 10:16
我只做过5.0和6.0.
rc = OEMSetRealTime(pTime);这条代码就是对2440的rtc操作的,将时间写入2440的rtc中,我手上没有2440的oal代码,所以具体也没法分析。但是你既然说这个地方要改成true。那么你bsp的其他地方肯定对rtc进行操作了才会这么修改。
没法知道你的硬件设计,我也提不出更好的意见了。
high
论坛版主
论坛版主
  • 注册日期2002-08-10
  • 最后登录2010-07-26
  • 粉丝4
  • 关注0
  • 积分60分
  • 威望655点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分60分
10楼#
发布于:2009-02-11 15:01
耐心点找,common下那些代码里面找找。
feishanm
驱动牛犊
驱动牛犊
  • 注册日期2009-01-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2009-02-11 21:11
谢谢各位的回答。
  明天再看看硬件的设计 。。。
Shahsen
驱动牛犊
驱动牛犊
  • 注册日期2009-05-12
  • 最后登录2010-03-16
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2009-09-14 10:12
在oallib/init.c中的
函数OEMInit()添加
KITLIoctl(IOCTL_HAL_INIT_RTC, NULL, 0, NULL, 0, NULL);
游客

返回顶部