CN112148515B - 一种故障定位方法、系统、装置、介质和设备 - Google Patents

一种故障定位方法、系统、装置、介质和设备 Download PDF

Info

Publication number
CN112148515B
CN112148515B CN202010971982.4A CN202010971982A CN112148515B CN 112148515 B CN112148515 B CN 112148515B CN 202010971982 A CN202010971982 A CN 202010971982A CN 112148515 B CN112148515 B CN 112148515B
Authority
CN
China
Prior art keywords
information
fault
programmable device
register
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010971982.4A
Other languages
English (en)
Other versions
CN112148515A (zh
Inventor
胡守锋
曾明强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ruijie Networks Co Ltd
Original Assignee
Ruijie Networks Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ruijie Networks Co Ltd filed Critical Ruijie Networks Co Ltd
Priority to CN202010971982.4A priority Critical patent/CN112148515B/zh
Publication of CN112148515A publication Critical patent/CN112148515A/zh
Application granted granted Critical
Publication of CN112148515B publication Critical patent/CN112148515B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0677Localisation of faults
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/14Arrangements for monitoring or testing data switching networks using software, i.e. software packages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Programmable Controllers (AREA)

Abstract

本发明涉及一种故障定位方法、系统、装置、介质和设备。根据本发明实施例提供的方案,可编程器件可以按照预先设定的指令监测要求,通过先入先出(FIFO)寄存器来保存指令对应的指定信息,在网络设备发生故障时,可编程器件可以根据中央处理器或基板管理控制器发送的故障排查请求,从FIFO寄存器中获取一条指定信息,并将对该指定信息进行解析得到一条解析信息写入读写寄存器,使得中央处理器或基板管理控制器可以获取读写寄存器中保存的解析信息,从而可以根据解析信息以及软件代码,实现故障原因的准确定位。

Description

一种故障定位方法、系统、装置、介质和设备
技术领域
本发明涉及通信技术领域,特别涉及一种故障定位方法、系统、装置、介质和设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
一些网络设备,例如,数据中心高端交换机或者服务器,通常由中央处理器(CPU)和基板管理控制器(BMC)双重软件平台进行控制。但CPU和BMC的芯片引脚数量有限,无法直接控制网络设备上所有的芯片,因此网络设备的底层功能驱动一般由复杂可编程逻辑器件(CPLD)来实现。CPLD的芯片引脚丰富,逻辑功能可以灵活设计,是CPU和BMC控制整个网络设备工作的重要桥梁。
CPU可以通过LPC等接口与CPLD通信,BMC可以通过I2C等接口与CPLD通信,CPLD提供若干寄存器(可以记为读写寄存器),可允许LPC、I2C等接口进行读写操作。CPLD一方面将采集的各芯片或模块的数据存储到读写寄存器中;另一方面,将读写寄存器中存储的数据及时下发到相应的芯片或者模块。
网络设备在研发和使用过程中,无法避免地会发生各种各样的故障。目前的故障原因定位方案中,在网络设备发生故障,特别是发生偶发故障时,往往难以准确地定位发生了何种故障。
因此,亟需提供一种可以准确地定位网络设备故障原因的方案。
发明内容
本发明实施例提供一种故障定位方法、系统、装置、介质和设备,用于解决无法准确地进行网络设备故障定位的问题。
第一方面,本发明提供了一种故障定位方法,所述方法应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,所述方法包括:
若确定所述网络设备发生故障,向可编程器件发送故障排查请求;
从可编程器件中的读写寄存器中获取一条解析信息,一条解析信息为所述可编程器件通过获取先入先出寄存器中保存的一条指定信息,解析该指定信息得到的;
根据所述解析信息以及对应的软件代码,定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的所述可编程器件接收到的一条指令对应的指定信息。
可选的,所述指定信息包括地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息中的至少一个。
可选的,所述方法还包括:
从可编程器件中的读写寄存器中获取指定芯片和/或传感器的输出信号,所述指定芯片和/或传感器的输出信号为所述读写寄存器通过连接的指定引脚采集到的;
根据所述解析信息以及对应的软件代码,定位故障原因,包括:
根据所述解析信息、所述指定芯片和/或传感器的输出信号以及对应的软件代码,定位故障原因。
可选的,根据所述解析信息、所述指定芯片和/或传感器的输出信号以及对应的软件代码,定位故障原因,包括:
若至少一条用于故障原因定位的解析信息包括的地址信息与对应的软件代码中的地址信息不一致,和/或,至少一条用于故障原因定位的解析信息包括的数据信息与对应的软件代码中的数据信息不一致,进一步判断所述至少一条用于故障原因定位的解析信息中是否包括指令超时指示信息,若包括,定位故障原因为软件故障,否则,定位故障原因为可编程器件固件故障或硬件电路故障;
若定位故障原因为可编程器件固件故障或硬件电路故障,进一步判断指定芯片和/或传感器的输出信号是否均属于设定范围内,若均属于设定范围内,定位故障原因为可编程器件固件故障,否则,定位故障原因为硬件电路故障;
若每条用于故障原因定位的解析信息包括的地址信息均与对应的软件代码中的地址信息一致,且每条用于故障原因定位的解析信息包括的数据信息也均与对应的软件代码中的数据信息一致,进一步判断指定芯片和/或传感器的输出信号是否均属于设定范围内,若均属于设定范围内,定位故障原因为可编程器件固件故障,否则,定位故障原因为硬件电路故障;其中,用于故障原因定位的解析信息为本次获得的解析信息,或者本次获得的解析信息以及本次之前获得的至少一条解析信息。
第二方面,本发明还提供了一种故障定位方法,所述方法应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,所述方法包括:
若接收到中央处理器或基板管理控制器发送的故障排查请求,获取先入先出寄存器中保存的一条指定信息;
解析获取的指定信息,并将解析得到的解析信息写入读写寄存器,使得所述中央处理器或基板管理控制器从所述读写寄存器中获取所述解析信息,根据所述解析信息以及对应的软件代码定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
其中,一条指定信息,为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的可编程器件接收到的一条指令对应的指定信息。
可选的,所述指定信息包括地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息中的至少一个。
可选的,所述方法还包括:若接收到所述先入先出寄存器发送的写满信号,获取所述先入先出寄存器中保存的一条指定信息并丢弃。
可选的,一条指定信息通过以下方式保存:
若所述可编程器件接收到所述中央处理器和/或基板管理控制器发送的一条指令,则所述可编程器件根据所述读写寄存器保存的预先设定的指令监测要求,控制所述先入先出寄存器保存接收到的该指令对应的指定信息。
第三方面,本发明还提供了一种故障定位系统,所述系统包括中央处理器或基板管理控制器,以及可编程器件,其中:
所述中央处理器或基板管理控制器,用于若确定网络设备发生故障,向所述可编程器件发送故障排查请求;从所述可编程器件中的读写寄存器中获取一条解析信息,一条解析信息为所述可编程器件通过获取先入先出寄存器中保存的一条指定信息,解析该指定信息得到的;以及,根据所述解析信息以及对应的软件代码,定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
所述可编程器件,用于若接收到所述故障排查请求,获取先入先出寄存器中保存的一条指定信息,解析获取的指定信息,并将解析得到的解析信息写入读写寄存器;
其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的可编程器件接收到的一条指令对应的指定信息。
第四方面,本发明还提供了一种故障定位装置,所述装置应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,所述装置包括:
发送单元,用于若确定所述网络设备发生故障,向可编程器件发送故障排查请求;
接收单元,用于从可编程器件中的读写寄存器中获取一条解析信息,一条解析信息为所述可编程器件通过获取先入先出寄存器中保存的一条指定信息,解析该指定信息得到的;
定位单元,用于根据所述解析信息以及对应的软件代码,定位故障原因,并在根据所述解析信息无法定位故障原因时,触发所述发送单元执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
其中,一条指定信息,为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的所述可编程器件接收到的一条指令对应的指定信息。
第五方面,本发明还提供了一种故障定位装置,所述装置应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,所述装置包括故障控制模块、先入先出寄存器模块和寄存器存储模块:
所述故障控制模块,用于若接收到中央处理器或基板管理控制器发送的故障排查请求,获取所述先入先出寄存器中保存的一条指定信息;解析获取的指定信息,并将解析得到的解析信息写入所述寄存器存储模块;
所述先入先出寄存器模块,用于保存所述指定信息,其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的可编程器件接收到的一条指令对应的指定信息;
所述寄存器存储模块,用于保存所述故障控制模块写入的解析信息,使得所述中央处理器或基板管理控制器从所述寄存器存储模块中获取所述解析信息,根据所述解析信息以及对应的软件代码定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止。
第六方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有可执行程序,该可执行程序被处理器执行实现如上所述的方法。
第七方面,本发明还提供了一种故障定位设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存储的程序时,实现如上所述的方法步骤。
根据本发明实施例提供的方案,可编程器件可以按照预先设定的指令监测要求,通过先入先出(FIFO)寄存器来保存指令对应的指定信息,在网络设备发生故障时,可编程器件可以根据中央处理器或基板管理控制器发送的故障排查请求,从FIFO寄存器中获取一条指定信息,并将对该指定信息进行解析得到一条解析信息写入读写寄存器,使得中央处理器或基板管理控制器可以获取读写寄存器中保存的解析信息,从而可以根据解析信息以及软件代码,实现故障原因的准确定位。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的故障定位方法的流程示意图;
图2为本发明实施例提供的故障定位方法的流程示意图;
图3为本发明实施例提供的故障定位装置的结构示意图;
图4为本发明实施例提供的故障定位装置的结构示意图;
图5为本发明实施例提供的故障定位系统的结构示意图;
图6为本发明实施例提供的网络设备硬件结构示意图;
图7为本发明实施例提供的CPLD内部主要模块连线示意图;
图8为本发明实施例提供的故障定位设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明提供的方案适用于包括CPU和BMC中的至少一个,以及可编程器件的网络设备中。该网络设备由CPU和/或BMC进行软件控制,底层功能驱动由可编程器件,例如CPLD,来实现。
在本发明实施例提供的方案中,在可编程器件中,可以预先设定指令监测要求。这样可编程器件在接收到CPU和/或BMC发送的指令时,可编程器件可以按照预先设定的指令监测要求,对指令进行监测,控制FIFO寄存器保存接收到的指令对应的指定信息。
在一种可能的实现方式中,根据故障原因定位的需要,预先设定的指令监测请求可以定义需要监测的指令来源、需要监测的指令对应的操作类型、需要监测的信息类型、需要监测的指令对应的特定地址、计数对应的间隔时间统计精度等等中的至少一个。
为了实现故障原因定位,在一种可能的实现方式中,一条指令对应的一条指定信息可以包括地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息中的至少一个。
进一步地,指定信息中还可以包括指令来源信息和指令对应的操作类型信息中的至少一个。
需要进一步说明的是,预先设定的指令检测要求可以保存在读写寄存器中。即可以理解为,若可编程器件接收到CPU和/或BMC发送的指令,则可编程器件可以根据读写寄存器保存的预先设定的指令监测要求,控制FIFO寄存器保存接收到的指令对应的指定信息。
这样,CPU或BMC在确定网络设备发送故障时,可以向可编程器件发送故障排查请求。可编程器件可以根据故障排查请求,从FIFO寄存器中获取一条指定信息,将解析该指定信息得到的解析信息写入读写寄存器。进而CPU或BMC可以从读写寄存器获取解析信息并输出,从而可以根据解析信息以及对应的软件代码,来定位故障原因。
基于上述说明,本发明实施例提供一种故障定位方法,所述方法应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,所述方法可以应用于网络设备中的CPU或BMC侧,该方法的步骤流程可以如图1所示,包括:
步骤101、CPU或BMC若确定网络设备发生故障,向可编程器件发送故障排查请求。
在本步骤中,CPU或BMC若确定网络设备发生故障,可以通过指定接口,向可编程器件发送故障排查请求。例如,CPU可以但不限于通过LPC接口,BMC可以但不限于通过I2C接口,向可编程器件发送故障排查请求。
步骤102、CPU或BMC从可编程器件中的读写寄存器中获取一条解析信息。
向可编程器件发送故障排查请求之后,在本步骤中,CPU或BMC可以通过指定接口,从可编程器件中的读写寄存器中获取一条解析信息。
一条解析信息可以理解为可编程器件通过获取FIFO寄存器中保存的一条指定信息,解析该指定信息得到的。
在一种可能的实现方式中,一条指令对应的一条指定信息可以包括地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息中的至少一个。
即可以根据一条指令对应的地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息,来定位故障原因。
在一种可能的实现方式中,一条指令对应的一条指定信息还可以包括指令来源信息和指令对应的操作类型信息中的至少一个。
指令来源信息可以用于描述指令来自哪个接口,指令对应的操作类型信息可以用于描述指令对应的是读操作还是写操作。
即,如果预先设定的指令监测请求中没有对需要监测的指令来源,和/或需要监测的指令对应的操作类型进行定义,那么后续可以根据指定信息中的指令来源信息来确定对应的指令来源,根据指定信息中的指令对应的操作类型信息来确定对应的指令的操作类型。
为方便描述,可以将指定信息中的指令来源,指令对应的操作类型以及指令是否超时指示信息统一记为指令类型信息。
步骤103、CPU或BMC根据该解析信息以及对应的软件代码,定位故障原因。
CPU或BMC获取解析信息之后,可以根据该解析信息以及对应的软件代码,来定位故障原因,实现故障原因的准确定位。
当然,如果根据本次获得的解析信息以及对应的软件代码,无法定位故障原因,则可以继续返回执行步骤101,继续获取下一条解析信息,从而可以根据新的解析信息来定位故障原因。
需要说明的是,根据解析信息以及对应的软件代码来定位故障原因,可以是每次获得一条解析信息,根据一条解析信息以及对应的软件代码来定位故障原因,也可以是获得多条解析信息后,根据多条解析信息以及对应的软件代码来定位故障原因。
如果是每次获得一条解析信息,根据一条解析信息以及对应的软件代码来定位故障原因,根据本次获得的解析信息以及对应的软件代码,无法定位故障原因,可以理解为根据本次获得的解析信息以及对应的软件代码,无法定位出故障原因。
如果是获得多条解析信息后,根据多条解析信息以及对应的软件代码来定位故障原因,根据本次获得的解析信息以及对应的软件代码,无法定位故障原因,可以理解为获得的解析信息数量未达到设定数量,或者,根据本次获得的解析信息、本次之前获得的至少一条解析信息以及对应的软件代码,无法定位出故障原因。
根据解析信息以及对应的软件代码,定位故障原因可以通过任意方式实现。例如,在一种可能的实现方式中,根据解析信息以及对应的软件代码,定位故障原因,可以包括:
若至少一条用于故障原因定位的解析信息(用于故障原因定位的解析信息可以为本次获得的解析信息,或者本次获得的解析信息以及本次之前获得的至少一条解析信息)包括的地址信息与对应的软件代码中的地址信息不一致,和/或,至少一条用于故障原因定位的解析信息包括的数据信息与对应的软件代码中的数据信息不一致,进一步判断所述至少一条用于故障原因定位的解析信息中是否包括指令超时指示信息,若包括,定位故障原因为软件故障,否则,定位故障原因为可编程器件固件故障(即固化在可编程器件中的软件故障)或硬件电路故障。
又如,在一种可能的实现方式中,若需要定位喂狗操作超时的故障原因,根据解析信息以及对应的软件代码,定位故障原因,可以包括:
确定针对喂狗操作的两条解析信息对应的软件代码中,时长设置是否满足设定要求,若不满足设定要求,定位故障原因为软件故障,否则,进一步判断两条解析信息对应的指令之间的间隔时长是否满足设定要求:
若不满足设定要求,定位故障原因为软件故障,否则,定位故障原因为可编程器件固件故障或硬件电路故障。
在一种可能的实现方式中,可以针对喂狗操作,对涉及指定地址的指令进行监测,针对喂狗操作的两条解析信息对应的指令之间的间隔时长,可以通过每条解析信息对应的当前有效信号距离上一有效信号时长计数值与设定的间隔时间统计精度的乘积,求和得到。
在一种可能的实现方式中,针对喂狗操作的两条解析信息对应的指令之间的间隔时长,还可以根据针对喂狗操作的两条解析信息以及两条解析信息之间的每条解析信息,通过统计每条解析信息包括的当前有效信号距离上一有效信号时长计数值与设定的间隔时间统计精度的乘积,求和得到针对喂狗操作的两条解析信息对应的指令之间的间隔时长。
当然,在本实施例中,CPU或BMC除了可以根据获取的解析信息,进行自动故障原因定位之外,还可以输出获取的解析信息,使得可以根据输出的解析信息,进行人工故障原因定位。
另外,进一步的,在本实施例中,读写寄存器还可以连接指定的引脚采集指定芯片和/或传感器的输出信号并保存,此时,在步骤102中,CPU或BMC除了从可编程器件中的读写寄存器中获取解析信息,还可以包括:
从可编程器件中的读写寄存器中获取指定芯片和/或传感器的输出信号,所述指定芯片和/或传感器的输出信号为所述读写寄存器通过连接的指定引脚采集到的。
此时在步骤103中,CPU或BMC可以进一步结合指定芯片和/或传感器的输出信号,来进行故障原因定位,进一步提高故障原因定位的准确性。
在步骤103中,根据解析信息以及对应的软件代码,定位故障原因,包括:
根据解析信息、指定芯片和/或传感器的输出信号以及对应的软件代码,定位故障原因。
在一种可能的实现方式中,根据解析信息、指定芯片和/或传感器的输出信号以及对应的软件代码,定位故障原因,可以包括:
若至少一条用于故障原因定位的解析信息包括的地址信息与对应的软件代码中的地址信息不一致,和/或,至少一条用于故障原因定位的解析信息包括的数据信息与对应的软件代码中的数据信息不一致,进一步判断所述至少一条用于故障原因定位的解析信息中是否包括指令超时指示信息,若包括,定位故障原因为软件故障,否则,定位故障原因为可编程器件固件故障或硬件电路故障;
若定位故障原因为可编程器件固件故障或硬件电路故障,进一步判断指定芯片和/或传感器的输出信号是否均属于设定范围内,若均属于设定范围内,定位故障原因为可编程器件固件故障,否则,定位故障原因为硬件电路故障。
若每条用于故障原因定位的解析信息包括的地址信息均与对应的软件代码中的地址信息一致,且每条用于故障原因定位的解析信息包括的数据信息也均与对应的软件代码中的数据信息一致,进一步判断指定芯片和/或传感器的输出信号是否均属于设定范围内,若均属于设定范围内,定位故障原因为可编程器件固件故障,否则,定位故障原因为硬件电路故障。
若需要定位喂狗操作超时的故障原因,根据解析信息、指定芯片和/或传感器的输出信号以及对应的软件代码,定位故障原因,可以包括:
确定针对喂狗操作的两条解析信息对应的软件代码中,时长设置是否满足设定要求,若不满足设定要求,定位故障原因为软件故障,否则,进一步判断两条解析信息对应的指令之间的间隔时长是否满足设定要求:
若不满足设定要求,定位故障原因为软件故障,否则,定位故障原因为可编程器件固件故障或硬件电路故障;
若定位故障原因为可编程器件固件故障或硬件电路故障,进一步判断指定芯片和/或传感器的输出信号是否均属于设定范围内,若均属于设定范围内,定位故障原因为可编程器件固件故障,否则,定位故障原因为硬件电路故障。
当然,在本实施例中,CPU或BMC还可以输出获取的解析信息以及指定芯片和/或传感器的输出信号,使得可以根据输出的解析信息以及指定芯片和/或传感器的输出信号,进行人工故障原因定位。
从可编程器件侧,本发明实施例进一步提供一种故障定位方法,该方法的步骤流程可以如图2所示,包括:
步骤201、可编程器件接收CPU或BMC发送的故障排查请求。
在本步骤中,可编程器件可以接收CPU或BMC发送的故障排查请求,若接收到故障排查请求,则可以继续执行步骤202。
步骤202、可编程器件获取FIFO寄存器中保存的一条指定信息。
可编程器件接收到CPU或BMC发送的故障排查请求之后,在本步骤中,可以从FIFO寄存器中,获取一条指定信息。
在本实施例中,可编程器件可以按照预先设定的指令监测要求,控制FIFO寄存器保存接收到的每条指令对应的指定信息。即FIFO寄存器中保存的一条指定信息,可以理解为可编程器件按照预先设定的指令监测要求,控制FIFO寄存器保存的接收到的一条指令对应的指定信息。
预先设定的指令监测请求可以定义需要监测的指令来源(即定义仅对来自指定接口的指令进行监测)、需要监测的指令对应的操作类型(即定义仅对涉及指定操作类型的指令进行监测)、需要监测的信息类型(即定义需要监测指令中的地址信息,还是数据信息,还是均需要监测,另外,还可以定义是否需要监测涉及特定地址的指令中的数据信息)、需要监测的指令对应的特定地址(即定义仅对涉及该特定地址的指令中的数据信息进行监测)、间隔时间统计精度(即定义当前有效信号距离上一有效信号时长计数值对应的计数间隔时长)等等中的至少一个。
在一种可能的实现方式中,若可编程器件接收到CPU和/或BMC发送的一条指令,则可编程器件可以根据读写寄存器保存的预先设定的指令监测要求,控制FIFO寄存器保存接收到的该指令对应的指定信息,实现对指定指令的监测。
在一种可能的实现方式中,指定信息可以包括地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息中的至少一个。
进一步的,指定信息还可以包括指令来源信息和指令对应的操作类型信息中的至少一个。
步骤203、可编程器件解析获取的指定信息,并将解析得到的解析信息写入读写寄存器。
由于FIFO寄存器中保存的指定信息是按照预先定义的第一存储格式存储的,在本步骤中,可编程器件可以对获取的指定信息进行解析,并可以将解析得到的解析信息按照预先定义的第二存储格式写入读写寄存器,使得CPU或BMC可以从读写寄存器中,获取解析信息,根据解析信息以及对应的软件代码定位故障原因。
需要说明的是,如果可编程器件接收到FIFO寄存器发送的写满信号,但可编程器件没有接收到故障排查请求,则可以获取FIFO寄存器中保存的一条指定信息并丢弃,以使得FIFO寄存器可以持续地保存每条被监测的指令对应的指定信息,用于后续定位故障原因。
与提供的方法对应的,进一步提供以下的装置。
本发明实施例提供一种故障定位装置,所述装置应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,所述装置可以集成在CPU或BMC中,其结构可以如图3所示,包括:
发送单元01用于若确定所述网络设备发生故障,向可编程器件发送故障排查请求;
接收单元02用于从可编程器件中的读写寄存器中获取一条解析信息,一条解析信息为所述可编程器件通过获取先入先出寄存器中保存的一条指定信息,解析该指定信息得到的;
定位单元03用于根据所述解析信息以及对应的软件代码,定位故障原因,并在根据所述解析信息无法定位故障原因时,触发所述发送单元执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的所述可编程器件接收到的一条指令对应的指定信息。
可选的,所述指定信息包括地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息中的至少一个。
可选的,所述接收单元02还用于从可编程器件中的读写寄存器中获取指定芯片和/或传感器的输出信号,所述指定芯片和/或传感器的输出信号为所述读写寄存器通过连接的指定引脚采集到的;
所述定位单元03用于根据所述解析信息以及对应的软件代码,定位故障原因,包括:
所述指定芯片和/或传感器的输出信号,以便根据所述解析信息、所述指定芯片和/或传感器的输出信号以及对应的软件代码,定位故障原因。
可选的,所述定位单元03根据所述解析信息、所述指定芯片和/或传感器的输出信号以及对应的软件代码,定位故障原因,包括:
若至少一条用于故障原因定位的解析信息包括的地址信息与对应的软件代码中的地址信息不一致,和/或,至少一条用于故障原因定位的解析信息包括的数据信息与对应的软件代码中的数据信息不一致,进一步判断所述至少一条用于故障原因定位的解析信息中是否包括指令超时指示信息,若包括,定位故障原因为软件故障,否则,定位故障原因为可编程器件固件故障或硬件电路故障;
若定位故障原因为可编程器件固件故障或硬件电路故障,进一步判断指定芯片和/或传感器的输出信号是否均属于设定范围内,若均属于设定范围内,定位故障原因为可编程器件固件故障,否则,定位故障原因为硬件电路故障;
若每条用于故障原因定位的解析信息包括的地址信息均与对应的软件代码中的地址信息一致,且每条用于故障原因定位的解析信息包括的数据信息也均与对应的软件代码中的数据信息一致,进一步判断指定芯片和/或传感器的输出信号是否均属于设定范围内,若均属于设定范围内,定位故障原因为可编程器件固件故障,否则,定位故障原因为硬件电路故障;其中,用于故障原因定位的解析信息为本次获得的解析信息,或者本次获得的解析信息以及本次之前获得的至少一条解析信息。
本发明实施例提供一种故障定位装置,所述装置应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,所述装置可以集成在可编程器件中,其结构可以如图4所示,包括故障控制模块11、先入先出寄存器模块12和寄存器存储模块13:
所述故障控制模块11用于若接收到中央处理器或基板管理控制器发送的故障排查请求,获取所述先入先出寄存器中保存的一条指定信息;解析获取的指定信息,并将解析得到的解析信息写入所述寄存器存储模块;
所述先入先出寄存器模块12用于保存所述指定信息,其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的可编程器件接收到的一条指令对应的指定信息;
所述寄存器存储模块13用于保存所述故障控制模块写入的解析信息,使得所述中央处理器或基板管理控制器从所述寄存器存储模块中获取所述解析信息,根据所述解析信息以及对应的软件代码定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止。
可选的,所述指定信息包括地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息中的至少一个。
可选的,所述故障控制模块11还用于若接收到所述先入先出寄存器模块发送的写满信号,获取所述先入先出寄存器模块中保存的一条指定信息并丢弃。
可选的,所述故障控制模块11还用于若接收到所述中央处理器和/或基板管理控制器发送的一条指令,则根据所述寄存器存储模块保存的预先设定的指令监测要求,控制所述先入先出寄存器保存接收到的该指令对应的指定信息。
本发明上述实施例提供的各装置的各功能单元的功能,可以通过上述对应的各方法的步骤来实现,因此,本发明实施例提供的各装置中的各个功能单元的具体工作过程和有益效果,在此不复赘述。
进一步的,本发明实施例还提供一种故障定位系统,所述系统的结构可以如图5所示,包括中央处理器或基板管理控制器21,以及可编程器件22,其中:
所述中央处理器或基板管理控制器21用于若确定网络设备发生故障,向所述可编程器件发送故障排查请求;从所述可编程器件中的读写寄存器中获取一条解析信息,一条解析信息为所述可编程器件通过获取先入先出寄存器中保存的一条指定信息,解析该指定信息得到的;以及,根据所述解析信息以及对应的软件代码,定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
所述可编程器件22用于若接收到所述故障排查请求,获取先入先出寄存器中保存的一条指定信息,解析获取的指定信息,并将解析得到的解析信息写入读写寄存器;
其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的可编程器件接收到的一条指令对应的指定信息。
下面以一个网络设备(假设为交换机)中包括CPU和BMC,且包括的可编程器件为CPLD,CPU通过LPC接口与CPLD进行通信,BMC通过I2C接口与CPLD进行通信为例,结合图4给出的故障定位装置(可以理解为集成在可编程器件中)的结构示意图,通过一个具体的实例,对本发明方案进行说明。
网络设备的硬件结构示意图可以如图6所示。如图6所示,网络设备中除了可以包括BMC、CPU和CPLD之外,还可以包括若干被控芯片(即被CPLD控制的芯片)和传感器,CPLD中的寄存器存储模块(即读写存储器)可以通过连接指定的引脚,采集指定的被控芯片和传感器的输出信号。
如图6所示,BMC可以通过数据信号线(I2C_SDA)以及时钟信号线(I2C_SCL)与CPLD进行通信。CPU可以通过时钟信号线(LPC_CLK)、命令、地址、数据复用信号线(LPC_AD0~LPC_AD3)、指示一个操作循环开始信号线(LPC_FRAME_N)以及中断请求信号线(LPC_SERIRQ)与CPLD进行通信。
另外,如图6所示,在CPLD中,除了可以包括故障控制模块、先入先出寄存器模块以及寄存器存储模块之外,还可以包括寄存器定义模块、I2C解析模块、LPC解析模块以及输入输出(I/O)模块,其中:
所述寄存器定义模块,可以用于定义寄存器存储模块中的读写寄存器偏移地址、字节长度、含义、描述和默认值。且偏移地址的编号可以用户自定义。
例如,寄存器定义模块定义的信息可以如表1所示。
表1
Figure BDA0002684397940000181
Figure BDA0002684397940000191
下面对表1进行进一步说明。表1中的信息可以理解为:
可以将预先设定的指令监测请求保存在读写寄存器中,并可以用0x20(0x20表示偏移地址为0x20的一个读写寄存器,后续类似表示不再一一说明)的值表示需要监测的指令来源、需要监测的指令对应的操作类型以及需要监测的信息类型,用0x21的值表示需要监测的指令对应的特定地址,用0x22的值表示间隔时间统计精度。
可以将解析信息分别保存在0x23~0x26中,并可以用0x23的值表示当前有效信号距离上一有效信号时长计数值,用0x24的值表示指令类型,用0x25和0x26的值表示地址信息和/或数据信息。
需要说明的是,如果0x25和0x26对应的地址信息或数据信息来自不同指令,那么可以设定0x24的值表示0x25和0x26所对应的任意一条指令的指令类型,例如,设定0x24的值表示0x26所对应的指令的指令类型。
另外,可以将监测到的指定芯片和/或传感器的输出信号保存在0x27~0x2f中。
当0x20值为00,0x25和0x26分别用于回显地址和数据(回显可以理解为保存的信息为故障控制模块根据从先入先出寄存器模块获得的指定信息解析得到)。
当0x20值为01,0x25和0x26均用于回显地址,0x25中回显的是上一帧指令的地址,0x26中回显的是下一帧指令的地址。相比同时回显地址和数据,此种模式下牺牲了不关心的数据,但可以回显2倍指令的地址。
当0x20值为02,0x25和0x26均用于回显数据,0x25中回显的是上一帧指令的数据,0x26中回显的是下一帧指令的数据。相比同时回显地址和数据,此种模式下牺牲了不关心的地址,但可以回显2倍指令的数据。
当0x20值为03,0x25和0x26均用于回显数据,0x25中回显的是上一帧指定地址的指令的数据,0x26中回显的是下一帧指定地址的指令的数据。相比同时回显地址和数据,此种模式下地址是唯一的,所以并不需要查看,但可以回显2倍指令的数据。相比上一模式,屏蔽了不需要关心的指令。
当0x20值为04,0x25和0x26分别用于回显地址和数据。相比0x20值为00,此时回显仅针对所有读指令。
当0x20值为05,0x25和0x26均用于回显地址,0x25中回显的是上一帧指令的地址,0x26中回显的是下一帧指令的地址。相比0x20值为01,此时回显仅针对所有读指令。
当0x20值为06,0x25和0x26均用于回显数据,0x25中回显的是上一帧指令的数据,0x26中回显的是下一帧指令的数据。相比0x20值为02,此时回显仅针对所有读指令。
当0x20值为07,0x25和0x26均用于回显数据,0x25中回显的是上一帧指定地址的指令的数据,0x26中回显的是下一帧指定地址的指令的数据。相比0x20值为03,此时回显仅针对涉及指定地址的所有读指令。
当0x20值为08,0x25和0x26分别用于回显地址和数据。相比0x20值为00,此时回显仅针对所有写命令。
当0x20值为09,0x25和0x26均用于回显地址,0x25中回显的是上一帧指令的地址,0x26中回显的是下一帧指令的地址。相比0x20值为01,此时回显仅针对所有写命令。
当0x20值为0a,0x25和0x26均用于回显数据,0x25中回显的是上一帧指令数据,0x26中回显的是下一帧指令的数据。相比0x20值为02,此时回显仅针对所有写命令。
当0x20值为0b,0x25和0x26均用于回显数据,0x25中回显的是上一帧涉及指定地址指令的数据,0x26中回显的是下一帧涉及指定地址的指令的数据。相比0x20值为03,此时仅回显涉及指定地址的所有写指令。
其他以此类推,当0x20的值是0x10~0x1b时,仅对来自I2C接口的指令进行监测。当0x20的值是0x20~0x2b时,仅对来自LPC接口的指令进行监测。其他值当前默认不监测。
另外,本实施例中,定义了偏移地址为0x27-0x2f这15个读写寄存器来保存指定芯片和传感器的输出信号。当然,当需要监控的指定芯片和传感器数量越多时,还可以根据实际情况拓展,并不局限于15个读写寄存器。
CPLD内部主要模块(I2C解析模块、LPC解析模块、寄存器存储模块、故障控制模块和FIFO存储器模块)连线示意图可以如图7所示。
I2C解析模块可以根据I2C协议,将BMC发送给寄存器存储模块的读指令和写指令解析出来,将地址和数据分离出来。如果是写指令,则可以通过I2C写有效信号(i2c_wr_data_valid)、I2C写数据信号(i2c_wr_data[7:0])、I2C读写地址信号(i2c_rd_wr_addr[7:0]),将数据写入寄存器存储模块。如果是读指令,则可以通过I2C读请求信号(i2c_rd_data_req)、I2C读数据信号(i2c_rd_data[7:0])、I2C读写地址信号(i2c_rd_wr_addr[7:0]),将寄存器存储模块的数据转换为I2C总线的数据。另一方面,可以对CPLD其他逻辑输出写有效和读请求信号,这两个信号都仅维持一个时钟周期。写有效信号和读请求信号为1时,数据和地址都有效。
LPC解析模块可以根据LPC协议,将CPU发送给寄存器存储模块的读指令和写指令解析出来,将地址和数据分离出来。如果是写指令,则可以通过LPC写有效信号(lpc_wr_data_valid)、LPC写数据信号(lpc_wr_data[7:0])、LPC读写地址信号(lpc_rd_wr_addr[7:0]),将数据写入寄存器存储模块。如果是读指令,则可以通过LPC读请求信号(lpc_rd_data_req)、LPC读数据信号(lpc_rd_data[7:0])、LPC读写地址信号(lpc_rd_wr_addr[7:0]),将寄存器存储模块的数据转换为LPC总线的数据。
需要注意的是,因为CPU输入的LPC时钟(LPC_CLK)是33MHz,如果CPLD内部运行的时钟与外部时钟不一致时,需要进行跨时钟域处理。跨时钟域的处理方法有多种。例如,本实施例可以使用打拍方式,其中,从外部输入CPLD时,利用33MHz时钟采样外部引脚的信号,然后用或逻辑展宽信号,再采用系统时钟25MHz采样和同步,最终输出给其他逻辑。输出时则先用利用系统时钟25MHz时钟采样内部逻辑,然后用或逻辑展宽,再采用外部33MHz时钟采样和同步到外部引脚。
另一方面,对CPLD其他逻辑输出写有效和读请求信号,这两个信号都仅维持一个时钟周期。写有效信号和读请求信号为1时,数据和地址都有效。
在本实施例中,寄存器存储模块可以连接I2C解析模块和LPC解析模块。如果检测到来自I2C接口或来自LPC接口的写指令,则根据地址定义,将数据存储到地址对应的读写寄存器中。如果检测到来自I2C接口或来自LPC接口的读指令,则根据地址定义,输出该地址对应的读写寄存器的数据。
可以理解为,CPU或者BMC可以根据寄存器定义模块的定义,将预先设定的指令检测要求写入偏移地址为0x20~0x22的读写寄存器。
进而寄存器存储模块可以根据偏移地址为0x20的读写寄存器的值,向故障控制模块输出对应的信息,该输出可以用datatype[7:0]来表示(可以记为datatype),根据偏移地址为0x21的读写寄存器的值,向故障控制模块输出对应的信息,该输出可以用addr_only[7:0]来表示(可以记为addr_only),根据偏移地址为0x22的读写寄存器的值,向故障控制模块输出对应的信息,该输出可以用accuracy[7:0]来表示(可以记为accuracy)。进而故障控制模块可以根据寄存器存储模块保存的预先设定的指令监测要求,控制FIFO寄存器模块保存接收到的每条指令对应的指定信息。
而如果故障控制模块接收到来自CPU或者BMC的故障排查请求,则可以从FIFO寄存器中获取一条指定信息,解析该指定信息,并将对应的值写入寄存器存储模块中偏移地址分别为0x23~0x26的读写寄存器。其中,可以将用Intertime[7:0]表示的输出(可以记为Intertime),保存在偏移地址为0x23的读写寄存器,将用i2c_lpc[2:0]表示的输出(可以记为i2c_lpc),保存在偏移地址为0x24的读写寄存器的第三位,将用data1[7:0]表示的输出(可以记为data1),保存在偏移地址为0x25的读写寄存器,将用data2[7:0]表示的输出(可以记为data2),保存在偏移地址为0x26的读写寄存器。
此外,寄存器存储模块对于需要监测的指定芯片和/或传感器的信号,还可以及时采集输入输出(I/O)模块的信号状态(高电平或低电平),存储到定义的偏移地址(0x27-0x2f)的读写寄存器中。需要监测的信号,可以是芯片的过流、过压、超温警告、中断警告等等。
当然,寄存器存储模块还可以直接连接CPLD的输入输出引脚,对于来自I2C接口和来自LPC接口发送的控制命令,存储到相应的读写寄存器后,直接驱动I/O模块实现上层软件的控制。即,如图7所示,寄存器存储模块还可以接收其他采集和控制类信号,并实现控制类信号的发送。
在本实施例中,FIFO寄存器模块可以根据故障控制模块发出的写请求,把数据存储到FIFO寄存器中。而输出的数据全部依次发送到故障控制模块。
在本实施例中,FIFO寄存器模块的存储深度可以灵活修改,配置方便。例如,可以根据故障控制模块的定义,设置位宽为27bit,存储深度为256。这样,在监测非指定地址的指令时,最多可以监测256条完整的命令;如果选择监测指定地址的指令,那么最多可以监测512条完整的命令,满足绝大多数应用场景的需要。
在本实施例中,故障控制模块可以根据I2C解析模块和LPC解析模块向寄存器存储模块输送的信号,获取寄存器存储模块输出的datatype、accuracy和addr_only。
另外,故障控制模块可以实现当前有效信号距离上一有效信号时长计数值统计功能,实现两个有效信号之间的时间间隔计数。
有效信号可以包括I2C写有效(i2c_wr_data_valid)、I2C读请求(i2c_rd_data_req)、LPC写有效(lpc_wr_data_valid)、LPC读请求(lpc_rd_data_req)这四种。而具体对哪个信号进行计数,则需要由0x20读写寄存器(即datatype)定义的需要监测的指令决定。
在有效信号为1时可以清零计数器,后续可以根据0x22读写寄存器定义的间隔时间统计精度(即accuracy)进行时长统计。计数位宽可以为8bit,最大可以统计255个数。如果用间隔时间统计精度为25MHz,则可以统计的最大时长为10.22us。如果间隔时间统计精度为1khz,则可以统计的最大时长为255ms。如果间隔时间统计精度为100Hz,可以统计的最大时长为2.55秒。如果间隔时间统计精度为20Hz,则可以统计的最大时长为12.75秒。在下一个有效信号到达时停止计数,获取当前计数结果后及时清零。并可以用FF表示大于等于当前间隔时间统计精度对应的最大计数值。
故障控制模块还可以实现一条指令是否超时判断。一般的,一条来自I2C接口和来自LPC接口的指令不会超过设定时长,例如3秒,所以可以根据指定启动信号(I2C指令启动信号(i2c_start)、LPC指令启动信号(lpc_start))和指令停止信号(I2C指令停止信号(i2c_stop)、LPC指令停止信号(lpc_stop)),统计每条指令对应的start信号与stop信号之间的间隔计数值,并可以根据0x22读写寄存器定义的间隔时间统计精度确定时长。如果超过3秒则可以判断该指令超时。指令超时有可能发生了前后两个指令(数据帧)的重组,这种情况往往发生在主控制器突然断电或复位的情况下。
故障控制模块还可以根据寄存器存储模块输出的datatype(即0x20读写寄存器的值),进一步根据LPC写数据信号(lpc_wr_data[7:0])、LPC读数据信号(lpc_rd_data[7:0])、LPC读写地址信号(lpc_rd_wr_addr[7:0])、I2C写数据信号(i2c_wr_data[7:0])、I2C读数据信号(i2c_rd_data[7:0])、I2C读写地址信号(i2c_rd_wr_addr[7:0]),对一条指令对应的信息进行重组,得到指定信息并通过时钟信号(clk)、清空FIFO信号(aclr)、写请求(wrreq)、输入数据信号(data_in[26:0])写入FIFO存储器模块。
例如,如果datatype值为00,则确定需要同时存储来自I2C接口和来自LPC接口的数据帧的地址和数据,即包括了读操作的数据帧,也包括了写操作的数据帧。
可以根据有效信号(I2C写有效信号、I2C读请求信号、LPC写有效信号、LPC读请求信号)为1的先后顺序,针对每个数据帧,将数据写入一条指定信息的低8位,将地址写入第15位到第8位,将当前有效信号距离上一有效信号时长计数值写入第23位到第16位。并根据有效信号的类型以及指令是否超时,编码写入第26位到第24位。
根据0x20读写寄存器的值,FIFO存储器中存储的数据格式可以如表2所示。
表2
Figure BDA0002684397940000251
在表2中,当前有效信号距离上一有效信号时长计数值可以简单记为统计时间。超时写可以理解为一条超时的写指令,超时读可以理解为一条超时的读指令,也就是在表2中,可以将指令来源信息、指令对应的操作类型信息以及指令是否超时指示信息对应的指令类型信息,用24~26比特来表示。
此外,故障控制模块如果接收到故障排查请求,则可以向FIFO寄存器模块发送读请求(rdreq),通过输出数据信号(data_out[26:0])得到FIFO寄存器输出的数据,根据表2所示的FIFO存储器中存储的数据格式,解析FIFO寄存器模块输出的数据。当然,如果FIFO寄存器中无数据可读时,可以通过读为空信号(rdempty)通知故障控制模块无数据可输出。
其中,可以将一条指定信息的第26位至24位通过i2c_lpc输出;将第23位至16位通过intertime输出;将第15位至8位通过data1输出;将第7位至0位通过data2输出。这些信号输出到寄存器存储模块,进而可以被软件读取,用于实现故障原因定位。
需要说明的是,在本实施例中,故障控制模块如果检测到写满(wrfull)信号,则可以自行发起读请求,将FIFO寄存器模块已经存储的数据读出一组并丢弃,确保FIFO寄存器模块可以持续存储。
根据本发明实施例提供的方案,软件驱动层并不需要额外的开销,I2C接口和LPC接口的驱动是交换机实现控制功能必然要开发的,而且大多有开源代码可以参考。在本发明实施例提供的方案中,根据I2C协议和LPC协议就可以回读出FIFO寄存器存储的地址、数据以及命令间隔时间等信息,例如根据I2C协议,可以使用i2cget命令获取到FIFO寄存器中的内容,进而可以写入0x23、0x24、0x25和0x26读写寄存器。
在本实施例中,偏移地址为0x20~0x26的读写寄存器的值可以用于区分故障是否为软件故障;偏移地址为0x27-0x2f的读写寄存器的值可以用于区分故障是CPLD固件故障和外围芯片等硬件电路故障。
本实施例涉及的故障控制模块,可以汇总多种接口协议解析的结果,根据定制化要求,存储和解析软件下发的数据帧命令。能够根据故障定位的需求,对特定地址的数据帧极性连续的精准监控,还能够统计数据帧之间的时间间隔,并判断出明显的指令超时故障。
本实施例中,以I2C和LPC接口为例进行说明,但本发明实施例提供的方案不仅局限于I2C和LPC接口,其他如串口、SPI等同样适用。本实施例以应用于交换机为例进行说明,但本发明实施例提供的方案对服务器也同样适用。
本实施例提供的方案中,可以使用CPLD内部的FIFO寄存器进行存储,保证了所解析的命令真实性和顺序,可以用于判断解析情况与软件预期的一致性,可以通过数据帧超时判断,实现初步的故障判别。支持对单一接口、单一地址的精准监控,可以方便快速定位故障并分类。数据存储深度和存储类型在开发过程中可以自定义,方便灵活定位软硬件交互的问题。间隔时间统计精度和超时时长可选,可以满足常规各类命令的检测需求。
本实施例提供的方案可以用于区分软件故障、CPLD固件故障和硬件电路故障,且不需要使用额外器件实现故障定位和分类,可以节省硬件成本,也不需要额外的软件开发,使用独立的CPLD设计,可以节约软件资源开销。
由于可以准确简便地区分软件故障、CPLD固件故障和硬件电路故障,无需通过示波器来排查硬件电路故障,消除了利用示波器排查时,如果可测试引脚在印制电路板(PCB)的背面板,或者被其他电路板所遮挡,往往需要拆机焊接测试导线,甚至进行整机倒置测试,过程费时费力的问题,可以大大降低设备故障定位难度。
此外,无需召回故障设备来进行故障原因定位,还可以降低设备维护成本。而由于故障原因分类包括软件故障和可编程器件固件故障,针对此类故障,无需召回网络设备,可以通过远程维护消除故障,进一步降低了设备维护成本。
基于同一发明构思,本发明实施例提供以下的设备和介质。
本发明实施例提供一种故障定位设备,该设备的结构可以如图8所示,包括处理器31、通信接口32、存储器33和通信总线34,其中,所述处理器31,所述通信接口32,所述存储器33通过所述通信总线34完成相互间的通信;
所述存储器33,用于存放计算机程序;
所述处理器31,用于执行所述存储器上所存储的程序时,实现本发明上述方法实施例所述的步骤。
可选的,所述处理器31具体可以包括中央处理器(CPU)、特定应用集成电路(ASIC,Application Specific Integrated Circuit),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(FPGA,Field Programmable Gate Array)开发的硬件电路,可以是基带处理器。
可选的,所述处理器31可以包括至少一个处理核心。
可选的,所述存储器33可以包括只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)和磁盘存储器。存储器33用于存储至少一个处理器31运行时所需的数据。存储器33的数量可以为一个或多个。
本发明实施例还提供一种非易失性计算机存储介质,所述计算机存储介质存储有可执行程序,当可执行程序被处理器执行时,实现本发明上述方法实施例提供的方法。
在具体的实施过程中,计算机存储介质可以包括:通用串行总线闪存盘(USB,Universal Serial Bus Flash Drive)、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的存储介质。
在本发明实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性或其它的形式。
在本发明实施例中的各功能单元可以集成在一个处理单元中,或者各个单元也可以均是独立的物理模块。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如可以是个人计算机,服务器,或者网络设备等,或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus Flash Drive)、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (13)

1.一种故障定位方法,所述方法应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,其特征在于,所述方法包括:
若确定所述网络设备发生故障,所述中央处理器或基板管理控制器向可编程器件发送故障排查请求;
从可编程器件中的读写寄存器中获取一条解析信息,一条解析信息为所述可编程器件通过获取先入先出寄存器中保存的一条指定信息,解析该指定信息得到的;
根据所述解析信息以及对应的软件代码,定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的所述可编程器件接收到的一条指令对应的指定信息。
2.如权利要求1所述的方法,其特征在于,所述指定信息包括地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息中的至少一个。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
从可编程器件中的读写寄存器中获取指定芯片和/或传感器的输出信号,所述指定芯片和/或传感器的输出信号为所述读写寄存器通过连接的指定引脚采集到的;
根据所述解析信息以及对应的软件代码,定位故障原因,包括:
根据所述解析信息、所述指定芯片和/或传感器的输出信号以及对应的软件代码,定位故障原因。
4.如权利要求3所述的方法,其特征在于,根据所述解析信息、所述指定芯片和/或传感器的输出信号以及对应的软件代码,定位故障原因,包括:
若至少一条用于故障原因定位的解析信息包括的地址信息与对应的软件代码中的地址信息不一致,和/或,至少一条用于故障原因定位的解析信息包括的数据信息与对应的软件代码中的数据信息不一致,进一步判断所述至少一条用于故障原因定位的解析信息中是否包括指令超时指示信息,若包括,定位故障原因为软件故障,否则,定位故障原因为可编程器件固件故障或硬件电路故障;
若定位故障原因为可编程器件固件故障或硬件电路故障,进一步判断指定芯片和/或传感器的输出信号是否均属于设定范围内,若均属于设定范围内,定位故障原因为可编程器件固件故障,否则,定位故障原因为硬件电路故障;
若每条用于故障原因定位的解析信息包括的地址信息均与对应的软件代码中的地址信息一致,且每条用于故障原因定位的解析信息包括的数据信息也均与对应的软件代码中的数据信息一致,进一步判断指定芯片和/或传感器的输出信号是否均属于设定范围内,若均属于设定范围内,定位故障原因为可编程器件固件故障,否则,定位故障原因为硬件电路故障;其中,用于故障原因定位的解析信息为本次获得的解析信息,或者本次获得的解析信息以及本次之前获得的至少一条解析信息。
5.一种故障定位方法,所述方法应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,其特征在于,所述方法包括:
若接收到中央处理器或基板管理控制器发送的故障排查请求,获取先入先出寄存器中保存的一条指定信息;
解析获取的指定信息,并将解析得到的解析信息写入读写寄存器,使得所述中央处理器或基板管理控制器从所述读写寄存器中获取所述解析信息,根据所述解析信息以及对应的软件代码定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的可编程器件接收到的一条指令对应的指定信息。
6.如权利要求5所述的方法,其特征在于,所述指定信息包括地址信息、数据信息、当前有效信号距离上一有效信号时长计数值以及指令是否超时指示信息中的至少一个。
7.如权利要求5所述的方法,其特征在于,所述方法还包括:
若接收到所述先入先出寄存器发送的写满信号,获取所述先入先出寄存器中保存的一条指定信息并丢弃。
8.如权利要求5~7任一所述的方法,其特征在于,一条指定信息通过以下方式保存:
若所述可编程器件接收到所述中央处理器和/或基板管理控制器发送的一条指令,则所述可编程器件根据所述读写寄存器保存的预先设定的指令监测要求,控制所述先入先出寄存器保存接收到的该指令对应的指定信息。
9.一种故障定位系统,其特征在于,所述系统包括中央处理器或基板管理控制器,以及可编程器件,其中:
所述中央处理器或基板管理控制器,用于若确定网络设备发生故障,向所述可编程器件发送故障排查请求;从所述可编程器件中的读写寄存器中获取一条解析信息,一条解析信息为所述可编程器件通过获取先入先出寄存器中保存的一条指定信息,解析该指定信息得到的;以及,根据所述解析信息以及对应的软件代码,定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
所述可编程器件,用于若接收到所述故障排查请求,获取先入先出寄存器中保存的一条指定信息,解析获取的指定信息,并将解析得到的解析信息写入读写寄存器;
其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的可编程器件接收到的一条指令对应的指定信息。
10.一种故障定位装置,所述装置应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,其特征在于,所述装置包括:
发送单元,用于若确定所述网络设备发生故障,向可编程器件发送故障排查请求;
接收单元,用于从可编程器件中的读写寄存器中获取一条解析信息,一条解析信息为所述可编程器件通过获取先入先出寄存器中保存的一条指定信息,解析该指定信息得到的;
定位单元,用于根据所述解析信息以及对应的软件代码,定位故障原因,并在根据所述解析信息无法定位故障原因时,触发所述发送单元执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止;
其中,一条指定信息,为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的所述可编程器件接收到的一条指令对应的指定信息。
11.一种故障定位装置,所述装置应用于包括中央处理器、基板管理控制器以及可编程器件的网络设备中,其特征在于,所述装置包括故障控制模块、先入先出寄存器模块和寄存器存储模块:
所述故障控制模块,用于若接收到中央处理器或基板管理控制器发送的故障排查请求,获取所述先入先出寄存器中保存的一条指定信息;解析获取的指定信息,并将解析得到的解析信息写入所述寄存器存储模块;
所述先入先出寄存器模块,用于保存所述指定信息,其中,一条指定信息为所述可编程器件按照预先设定的指令监测要求,在先入先出寄存器中保存的可编程器件接收到的一条指令对应的指定信息;
所述寄存器存储模块,用于保存所述故障控制模块写入的解析信息,使得所述中央处理器或基板管理控制器从所述寄存器存储模块中获取所述解析信息,根据所述解析信息以及对应的软件代码定位故障原因,并在根据所述解析信息无法定位故障原因时,返回执行向可编程器件发送故障排查请求,直至定位出故障原因或者所述先入先出寄存器中无指定信息可获取为止。
12.一种非易失性计算机存储介质,其特征在于,所述计算机存储介质存储有可执行程序,该可执行程序被处理器执行实现权利要求1~8任一所述的方法。
13.一种故障定位设备,其特征在于,所述设备包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存储的程序时,实现权利要求1~8任一所述的方法步骤。
CN202010971982.4A 2020-09-16 2020-09-16 一种故障定位方法、系统、装置、介质和设备 Active CN112148515B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010971982.4A CN112148515B (zh) 2020-09-16 2020-09-16 一种故障定位方法、系统、装置、介质和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010971982.4A CN112148515B (zh) 2020-09-16 2020-09-16 一种故障定位方法、系统、装置、介质和设备

Publications (2)

Publication Number Publication Date
CN112148515A CN112148515A (zh) 2020-12-29
CN112148515B true CN112148515B (zh) 2023-06-20

Family

ID=73892877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010971982.4A Active CN112148515B (zh) 2020-09-16 2020-09-16 一种故障定位方法、系统、装置、介质和设备

Country Status (1)

Country Link
CN (1) CN112148515B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113504773A (zh) * 2021-07-29 2021-10-15 安徽江淮汽车集团股份有限公司 一种车载控制器的以太网测试方法及以太网测试系统
CN113900424A (zh) * 2021-09-22 2022-01-07 北京航天巨恒系统集成技术有限公司 一种故障定位方法、装置、电子设备及相关系统
CN114185724B (zh) * 2021-11-10 2023-03-14 成都申威科技有限责任公司 一种fc-ae通信板卡的故障定位系统及方法
CN114168396B (zh) * 2021-11-19 2024-01-12 苏州浪潮智能科技有限公司 一种故障定位方法及相关组件
CN114379572B (zh) * 2022-01-30 2023-11-03 重庆长安汽车股份有限公司 一种车辆环境感知系统及故障诊断方法
CN114780283B (zh) * 2022-06-20 2022-11-01 新华三信息技术有限公司 一种故障处理的方法及装置
CN116074406A (zh) * 2022-11-29 2023-05-05 北京华峰装备技术有限公司 指令发送方法及装置
CN116450692B (zh) * 2023-06-06 2023-08-29 山东浪潮科学研究院有限公司 一种数据库故障排查方法,装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107957924A (zh) * 2016-10-17 2018-04-24 北京计算机技术及应用研究所 基于cpld和bmc的自主可控服务器启动过程监控诊断方法
CN109408339A (zh) * 2018-11-05 2019-03-01 郑州云海信息技术有限公司 一种cpld/fpga寄存器控制方法和系统
CN109683696A (zh) * 2018-12-25 2019-04-26 浪潮电子信息产业股份有限公司 服务器电源故障检测系统、方法、装置、设备及介质
CN110445638A (zh) * 2019-07-05 2019-11-12 苏州浪潮智能科技有限公司 一种交换机系统故障保护方法及装置
CN110515802A (zh) * 2019-08-23 2019-11-29 苏州浪潮智能科技有限公司 一种服务器开机故障的监测方法、系统及相关组件

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652365B2 (en) * 2010-08-24 2017-05-16 Red Hat, Inc. Fault configuration using a registered list of controllers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107957924A (zh) * 2016-10-17 2018-04-24 北京计算机技术及应用研究所 基于cpld和bmc的自主可控服务器启动过程监控诊断方法
CN109408339A (zh) * 2018-11-05 2019-03-01 郑州云海信息技术有限公司 一种cpld/fpga寄存器控制方法和系统
CN109683696A (zh) * 2018-12-25 2019-04-26 浪潮电子信息产业股份有限公司 服务器电源故障检测系统、方法、装置、设备及介质
CN110445638A (zh) * 2019-07-05 2019-11-12 苏州浪潮智能科技有限公司 一种交换机系统故障保护方法及装置
CN110515802A (zh) * 2019-08-23 2019-11-29 苏州浪潮智能科技有限公司 一种服务器开机故障的监测方法、系统及相关组件

Also Published As

Publication number Publication date
CN112148515A (zh) 2020-12-29

Similar Documents

Publication Publication Date Title
CN112148515B (zh) 一种故障定位方法、系统、装置、介质和设备
US20180224502A1 (en) Real-time capture of traffic upon failure for protocol debug
CN108009065B (zh) 监控axi总线的方法和装置
US8996928B2 (en) Devices for indicating a physical layer error
CN107015896B (zh) 一种嵌入式设备cpu及其外设状态实时监测方法、系统
CN111078492B (zh) 一种SoC内部总线的状态监控系统及方法
US7596719B2 (en) Microcontroller information extraction system and method
US20120079324A1 (en) Firmware tracing in a storage data communication system
US20110047424A1 (en) Integrated circuit including a programmable logic analyzer with enhanced analyzing and debugging capabilites and a method therefor
CN104917645A (zh) 一种在线检测报文传输超时的方法与装置
CN102789405A (zh) 主板自动化测试方法及系统
CN103970628A (zh) 自动化检测系统及其自动化检测方法
CN106405383B (zh) 基于视觉检测技术的嵌入式板卡自动测试系统及方法
CN114020511A (zh) 基于fpga的故障检测方法、装置、设备及可读存储介质
CN109471763B (zh) 抓取NVME硬盘trace的方法、装置、设备及系统
CN109522263B (zh) 一种i2c链路监控系统
CN109067605B (zh) 一种存储子系统故障诊断方法、装置、终端及存储介质
US8321604B2 (en) Real-time USB class level decoding
EP3961403A1 (en) Bus monitoring device and method, storage medium, and electronic device
AT505630B1 (de) Einrichtung zum koordinierten testen und zur fehlersuche in verteilten eingebetteten mikroprozessorsystemen
CN109446002B (zh) 一种用于服务器抓取sata硬盘的治具板、系统及方法
TW201743069A (zh) 邏輯分析儀及其資料擷取與效能測試之方法
TW201222240A (en) Testing method for automatically rebooting a motherboard and recording related debug information and rebooting device thereof
CN114416452A (zh) 片上系统诊断方法和装置
CN112181744A (zh) 一种转换器接口的故障检测方法、系统、终端以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant