一、RTC简介:
RTC(Real Time Clock)是为了给操作系统提供一个可靠的时间,且在断电情况下使用备用电池供电(即在断电情况下,也能确保时间的正确性)。
RTC是通过依靠一个频率为32.768KHZ的外部晶振,产生周期的脉冲信号,每一个脉冲信号到来,计数器(TICNT)减一,来完成计时功能的。
从下图可以看出来,XTIrtc和XTOrtc产生脉冲信号,传给2^15分频器,得到一个128HZ的信号,这个信号就是来产生滴答计数的。当TICNT为0时,产生TIME TICK中断信号。
下面来看RTC的各个寄存器:
1、RTCCON(RTC控制寄存器)
值得注意的是,RTCEN被设置为1时,才能对该寄存器进行读写。所以在电源关闭之前,应清零以防止无效数据写入。
2、TICNT:当设置为127的时候,就是每秒产生一次TIME TICK中断信号。
还有其余的设置时间与闹铃的寄存器,就不一一列举了。
二、RTC驱动程序:
在s3c_rtc_init(void)这个函数中,platform_driver_register(&s3c2410_rtcdrv)了一个平台设备驱动的
static struct platform_driver s3c2410_rtcdrv = {
.probe = s3c_rtc_probe,
.remove = s3c_rtc_remove,
.suspend = s3c_rtc_suspend,
.resume = s3c_rtc_resume,
.driver