uboot中取时间的函数是将时钟寄存器中的值取出后,加上那个固定值(如1900年),直接返回,如果时间寄存器中放的是12年的秒数,在u-boot中就会显示是1912年。
linux kernel计算日期中有点不同,在算出年号后(加上1900年),接着判断,年号<=1969,再加上100,所以同样时间寄存器值将会校正为2012了。
你的系统显示不一致,可能原因是u-boot和kernel源代码移植不完整,u-boot和kernel实时时钟的存储和计算策略不一致。
实时时钟RTC(Real_Time Clock):1、RTC 是集成电路,通常称为时钟芯片。RTC通常为8PIN,有SOP8、MSOP8、TSSOP8等多种封装。其中有6个I/O口的功能是一样的,分为:晶体接口2PIN、MCU接口2PIN、主电源1PIN、地1PIN。这样就剩下2个I/O的功能定义被区分开了。所以会有许多的RTC型号。例如 荷电科技的H1208、H8563、H1302、H1307、H1381等等。大家看到后会发现许多RTC在I/O口的定位上有明显的区别,所以PCB设计时需要多注意。
2、RTC通常情况下需要外接32.768kHz晶体,匹配电容、备份电源等元件。RTC除了I/O口的定位不同,还有功能上的区别,比如与MCU的接口,现在常用的是I2C接口(距离短,可以与其他器件共用)还有RAM的数量、静态功耗大小、中断的数量,特别是精度的区别。 RTC的精度可以说与温度有很大的关系,而温度会影响晶体的频率。所以就产生实时时钟的衍生产品:时钟模块(内置晶体、电容、电池等等),其精度可保持在每天误差小于0.50秒。但时钟模块相比时钟芯片而言会高出许多。
3、 RTC最重要的功能是提供到2099年内的日历功能,对于时间来说,无论快慢都是误差,而匹配电容在RTC的外围器件上其他非常重要的作用,它可以适当修正晶体与RTC之间匹配问题。特别是像H1208 这样的RTC,把匹配电容内置,这样就可以保证RTC精度的一致性,不会出现有的RTC走得快,有些又走得慢。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)