检测通信总线上错误的方法以及用于网络系统的检错器转让专利

申请号 : CN201610126882.5

文献号 : CN106789386B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄志嘉詹昊宇赖德贤颜载益

申请人 : 广达电脑股份有限公司

摘要 :

检测通信总线上错误的方法以及用于网络系统的检错器。该系统及方法使用基板管理控制器(Baseboard management controller,BMC)检测在通信总线上的错误。BMC连接并监控通信总线的运作。BMC自动检测通信总线的停摆并将总线的停摆回报给主机。BMC尝试存取通信总线。若BMC可以存取通信总线,则BMC重置所有连接到通信总线的装置。接着BMC尝试联络连接到装置的元件。若元件无法藉由其通信装置存取,BMC阻挡该元件所使用的通道并回报该信息。当BMC检测到元件已被移除,BMC尝试藉由通过用于计算机网络的I2C/SM总线恢复(recover)通道。

权利要求 :

1.一种使用基板管理控制器检测通信总线上错误的方法,其包含以下步骤:检测步骤,藉由基板管理控制器检测通信总线的总线停摆;

第一重置步骤,响应该检测步骤的该总线停摆而第一重置多个通信总线装置中的所有通信总线装置;

第一识别步骤,响应无法恢复该总线停摆的该第一重置步骤而识别该多个通信总线装置中造成该总线停摆的通信总线装置;

阻挡步骤,阻挡被识别为造成该总线停摆的该通信总线装置;

第二重置步骤,在所述阻挡步骤之后,第二重置该所有通信总线装置;以及重新连接步骤,通过该通信总线重新连接通信总线开关及该多个通信总线装置中的其余通信总线装置。

2.如权利要求1所述的方法,进一步包含:判定步骤,响应该检测步骤而判定该通信总线开关与该多个通信总线装置之间的通信;以及回报步骤,响应该判定步骤而回报该通信总线开关与该多个通信总线装置之间的通信。

3.如权利要求1所述的方法,进一步包含:判定步骤,响应该第一识别步骤而判定造成该总线停摆的该通信总线装置;以及回报步骤,响应该第一识别步骤而回报造成该总线停摆的该通信总线装置。

4.如权利要求1所述的方法,进一步包含:第二识别步骤,响应无法重置该总线停摆的该第二重置步骤,识别连接到造成该总线停摆的该通信总线装置的通信总线元件。

5.一种使用基板管理控制器检测通信总线上错误的方法,其包含:检测步骤,检测连接到通信总线上的通信总线装置的通道的元件的总线停摆;

轮询步骤,响应该检测步骤而轮询连接到该通信总线上的该通信总线装置的该元件;

识别步骤,响应无法恢复该总线停摆的该轮询步骤而识别造成该总线停摆的该元件;

阻挡步骤,阻挡造成该总线停摆的该元件所使用的该通道;

重置步骤,在所述阻挡步骤之后,重置该通信总线上的所有通信总线装置;以及重新连接步骤,通过该通信总线重新连接通信总线开关及所有通信总线装置,但保持阻挡造成该总线停摆的该元件所使用的该通道。

6.如权利要求5所述的方法,进一步包含:第一回报步骤,响应该阻挡步骤而回报造成阻挡的该元件;以及第二回报步骤,响应该阻挡步骤而回报造成阻挡的该元件使用的该通道。

7.如权利要求6所述的方法,进一步包含:移除步骤,响应该第一回报步骤而移除造成阻挡的该元件;

检测步骤,响应该移除步骤而检测造成阻挡的该元件的移除;以及恢复步骤,响应该检测步骤而恢复造成该总线停摆的该元件使用的该通道。

8.一种用于网络系统的检错器,其包含:通信总线,在开关与多个网络装置之间;以及基板管理控制器,以监控该通信总线;

计算机可读取介质,存储指令,若执行该指令,将使包含基板管理控制器的该开关执行包含以下步骤的操作:检测步骤,藉由该基板管理控制器检测该通信总线之一总线停摆;

第一重置步骤,响应该检测步骤的该总线停摆而第一重置多个通信总线装置中的所有通信总线装置;

第一识别步骤,响应无法恢复该总线停摆的该第一重置步骤而识别该多个通信总线装置中造成该总线停摆的通信总线装置;

阻挡步骤,阻挡被识别为造成该总线停摆的该通信总线装置;

第二重置步骤,在所述阻挡步骤之后,第二重置该所有通信总线装置;以及重新连接步骤,通过该通信总线重新连接通信总线开关及该多个通信总线装置中的其余通信总线装置。

9.如权利要求8所述的检错器,其运算进一步包含:判定步骤,响应该检测步骤而判定该通信总线开关与该多个通信总线装置之间的通信;以及回报步骤,响应该判定步骤而回报该通信总线开关与该多个通信总线装置之间的通信。

10.如权利要求8所述的检错器,其运算进一步包含:判定步骤,响应该第一识别步骤而判定造成该总线停摆的该通信总线装置;以及回报步骤,响应该第一识别步骤而回报造成该总线停摆的该通信总线装置。

说明书 :

检测通信总线上错误的方法以及用于网络系统的检错器

技术领域

[0001] 本系统及方法的实施例主要涉及一种通信总线。更具体地,本系统及方法的实施例主要涉及一种具有基板管理控制器故障检测的通信总线。

背景技术

[0002] 通信总线,例如但不限于集成电路之间(inter-integrated circuit,I2C)总线,在计算机网络中连接主机与其他I2C装置及元件。I2C总线可用于计算机网络的主机与内部或外部I2C装置之间的通信。不幸地,在I2C总线上的一些I2C装置可造成I2C总线上的通信中断,或因各种原因而“停摆”。若发生I2C总线上的通信停摆时,计算机系统可能无法正常运作。为排除I2C总线的通信停摆,计算机网络必须手动地重新启动,或必须试着找出导致总线停摆的I2C装置。两种方法都不受欢迎且繁琐。

发明内容

[0003] 根据本发明的实施例,基板管理控制器(baseboard management controller,BMC)连接并监控计算机网络的I2C总线。BMC自动检测I2C总线上的总线停摆(bus hang),并可重启所有的I2C总线装置。BMC识别不重置成功的I2C总线装置,并阻断与该I2C装置的通信。BMC在阻断与造成总线停摆的该I2C装置的通信之后,再次重置所有的I2C装置。BMC重新连接I2C总线及其余I2C装置,并继续检测I2C总线上的总线停摆。
[0004] 上述实施例可具有不同特征。BMC可检测I2C总线停摆并判定BMC是否可存取I2C总线开关。BMC可检测I2C总线停摆并重置I2C总线上的所有I2C装置。
[0005] BMC可判定BMC是否可直接存取I2C总线开关,并可回报该I2C总线开关不是造成总线停摆的原因。BMC可判定BMC是否可利用I2C总线存取I2C总线装置。
[0006] BMC可判定造成总线停摆的I2C总线装置,并可将该I2C总线装置回报给主机。BMC可再次重置所有的I2C装置,并识别造成总线停摆的任何I2C装置。
[0007] BMC可识别造成总线停摆的连接到I2C总线装置的元件,并轮询连接到I2C总线装置的所有元件。BMC可阻挡未响应来自BMC的轮询的元件所使用的I2C总线装置的通道。
[0008] BMC可回报造成阻挡的元件且可回报该元件使用的通道给主机。BMC可告知主机去移除造成阻挡的元件,并检测该元件从I2C装置的移除。
[0009] BMC可在检测元件从I2C装置的移除后,恢复(recover)造成阻挡的元件所使用的通道。
[0010] 将理解前述的一般性描述及下述的详细说明皆藉由实施例以进行,并且意在提供所主张的公开内容的进一步解释。

附图说明

[0011] 可藉由阅览参照以下附随附图所作的下述实施例的详细说明更加地理解公开内容:
[0012] 图1为本公开的实施例的示例性附图,其中计算机网络的部分被显示为包含网络开关、具有检错器(fault detector)的基板管理控制器(BMC)、I2C总线开关及总线、I2C扩展器(expanders)及隔离器(isolators)、以及I2C装置;且
[0013] 图2为本公开的实施例的示例性流程图,提供使用BMC监控及检测在I2C总线上的错误的步骤。
[0014] 【符号说明】
[0015] 200:流程图
[0016] 202、204、206、208、210、212、214、216、218、220、222、224、226、228、230、232:步骤[0017] 100:计算机网络
[0018] 102:网络开关
[0019] 104:I2C总线开关
[0020] 106:I2C总线
[0021] 108:基板管理控制器
[0022] 110:数据日志
[0023] 112、114、130:I2C装置/I2C扩展器
[0024] 116:通道
[0025] 118-126:元件

具体实施方式

[0026] 在下述说明中,将以举例方式来说明不同实施例,而不以限于附图的方式来说明。本公开中的各种实施例的参照不必然针对相同实施例,且该参照表示针对至少一个实施例。虽然讨论了特定实施方式及其他细节时,将理解其仅为了说明的目的而进行。本领域技术人员将认知到可使用其他元件及配置而不超出权利要求书的范围及精神。
[0027] 本公开的实施例提供使用基板管理控制器(Baseboard Management Controller,下称BMC)检测通信总线(例如,但不限于I2C总线)上的错误的系统及方法。BMC连接并监控计算机网络的I2C总线的运作。BMC自动地检测I2C总线的停摆(hang)并将总线的停摆回报给主机。
[0028] 首先,BMC藉由I2C总线开关(I2C bus switch)以隔离网络开关102与I2C总线。隔离的方式可通过短路或开路等。隔离后,BMC尝试存取连接到I2C总线的I2C装置(相当在判断I2C总线是否仍然停摆)。若可存取I2C装置,代表I2C总线恢复正常;若无法存取I2C装置,则BMC通过重置线重置连接到I2C总线的I2C装置,并在重置后尝试存取I2C装置。若仍无法存取I2C装置,BMC仍通过重置线重置连接到I2C总线的I2C扩展器或隔离器。重置后,BMC判断I2C总线是否仍然停摆,若I2C总线仍然停摆,BMC接着尝试联络通过I2C总线连接到I2C扩展器或隔离器的元件。若一元件无法藉由其I2C装置存取,BMC隔离(isolates)或阻挡(blocks)该元件使用的通道,回报该通道隔离。BMC同时回报该元件可被从计算机网络移除。一旦BMC检测到该元件已被移除时,BMC尝试恢复(recover)阻挡的通道,并回报该恢复的通道目前可供待加入网络的其他元件使用。
[0029] 图1是根据本发明实施例的具有BMC检错器的通信总线的示例图,其中计算机网络100包含主机,诸如网络开关或CPU开关102。网络开关102被连接到I2C总线106。具有检错功能的基板管理控制器(BMC)108被连接并监控I2C总线106。I2C装置112、114、130也被连接到I2C总线106。I2C装置112、114、130可以是各种类型的I2C装置,例如但不限于I2C扩展器或I2C隔离器112、114,或是独立连结至I2C总线106的I2C装置130。多个元件118-126通过I2C扩展器或I2C隔离器112、114与I2C总线106通信。BMC可通过重置线重置I2C装置112、114、
130。
[0030] 在一具体实施例中,I2C装置112及114为I2C扩展器或I2C隔离器,而I2C装置130为连结到I2C总线106的其他I2C装置(非I2C扩展器或I2C隔离器)。
[0031] 首先,BMC 108监控I2C总线106的总线是否停摆。当BMC检测到总线停摆时,BMC 108藉由短路或开路I2C总线开关104(I2C bus switch)等方式以隔离网络开关102与I2C总线106。隔离后,BMC 108尝试存取连接到I2C总线的I2C装置112、114、130;若可存取连接到I2C总线的I2C装置,代表I2C总线106恢复正常,BMC 108记录总线停摆数据于BMC数据日志(data log)110中。
[0032] 若在隔离后仍无法存取连接到I2C总线的I2C装置,即BMC 108仍然检测到总线停摆,BMC 108将重置I2C总线106上的I2C装置130。接着BMC108判定是否所有重置的I2C装置130都成功地重置,即BMC 108可存取I2C装置130。若BMC 108仍然检测到总线停摆而无法存取I2C装置130,BMC 108将重置I2C总线106上的I2C扩展器或I2C隔离器112、114;接着BMC 
108判定是否所有I2C装置112、114都成功地重置而可存取。若所有I2C装置112、114都成功地重置,则BMC 108判定I2C装置112、114都不是总线停摆的原因。BMC 108记录总线停摆数据于数据日志110中。
[0033] 若BMC 108检测到连接在I2C总线106上的I2C装置112、114的元件118-126中的至少其一没有成功地重置,则总线停摆的原因即为这些元件118-126中的至少其一。至少在此实施例中,由于BMC 108无法直接存取元件118-126,BMC 108藉由经各相对应的I2C装置112、114送出信号至元件118-126中的每一个,以测试各元件118-126。
[0034] 在BMC 108送出信号给各元件118-126之后,BMC 108等待来自各元件118-126的响应。例如,BMC 108可通过I2C总线106通过I2C扩展器112送出信号到多种元件,包含诸如小封装热插拔收发器(mall form-factor pluggable transceiver,SFP+)118、四通道小封装收发器(quad small form-factor transceiver,QSFP+)120、以及z-四通道小封装收发器(z-quad small form factor transceiver,z-QSFP+)122的收发器。在另一实施例中,BMC 108可通过I2C总线106通过I2C扩展器114送出信号给多种元件,诸如IO扩展器(IO expander)124及温度传感器126。
[0035] 在等待一段预设时间后,BMC 108判定元件118-126中的哪一个不响应由BMC 108通过各相对应的I2C装置112、114送出的信号。BMC 108接着隔离在预设时间内不响应BMC 108送出的信号元件118-126所使用的通道116。BMC 108记录总线停摆数据于数据日志110中。藉由隔离造成总线停摆的元件118-126所使用的通道116,BMC 108允许计算机网络100不需要手动重置即可运作,并避免总线停摆影响计算机网络100。
[0036] BMC 108可指出被BMC 108检测的元件118-126是总线停摆的源头且应被移除,例如但不限于显示于在屏幕上的文字讯息、例如LED的视觉指示器、音频信号、或是本领域技术人员所已知的其他方法。
[0037] BMC 108可通过I2C总线106监控并检测,是否造成总线停摆的元件118-126已从计算机网络100移除。一旦造成总线停摆的元件118-126被移除,BMC 108可恢复(recover)先前元件118-126所用的通道116,并可记录总线数据在数据日志110中。BMC 108同时可通过指标和/或讯息通知主机先前被隔离的通道116已能为待连接的新元件使用。
[0038] 图2是根据本发明的实施例的具有检错功能的BMC监控通信总线(例如,但不限于I2C总线)的示例性流程图。流程图200包含各种步骤以详细描述BMC在I2C总线上的错误侦查,以及BMC所执行的各种校正动作。
[0039] 在步骤202中,连接到I2C总线的BMC检测I2C总线的状态。在步骤204中,BMC检测在I2C总线上的总线停摆(hang)。在步骤206中,BMC藉由短路或开路I2C总线开关104等方式以隔离网络开关102与I2C总线,并在隔离I2C总线开关后,尝试存取在I2C总线上的I2C装置。若可存取I2C装置,代表I2C总线恢复正常,此时进入步骤212,记录并通知CPU说明I2C总线恢复正常;若BMC无法在I2C总线上存取I2C装置,则BMC回报于I2C总线上仍发生总线停摆,此时进入步骤208,BMC重置I2C装置130,而后尝试存取I2C装置130。若可存取I2C装置130,代表I2C总线恢复正常,此时进入步骤212,记录并通知CPU说明I2C总线恢复正常;若仍无法在I2C总线上存取I2C装置130,则进入步骤210。
[0040] 在步骤210,BMC重置所有I2C扩展器112、114。若重置后,I2C总线仍然停摆,在步骤214,BMC判定该总线停摆原因是由连接到I2C扩展器的扩展器元件118-126所造成,而后进入步骤216。在重置后若I2C总线没有停摆,代表I2C总线恢复正常,则进入步骤212,BMC回报给主机。
[0041] 在步骤216,BMC通过I2C/SM总线轮询连接到I2C扩展器112、114的各元件。在步骤218,BMC检查I2C/SM总线的状态。BMC接着等待来自各元件的响应。在步骤222中,BMC回报主机连接到I2C/SM总线的各元件是否响应来自BMC的轮询。
[0042] 若BMC没有通过I2C/SM总线获得来自至少一扩展器元件的响应,则步骤224中,BMC阻挡该元件使用的通信通道。在步骤226中,BMC回报该至少一扩展器元件未响应BMC所送出的轮询,以及BMC已阻挡由未响应的扩展器元件使用的通道。只要未响应的扩展器元件仍保持连接(未移除),则该通道将保持关闭,以避免未来总线停摆并允许计算机网络运作。
[0043] 在步骤228中,BMC使用如LED的指标来回报已判定为停摆的总线元件,并进一步回报已判定的扩展器元件是总线停摆的原因,且应该被从计算机网络移除。
[0044] BMC继续监控I2C总线106、I2C装置130、以及通过I2C/SM总线连接到I2C装置的扩展器元件118-126,扣除已检测的扩展器元件及其被阻挡的通道。BMC保持阻挡已判定的扩展器元件的通道,直到BMC检测到已判定的扩展器元件已在步骤230中被移除。
[0045] 在步骤232中,一旦BMC检测到在步骤230中扩展器元件的移除,BMC可恢复扩展器元件所使用的被阻挡的通道。在步骤212中,BMC可回报造成总线停摆的扩展器元件已被移除,以及由于扩展器元件造成的总线停摆而阻挡的通道,已可供待连接至扩展器的新元件使用。
[0046] 对于本领域技术人员而言,显而易见的是,可对目前公开的结构做出各种修改及变更而不背离公开内容的精神及范围。鉴于上述内容,意在使对目前公开内容做出的变更及修改被涵盖于本公开下述权利要求书的范围中。