基于SMBus总线BMC时间同步系统及方法与流程

文档序号:18462702发布日期:2019-08-17 02:10阅读:2153来源:国知局
基于SMBus总线BMC时间同步系统及方法与流程

本发明涉及时间同步,尤其涉及一种基于smbus总线bmc时间同步系统及方法。



背景技术:

服务器主板系统,查看时间功能已经成为用户对产品的基本功能需求。在bios设置界面首页里,可以动态显示实时时间,在操作系统任务栏最右侧也将显示实时时间,用户可以随时查看时间。bios和操作系统都是通过实时读取rtc时间,来完成时间实时显示功能的。bios在开机启动过程和bmc会同步时间信息,进入操作系统下,在服务器接入互联网的情况下,bmc通过互联网同步时间信息,并将日时间信息显示在bmc管理界面上。bmc(baseboardmanagementcontroller)为基板管理控制器,一般内置在主板上,支持行业标准的ipmi规范。bmc提供的功能包括:本地和远程诊断、控制台支持、配置管理、硬件管理和故障排除。

bios初次启动过程时,时间信息是bios预先设置的默认值,同步给bmc的也是默认时间,bmc会根据时区信息,对时间信息进行加减校正,默认时间不是当前的正确时间,因此时间数据没有意义。进入操作系统后,如果服务器接入互联网,操作系统和bmc都会利用互联网同步时间信息,对时间信息进行修正;出于网络安全的考虑,服务器bmc管理网口都是在局域网内使用,不会接入互联网,bmc无法通过互联网同步时间信息。如果系统网口没有接入互联网,需要用户手动校正操作系统和bmc时间信息,如果系统网口接入互联网,需要用户手动校正bmc时间信息,时间是实时变化的,如果用户进行时间校正,操作系统和bmc的时间信息难以保证是一致的,对于时间准确性要求严格的应用场景,是无法满足要求的。



技术实现要素:

为解决现有技术中的问题,本发明提供一种基于smbus总线bmc时间同步系统及方法。

本发明基于smbus总线bmc时间同步系统包括bmc和phc,其中,所述bmc的smbus总线中的时钟信号线和数据信号线分别与phc的时钟信号线和数据信号线相连,所述bmc的smbus控制器作为主控器,pch的smbus设备作为从设备,所述smbus主控器通过时钟信号线从pch的smbus从设备读取时间信息,对所述时间信息处理并显示。

本发明作进一步改进,通过数据信号线将pchpltrst#信号连接到bmc的gpio信号上,bmc通过gpio信号来判断pch的系统是否开机,当所述pch的系统开机后,bmcsmbus主控器开始读取pchsmbus从设备的时间信息。

本发明还提供一种基于所述基于smbus总线bmc时间同步系统的方法,包括如下步骤:

s1:开始,初始化gpio控制器;

s2:smbus控制器初始化;

s3:判断smbus从设备是否开机,如果是,配置smbus从设备信息,读取并存储时间信息,然后执行步骤s4,如果否,循环执行步骤s3;

s4:时间翻转计算,判断是否产生翻转,如果否,执行步骤s5,如果是,读取时间信息,然后执行步骤s5;

s5:更新bmc的rtc时钟时间,动态显示时间信息。

本发明作进一步改进,还包括步骤s6:间隔设定时间,读取smbus从设备的时间信息,对bmc的时间信息进行校准。

本发明作进一步改进,在步骤s3中,间隔t读取两次时间信息,第一次读取的数据设定为x,第二次读取的数据设定为y,在步骤s4中,对数据x和数据y的时间差值与t比较,如果误差大于设定值,则判定发生翻转,再重复将smbus从设备的寄存器的时间字节读取出来,将时间字节数据更新到bmcrtc时间字节寄存器当中,如果误差不大于设定值,则没有发生翻转,将数据y更新到到bmcrtc时间字节寄存器当中。

与现有技术相比,本发明的有益效果是:bmc周期性读取bmcrtc时间寄存器,实时显示时间信息。定时对bmcrtc时间进行校准,能够确保主板系统和bmc系统的时间同步。

附图说明

图1为本发明系统连接示意图;

图2为本发明方法流程图。

具体实施方式

下面结合附图和实施例对本发明做进一步详细说明。

如图1所示,在pch(platformcontrollerhub,英特尔公司的集成南桥)内部,smbus从设备的寄存器从0x09到0x0f存放时间信息,在每当rtc时间不变且smbus总线空闲时,pch芯片硬件会对时间字节进行锁存,确保从smbus从设备读取的时间字节信息是有效的,当pch芯片硬件进行更新时,rtc时间字节将改变。本发明基于此,将bmc的smbus总线(systemmanagementbus,系统管理总线,一种两线制低速率通讯接口)的时钟信号线(smbclk)和数据信号线(smbdat)连接到pch的smbus的时钟信号线和数据信号线上,bmcsmbus控制器作为主控制器(host),pch的smbus设备作为从设备(slave),bmcsmbus主控器通过读取pch的smbus从设备来实时读取时间信息。将pchpltrst#信号(系统平台重启信号)连接到bmc的gpio(通用输入/输出)信号上,bmc通过gpio信号来判断系统是否开机,开机以后,bmcsmbus主控器才能开始读取pchsmbus从设备的rtc时间信息。

如图2所示,本发明的基于smbus总线bmc时间同步的方法的详细实现方法为:

bmc启动以后,进行硬件自检、硬件初始化工作,先初始化gpio控制器,配置硬件引脚的gpio功能,设置gpio为输入模式,禁止gpio中断功能,再初始化smbus控制器,配置时钟频率,开启控制器主控模式功能,开启中断功能,配置传输字节模式。

初始化完成以后,bmc循环程序开始周期性循环检测gpio输入值,如果输入值为低电平,则pltrst#为低电平,主机系统处于未开机状态,如果gpio输入值为高电平,则pltrst#为高电平,主机系统处于开机状态。

系统开机以后,bmc程序配置smbus从设备地址、寄存器偏移地址,由于smbus从设备只支持字节读取,因此时间字节寄存器地址从0x09开始,配置读取字节数据命令,等待smbus从设备返回时间字节数据,处理中断事件,返回数据成功后,清除中断状态,将字节信息保存起来,配置下一个时间字节寄存器的地址0x0a,读取成功后再把字节信息保存起来,直到寄存器0x0f读取成功并保存,所有时间字节数据读取完成,以上读取时间字节操作为一次完整的时间字节信息读取操作,将时间信息数据标记为数据x。等待200ms以后,再重复上述操作,将时间信息数据标记为数据y,通过两次读取时间信息数据x和y,计算时间信息数据是否存在时间翻转。

举例来说,当开始读取时间字节时,rtc时间为11时59分59秒,当读取完时的字节11后,rtc时间增加了1秒,此时的rtc时间为12时0分0秒,程序读取分钟字节和秒钟字节的数据均为0,得到的时间为11时0分0秒,为错误时间。通过本发明的翻转计算,可以避免时间翻转的错误,将间隔为200ms两次读取的时间信息数据x和y,进行比较,如果x和y发生同一秒内的操作,则x和y数据信息相同,如果x和y发生相邻两秒内的操作,则x和y数据差值相差1秒,而发生时间翻转时,x和y数据差值最小间隔为1分钟,与200ms的读取间隔存在巨大误差。

根据以上计算时间翻转,对x和y数据进行翻转计算处理,如果发生翻转,再重复将0x09寄存器到0x0f寄存器的时间字节读取出来,将时间字节数据更新到bmcrtc时间字节寄存器当中,如果没有发生翻转,将数据y更新到到bmcrtc时间字节寄存器当中。bmc将rtc里面的时间数据周期性读取出来,实时显示在bmc管理界面。经过固定时间长度,bmc重新调用程序,读取smbus从设备的时间信息,更新到bmcrtc时间字节中,对时间信息进行校准,确保如果pchrtc时间被修改,bmcrtc时间也同步更新修改。

本发明在现有元器件的基础上,搭建硬件系统,并通过软件策略,实现bmc时间同步的功能。以pchrtc为基准,bmc软件将时间信息数据自动同步到bmcrtc时间寄存器当中。时间翻转计算,间隔200ms的两次时间数据x和y,差值不大于1秒为未翻转,算法简单有效。bmc周期性读取bmcrtc时间寄存器,实时显示时间信息。定时对bmcrtc时间进行校准,能够确保主板系统和bmc系统的时间同步。

以上所述之具体实施方式为本发明的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明所作的等效变化均在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1