深度探索嵌入式操作系统:从零开始设计、架构和开发
上QQ阅读APP看书,第一时间看更新

2.2.2 RTC

RTC是实时时钟,表示的是我们通常用的时间。比如,人们常说现在什么时间了,就是说的这个RTC时间。

说到自然时间,听到最多的可能就是“现在几点啦”。就再也没有往下思考,可以假想一下,物理世界没有了时间,是不是很有趣、也很可怕,可能世间万物会止步不前,可能我们的青春可以永驻。

在mini2440开发板上,只有一颗RTC备用电池,而完成RTC功能的部件在S3C2440A黑盒子里面。既然是自然界的时间,那么即使在开发板断电后也不能停止运行,这就是它要有备用电池的原因。

RTC可以通过8位BCD数据和CPU通信。这些数据包括年、月、日、星期、时、分和秒的时间信息。RTC单元工作在外部,32.768kHz晶振,并且可以执行闹钟功能。

我们来看看S3C2440A里的RTC单元支持哪些功能,归纳如下:

1)时间:年、月、日、星期、时、分和秒,支持CPU以BCD数据的方式读写。

2)闰年发生器:支持实现和识别哪年是闰年。

3)闹钟功能:能产生闹钟定时中断或者从省电模式下唤醒开发板。

4)已经解决2000年是闰年的问题。

5)支持独立电源引脚也就是用备用电池供电的功能。

6)支持时钟节拍中断,如一秒钟内产生固定次数的中断。

S3C2440A的RTC单元的闰年发生器能够基于天、月和年的BCD数据,从28、29、30或31中决定哪个是每月的最后日。此模块决定最后日时会考虑闰年因素。8位计数器只能够表示为2个BCD数字,因此其不能判决“00”年的问题,即最后两位数为0的年份是否为闰年。例如,不能判别1900年和2000年。请注意1900年不是闰年,而2000年是闰年。因此,S3C2440A中00的两位数是表示2000年,而不是表示1900年。

RTC还能在开发板省电模式中或正常工作模式中在指定的时间上产生一个闹钟信号。在正常工作模式中,只激活闹钟中断信号。在开发板省电模式中,除了激活闹钟中断信号,还激活电源管理唤醒信号。

RTC时间节拍中断可以用于操作系统内核的时间节拍,也可用于内核时间的同步更新等。

虽然RTC单元是操作系统内核必须要关注的硬件之一,但并不在此详细介绍,只是先让大家有个印象,它就是处理自然时间的,还有闹钟等功能。等到写操作系统用到它时再详细地讨论。