本发明涉及服务器设计领域,具体涉及一种系统硬件时间和bmc硬件时间的同步系统和方法。
背景技术:
cpu(centralprocessingunit,中央处理器)处理器广泛应用于存储、互联网等各个行业。对于arm平台的cpu和服务器,cpu和bmc(baseboardmanagementcontroller,基板管理控制器)分别有独立的rtc(real-timeclock,实时时钟),它们之间无法进行时间的校准和统一,会产生系统硬件时间和bmc时间不同步的问题。
如果cpu和bmc的时间存在误差,会导致系统产生并存储的日志时间不准确,使用户在分析故障时因为时间不准确而导致判断失误。
技术实现要素:
为了解决上述技术问题,本发明提供了一种系统硬件时间和bmc硬件时间的同步系统和方法,解决了bmc硬件时间和系统硬件时间无法同步的问题。
为实现上述目的,本发明采用以下技术方案:
一种系统硬件时间和bmc硬件时间的同步系统,其特征是,包括cpu、bmc、切换控制模块、系统时钟和bmc时钟;
所述cpu和bmc分别通过切换控制模块连接系统时钟,切换控制模块切换cpu或bmc连通系统时钟,获取系统硬件时间;
所述bmc自身挂载bmc时钟,用于写入获取的系统硬件时间,实现bmc硬件时间与系统硬件时间同步。
进一步地,所述bmc向切换控制模块发送bmc_gpio信号,bmc_gpio通过下拉电阻r1接地,用于选择cpu或bmc与系统时钟连通。
进一步地,所述切换控制模块包括cpld,cpu通过cpu_i2c0连接cpld,bmc通过bmc_i2c12连接cpld,cpld通过sys_rtc_i2c连接系统时钟;cpld还向bmc发出sys_pwrok信号,用于控制bmc_gpio电平。
进一步地,所述cpld连接cpu和系统时钟的接口设置不同电压,实现cpu和系统时钟的电平转换。
进一步地,所述切换控制模块通过选通芯片实现cpu和bmc的切换。
进一步地,所述选通芯片为pca9541,cpu通过第一pca9617连接pca9541,第一pca9617实现电平转换;bmc通过第二pca9617连接pca9541;pca9541连接系统时钟sys_rtcds3232;bmc内还设有adc电压检测模块,检测系统开机状态,控制bmc_gpio电平。
本发明还提供了一种系统硬件时间和bmc硬件时间的同步方法,利用上述系统,其特征是,
整机系统插入电源和电源线时,bmc检测到sys_pwrok为低,bmc将发给cpld的bmc_gpio拉高;
cpld收到bmc_gpio变高后,将sys_rtc_i2c切换到bmc_i2c12,bmc获取系统硬件时间;
bmc将获取到的系统硬件时间写入bmc时钟,bmc硬件时间和系统硬件时间同步;
当按下开机键系统开机后,bmc检测到cpld发出的sys_pwrok变为高电平,将bmc_gpio释放,不可再拉高;
cpld检测到bmc_gpio变低后,将sys_rtc_i2c切换到cpu_i2c0,cpu读取系统硬件时间。
本发明还提供了一种系统硬件时间和bmc硬件时间的同步方法,利用上述系统,其特征是,
整机系统插入电源和电源线时,bmc的adc电压检测模块检测到系统电压为0,系统未开机,bmc将发给第二pca9617enpin的bmc_gpio信号拉高,bmc通过pca9541获取系统硬件时间;
bmc将获取到的系统硬件时间写入bmc时钟,bmc硬件时间和系统硬件时间同步;
当按下开机键系统开机后,bmc的adc电压检测模块检测到系统电压为12v,将bmc_gpio释放,不可再拉高;
cpu通过第一pca9617完成电平转换,通过pca9541获取系统硬件时间。
本发明的有益效果是:
本发明的系统硬件时间和bmc硬件时间的同步系统通过切换控制模块实现了bmc和cpu与系统时钟的连接切换,决定谁来读取系统的硬件时间;为防止系统开机状态bmc读取系统硬件时间对系统的影响,设置bmc检测系统开机状态,保证cpu在开机状态时一直正常获取系统硬件时间而不受bmc影响,同时bmc又可与系统硬件时间调整校准;该系统还具有电平转换的功能。
附图说明
图1是本发明系统硬件时间和bmc硬件时间的同步系统的结构示意图;
图2是本发明系统硬件时间和bmc硬件时间的同步系统实施例一的结构示意图;
图3是本发明系统硬件时间和bmc硬件时间的同步系统实施例二的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
如图1所示,本发明的系统硬件时间和bmc硬件时间的同步系统包括cpu、bmc、切换控制模块、系统时钟和bmc时钟;
所述cpu和bmc分别通过切换控制模块连接系统时钟,切换控制模块切换cpu或bmc连通系统时钟,获取系统硬件时间;
所述bmc自身挂载bmc时钟,用于写入获取的系统硬件时间,实现bmc硬件时间与系统硬件时间同步。
所述bmc向切换控制模块发送bmc_gpio信号,bmc_gpio通过下拉电阻r1接地,用于选择cpu或bmc与系统时钟连通。
为了进一步说明本方案的技术特点,通过以下两个实施例进行详细阐述。
如图2所示,本发明的实施例一将飞腾2000+cpu的cpu_i2c0和bmc的bmc_i2c12分别接到主板上的cpld,经过cpld的控制逻辑然后输出一组sys_rtc_i2c接到外部的系统时钟芯片sys_rtcds3232上,cpld相当于一个开关切换作用。
cpu_i2c0输出电平是1.8v,而sys_rtcds3232接口电平是3.3v,因此,此处cpld需要实现电平转换功能。本实施例所采用的的cpld型号是lcmxo2-2000hc-4ftg256i,它的接口可以分为5个bank,每个bank有一个vccio输入电压pin,这里设置bank3为1.8vbank(即bank3的vccio接到1.8v电压上),cpu出来的cpu_i2c0接到1.8vbank上;其他bank设为3.3vbank(即其他bank的vccio接到3.3v电压上),sys_rtcds3232的i2c接口接到3.3vbank上,如此可以实现1.8v到3.3v之间的电平转换。
当bmc想获取系统时间时,cpld将sys_rtc_i2c切换到bmc_i2c12即可。
cpld对cpu和bmc的切换通过bmc的gpio确认。此处将bmc的一个gpio作为选择pin接到cpld,并且加一个下拉电阻r1到gnd,即默认bmc_gpio为低,此时cpld将sys_rtc_i2c切换到cpu_i2c0。
当bmc要读取sys_rtc时,只需要将bmc_gpio拉高,这时cpld检测到bmc_gpio为高电平,就会将sys_rtc_i2c切换到bmc_i2c12上,此时bmc就可以获取系统硬件时间信息。
bmc自身通过i2c14挂载一个bmc_rtcds3232芯片,来确定其自身的时间,当bmc获取到系统的硬件时间后,可以将系统的硬件时间写入到自身的bmc_rtcds3232中,由此可以与系统硬件时间同步。
为了保证系统开机运行时不受bmc_i2c12读取sys_rtc的影响,bmc还具有检测功能,当bmc检测到cpld发出的sys_pwrok信号后不可将bmc_gpio拉高去读取系统的硬件时间。
此方案可保证飞腾2000+cpu在开机状态时一直正常获取系统硬件时间而不受bmc影响,同时bmc又可与系统硬件时间调整校准。
上述系统的同步方法为:
整机系统插入电源和电源线时,bmc检测到sys_pwrok为低,bmc将发给cpld的bmc_gpio拉高;
cpld收到bmc_gpio变高后,将sys_rtc_i2c切换到bmc_i2c12,bmc获取系统硬件时间;
bmc将获取到的系统硬件时间写入bmc时钟bmc_rtcds3232中,bmc硬件时间和系统硬件时间同步;
当按下开机键系统开机后,bmc检测到cpld发出的sys_pwrok变为高电平,将bmc_gpio释放,不可再拉高;
cpld检测到bmc_gpio变低后,将sys_rtc_i2c切换到cpu_i2c0,之后由飞腾2000+cpu读取sys_rtcds3232的系统硬件时间。
这样,本实施例基于飞腾2000+cpu服务器的时间同步即可得以实现。
本发明的实施例二如图3所示。
将飞腾2000+cpu的i2c0和bmc的i2c12分别经过一个pca9617接到pca9541上,其中,连接飞腾2000+cpu的pca9617还作为电平转换模块,pca9541是2选1i2c混合器模块,经过pca9541的选通然后输出一组sys_rtc_i2c接到外部的系统时间芯片sys_rtcds3232上。
正常开机状态下,由飞腾2000+cpu去读取sys_rtcds3232的时间,此时需要将bmc输出的bmc_i2c12与pca9541选通器断开,与bmc连接的pca9617上有en信号pin,en信号pin连接bmc_gpio信号,当将bmc_gpio信号拉低时,en信号拉低可保证pca9617不工作,bmc_i2c12无法连通到pca9541上。
当bmc想获取系统时间时,只需要将bmc_gpio拉高即可,此时连接的pca9617处于工作状态,bmc_i2c12信号可以传递到pca9541上,从而连通到sys_rtcds3232,最终获得系统硬件时间信息。
bmc自身通过i2c14挂载一个bmc_rtcds3232芯片,来确定其自身的时间,当bmc获取到系统的硬件时间后,可以将系统的硬件时间写入到自身的bmc_rtcds3232中,由此可以与系统硬件时间同步。
为了保证系统开机运行时不受bmc_i2c12读取sys_rtc的影响,bmc具有检测功能,bmc内部的adc电压检测模块可以检测系统电压,当bmc检测到12vmainpower有电时,不可将bmc_gpio拉高去读取系统的硬件时间。
此方案可保证飞腾2000+cpu在开机状态时一直正常获取系统硬件时间而不受bmc影响,同时bmc又可与系统硬件时间调整校准。
上述系统的同步方法为:
整机系统插入电源和电源线时,bmc的adc电压检测模块检测到系统电压为0,系统未开机,bmc将发给连接的pca9617enpin的bmc_gpio信号拉高,bmc通过pca9541获取系统硬件时间;由于在不开机状态下cpu不工作,所以cpu也无法通过cpu_i2c0来读取系统硬件时间;
bmc将获取到的系统硬件时间过bmc_i2c14写入bmc时钟bmc_rtcds3232,bmc硬件时间和系统硬件时间同步;
当按下开机键系统开机后,bmc的adc电压检测模块检测到系统电压为12v,将bmc_gpio释放,不可再拉高,从而不能通过pca9541读取sys_rtcds3232时间信息;
开机时cpu通过连接的pca9617完成电平转换,通过pca9541这条i2c通路连接到sys_rtcds3232,从而由飞腾2000+cpu获取系统硬件时间。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制。对于所属领域的技术人员来说,在上述说明的基础上还可以做出其它不同形式的修改或变形。这里无需也无法对所有的实施方式予以穷举。在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。