侵权投诉
订阅
纠错
加入自媒体

S3C2440 Windows CE的RTC模块驱动设计与实现

2013-04-01 15:19
月城清浅
关注

  3.3、系统I/O

  OAL代码层提供了与内核交互的函数,通过它内核可以获得硬件平台的信息。在OAL层中,完成此功能的函数为OEMIOcontrol()。其函数原型如下:

  BoolOEMIoContol(……)

  {switch(dwIoContro1)

  {caseIOCTL_HAL_INIT_RTC;

  if(nInBufSize>=sizeof(SYSTEMTIME))

  returnOEMSetRealTime((LPSYSTEMTIME)lpInBuf);

  else

  returnFALSE;

  break;

  ……

  default:returnFALSE;

  }

  WinCE每次启动时都会由KernelIoContrl()函数调用OEMIOcontrol(),完成底层硬件信息的读取,其中参数dwIoControl为内核与OAL通信的控制代码,通过它可以完成硬件信息的读取。控制代码一般都是微软定义好的,其中RTC模块定义的控制代码为IOCTL_HAL_INIT_RTC,通过它内核可以完成底层RTC模块的初始化。

  nInBufSize是由lpInBuf(指针)指向的缓冲区的大小,缓冲区是按字节大小计算的。SYSTEMTIME是WinCE内部定义的一个表示时间的结构体,LPSYSTEMTIME为指向此结构体的指针。SYSTEMTIME结构体原型如下,原型中定义了字格式的年、月、星期、日、时、分、秒、毫秒。

  typedefstruct_SYSTEMTIME

  {

  WORDwYear;

  WORDwMonth;

  WORDwDayOfWeek;

  WORDwDay;

  WORDwHour;

  WORDwMinute;

  WORDwSeeond;

  WORDwMilliseconds;

  }SYSTEMTIME;

  在本设计中,RTC的时间分辨率为“秒”,这是因为S3C2440的RTC模块所能提供的最小时间基准就是“秒”。用户可以根据实际需求编写系统I/O下的RTC初始化代码,也可以禁止这部分代码。若WinCE从OAL层读不到时钟参数的话,它会以系统的默认时间值来初始化SYSTEMTIME结构体。

  4、结束语

  当前比较流行的ARM嵌入式处理器,如Samsung的S3C系列、Intel的Xscale系列、Motorola的龙珠系列等几乎都内嵌有RTC模块。使许多嵌入式产品如手机、PDA等的时间显示丰富多彩,如具有显示阳历、阴历、万年历等功能。本文给出了RTC模块的WinCE驱动程序实现,基于本设计可以进一步开发如时钟界面等时钟应用功能,以满足多姿多彩的嵌入式系统对于时钟功能的应用需求。

<上一页  1  2  3  4  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号