一种使用USB接口实现IPMI功能的方法、USB接口和服务器与流程

文档序号:23418262发布日期:2020-12-25 11:38阅读:533来源:国知局
一种使用USB接口实现IPMI功能的方法、USB接口和服务器与流程

本领域涉及计算机领域,并且更具体地涉及一种使用usb接口实现ipmi功能的方法、usb接口和服务器。



背景技术:

在服务器等大型计算机领域,由于设备较为复杂,设计时会将计算业务和监控业务分开,比如在使用intelcpu的服务器中,通常含有cpu和bmc两种芯片。其中cpu负责执行服务器的主要任务,比如高性能计算、存储管理等,bmc则负责监控服务器本身的状态,如电压、温度等,在检测到这些状态信息后,bmc会根据告警和散热策略来执行相应的操作,以保证服务器的正常运行。cpu和bmc运行的是相互独立的两个系统,需要它们在某些情况下可以进行通信,共享信息来合作完成某些任务。

目前对于服务器来说,使用智能型平台管理接口(ipmi)是一种方便通用的通讯方式,ipmi可以用来监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。ipmi的监控信息来源于bmc芯片,独立于cpu的操作系统。若用户需要获取当前服务器的状态,则可以在cpu操作系统端执行ipmi命令(或嵌套的ipmi命令)向bmc发出指令,bmc则将监控到的服务器状态通过ipmi发送到用户操作系统,进行信息共享完成给用户展示服务器状态的命令。ipmi作为一种软件接口,其通讯方式需要硬件进行支持。目前ipmi所支持的标准硬件接口有:lpc、kcs和i2c(i2c总线是由philips公司开发的一种简单、双向二线制同步串行总线)。其中lpc是最常见的接口,也是intel芯片专门用于ipmi功能的标准接口,其它两种也都有其固定的配置方式。但在某些其他类型的cpu芯片中(如龙芯),并没有配备lpc和kcs接口,若此时bmc不支持i2c的从模式(lpc广泛应用于ipmi后很多bmc不再支持i2c从模式),则难以实现通常意义的ipmi通信。



技术实现要素:

有鉴于此,本发明实施例的目的在于提出一种使用usb接口实现ipmi功能的方法、usb接口和服务器,通过使用本发明的方法,能够加强对更多类型芯片的适配程度,而且使用usb来模拟可以做到实时发送和接收,节省了监控开销。

基于上述目的,本发明的实施例的一个方面提供了一种使用usb接口实现ipmi功能的方法,包括以下步骤:

使用第一usb的两个差分线模拟scl时钟线并用第二usb的两个差分线模拟sda数据线以模拟i2c接口;

将模拟的scl时钟线和模拟的sda数据线连接在bmc芯片和cpu芯片之间;

控制模拟的scl时钟线和模拟的sda数据线的高低电平以模拟i2c接口的数据传输,以进行bmc芯片和cpu芯片之间的数据传输;

调整第一usb和第二usb的设备树以使ipmi程序对接模拟i2c接口。

根据本发明的一个实施例,使用第一usb的两个差分线模拟scl时钟线并用第二usb的两个差分线模拟sda数据线以模拟i2c接口包括:

将第一usb的两个差分线设置为clkd+时钟线和clkd-时钟线;

将第二usb的两个差分线设置为datd+数据线和datd-数据线。

根据本发明的一个实施例,控制模拟的scl时钟线和模拟的sda数据线的高低电平以模拟i2c接口的数据传输包括:

以第一usb和第二usb的令牌包和握手包建立usb的数据连接;

将模拟的scl时钟线和模拟的sda数据线的高低电平作为usb数据连接中的数据包;

将传输错误时发生的错误通知作为usb数据连接中的特殊包以使usb数据传输模拟i2c接口的数据传输。

根据本发明的一个实施例,将模拟的scl时钟线和模拟的sda数据线的高低电平作为usb数据连接中的数据包包括:

在usb数据连接中数据传输时,先传输模拟i2c接口的地址,再传输模拟i2c的数据;

响应于i2c数据传输完毕,主机执行停止信号以结束i2c数据传输;

再执行一次握手包和令牌包以完成usb数据传输。

根据本发明的一个实施例,控制模拟的scl时钟线和模拟的sda数据线的高低电平以模拟i2c接口的数据传输包括:

响应于clkd+时钟线为高电平,将datd+数据线变为低电平以作为数据传输的触发信号;

将clkd+时钟线变为低电平以开始模拟i2c接口数据传输;

根据待传输的数据使datd+数据线处于高电平或低电平;

响应于clkd+时钟线变为高电平以表示待传输的数据传输完成。

根据本发明的一个实施例,还包括:

响应于将待传输的数据传输完成8次,第9次传输一次应答以将一个byte的数据传输完成。

根据本发明的一个实施例,还包括:

响应于接收到停止数据传输的指令,将clkd+时钟线变为低电平,datd+数据线变为高电平以作为停止触发信号;

并将clkd-时钟线变为高电平,datd-数据线变为低电平。

根据本发明的一个实施例,还包括:

以apb总线的时钟为基准时钟,每个scl时钟线的电平变化以基准时钟的整数周期为单位进行计数。

本发明的实施例的另一个方面,还提供了一种usb接口,usb接口使用上述的方法实现ipmi功能。

本发明的实施例的另一个方面,还提供了一种服务器,服务器使用上述的方法实现ipmi功能。

本发明具有以下有益技术效果:本发明实施例提供的使用usb接口实现ipmi功能的方法,通过使用第一usb的两个差分线模拟scl时钟线并用第二usb的两个差分线模拟sda数据线以模拟i2c接口;将模拟的scl时钟线和模拟的sda数据线连接在bmc芯片和cpu芯片之间;控制模拟的scl时钟线和模拟的sda数据线的高低电平以模拟i2c接口的数据传输,以进行bmc芯片和cpu芯片之间的数据传输;调整第一usb和第二usb的设备树以使ipmi程序对接模拟i2c接口的技术方案,能够加强对更多类型芯片的适配程度,而且使用usb来模拟可以做到实时发送和接收,节省了监控开销。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为根据本发明一个实施例的使用usb接口实现ipmi功能的方法的示意性流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

基于上述目的,本发明的实施例的第一个方面,提出了一种使用usb接口实现ipmi功能的方法的一个实施例。图1示出的是该方法的示意性流程图。

如图1中所示,该方法可以包括以下步骤:

s1使用第一usb的两个差分线模拟scl时钟线并用第二usb的两个差分线模拟sda数据线以模拟i2c接口。为了令usb去支持ipmi,需要模拟一种协议去适配它,本专利选择适配i2c协议,原因是lpc是并行接口,使用串行的usb接口适配有难度,而且i2c对时钟要求较为宽泛,模拟起来较为容易,i2c是由一根scl时钟线和sda数据线来运作的,sda参考scl的时钟进行数据传输,usb则是使用一对差分线来传输数据,一般命名为d-和d+,程序解析时会将(d+)-(d-)来得到数据,另外还有电压线vcc和地线gnd,所以需要两个usb接口来模拟一个i2c,其中一组模拟scl提供时钟(设为clk),另一组模拟sda传输数据(设为dat);

s2将模拟的scl时钟线和模拟的sda数据线连接在bmc芯片和cpu芯片之间。主要是为了在bmc不支持i2c的从模式(lpc广泛应用于ipmi后很多bmc不再支持i2c从模式)时,实现ipmi通信,所以需要模拟i2c协议使得bmc芯片和cpu芯片之间可以通信;

s3控制模拟的scl时钟线和模拟的sda数据线的高低电平以模拟i2c接口的数据传输,以进行bmc芯片和cpu芯片之间的数据传输;

s4调整第一usb和第二usb的设备树以使ipmi程序对接模拟i2c接口。如果要令ipmi程序可以对接这个模拟的i2c接口,还需要对usb接口的设备树进行处理,首先就是驱动匹配,需要匹配usb嵌套i2c的传输方式,或者直接我们模拟的驱动。

通过本发明的技术方案,能够加强对更多类型芯片的适配程度,而且使用usb来模拟可以做到实时发送和接收,节省了监控开销。

在本发明的一个优选实施例中,使用第一usb的两个差分线模拟scl时钟线并用第二usb的两个差分线模拟sda数据线以模拟i2c接口包括:

将第一usb的两个差分线设置为clkd+时钟线和clkd-时钟线;

将第二usb的两个差分线设置为datd+数据线和datd-数据线。

在本发明的一个优选实施例中,控制模拟的scl时钟线和模拟的sda数据线的高低电平以模拟i2c接口的数据传输包括:

以第一usb和第二usb的令牌包和握手包建立usb的数据连接;

将模拟的scl时钟线和模拟的sda数据线的高低电平作为usb数据连接中的数据包;

将传输错误时发生的错误通知作为usb数据连接中的特殊包以使usb数据传输模拟i2c接口的数据传输。

在本发明的一个优选实施例中,将模拟的scl时钟线和模拟的sda数据线的高低电平作为usb数据连接中的数据包包括:

在usb数据连接中数据传输时,先传输模拟i2c接口的地址,再传输模拟i2c的数据;

响应于i2c数据传输完毕,主机执行停止信号以结束i2c数据传输;

再执行一次握手包和令牌包以完成usb数据传输。根据数据嵌套的思想,usb数据在传输前进行控制数据的传输,usb传输协议一般由四个包组成,为令牌包、数据包、握手包、特殊包,以令牌包和握手包建立usb的数据连接,之后可以将i2c部分的模拟电平作为数据包部分,开始模拟i2c的传输模式。i2c的数据以9个时钟为单位,包括8位传输位和1位应答位,则可以令dat根据clk的高低电平来模拟传输数据。在usb数据包中,先传输模拟i2c的地址,再传输模拟i2c的数据,i2c数据传输完毕后,主机执行停止信号结束i2c数据传输。i2c模拟结束后,再执行一次握手包和令牌包完成usb数据传输,而且在传输过程中,如有传输错误则执行usb特殊包中的错误来通知。这样一来,就可以看做一个usb的协议中嵌套了一个i2c协议,类似tcp/ip通讯中的tcp层外嵌套ip地址。

在本发明的一个优选实施例中,控制模拟的scl时钟线和模拟的sda数据线的高低电平以模拟i2c接口的数据传输包括:

响应于clkd+时钟线为高电平,将datd+数据线变为低电平以作为数据传输的触发信号;

将clkd+时钟线变为低电平以开始模拟i2c接口数据传输;

根据待传输的数据使datd+数据线处于高电平或低电平;

响应于clkd+时钟线变为高电平以表示待传输的数据传输完成。

在本发明的一个优选实施例中,还包括:

响应于将待传输的数据传输完成8次,第9次传输一次应答以将一个byte的数据传输完成。

在本发明的一个优选实施例中,还包括:

响应于接收到停止数据传输的指令,将clkd+时钟线变为低电平,datd+数据线变为高电平以作为停止触发信号;

并将clkd-时钟线变为高电平,datd-数据线变为低电平。平时情况下,clkd+和datd+都保持高电平。模拟i2c协议时,在clkd+为高电平时,datd+变为低电平作为触发信号,接着令clkd+变为低电平表示开始模拟i2c协议,然后datd+会根据待传输的数据令该引脚处于高电平或低电平,设置完毕后等待clkd+变为高电平表示数据传输到了从机上。如此往复,并在第8次传输完成一个byte的数据,第9次进行一次应答,这样就完成了一个byte的传输过程。如果主机需要停止传输,则在clkd+为低时datd+变为高电平作为停止的触发信号stop,clkd-和datd-的信号分别与clkd+和datd+相反

在本发明的一个优选实施例中,还包括:

以apb总线的时钟为基准时钟,每个scl时钟线的电平变化以基准时钟的整数周期为单位进行计数。时钟和中断也需要根据需要进行调整,以apb总线(外围总线)的clock为基准clock,每一个clk电平的变化以基准clock的整数周期为单位进行计数。中断号为i2c_ic中断的13号中断,每次需要对该i2c进行访问时,都通过这个中断号对应的接口去申请中断,以访问下面挂载的i2c设备。

基于上述目的,本发明的实施例的第二个方面,提出了一种usb接口,usb接口使用上述的方法实现ipmi功能。

基于上述目的,本发明的实施例的第三个方面,提出了一种服务器,服务器使用上述的方法实现ipmi功能。

通过本发明的技术方案,能够加强对更多类型芯片的适配程度,而且使用usb来模拟可以做到实时发送和接收,节省了监控开销。

此外,根据本发明实施例公开的方法还可以被实现为由cpu执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被cpu执行时,执行本发明实施例公开的方法中限定的上述功能。

需要特别指出的是,上述系统的实施例采用了上述方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到上述方法的其他实施例中。

上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。

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