CN113535441B - 一种嵌入式系统故障诊断装置及方法 - Google Patents

一种嵌入式系统故障诊断装置及方法 Download PDF

Info

Publication number
CN113535441B
CN113535441B CN202010285695.8A CN202010285695A CN113535441B CN 113535441 B CN113535441 B CN 113535441B CN 202010285695 A CN202010285695 A CN 202010285695A CN 113535441 B CN113535441 B CN 113535441B
Authority
CN
China
Prior art keywords
reset
unit
embedded system
cpld
fault
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
CN202010285695.8A
Other languages
English (en)
Other versions
CN113535441A (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.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies 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 Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN202010285695.8A priority Critical patent/CN113535441B/zh
Publication of CN113535441A publication Critical patent/CN113535441A/zh
Application granted granted Critical
Publication of CN113535441B publication Critical patent/CN113535441B/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • 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/0736Error 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 functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • 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/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Abstract

本发明实施例提供了一种嵌入式系统故障诊断装置及方法,嵌入式系统故障诊断装置包括:处理器CPU单元、内存DDR单元、逻辑CPLD单元以及复位电路单元,所述CPU单元分别连接所述DDR单元和所述CPLD单元,所述CPLD单元连接所述复位电路单元;所述复位电路单元和所述CPU单元用于传递复位故障信息给所述CPLD单元,以供所述CPLD单元检测复位源并将所述复位源记录在所述CPLD单元本地的寄存器中,所述DDR单元用于存储故障数据。本发明实施例提供的一种嵌入式系统故障诊断装置及方法,可通过CPLD记录的复位源信息以及DDR内存中保留的故障重启前数据来有效分析故障原因,从而有针对性的对嵌入式系统进行故障诊断。

Description

一种嵌入式系统故障诊断装置及方法
技术领域
本发明涉及嵌入式系统技术领域,尤其涉及一种嵌入式系统故障诊断装置及方法。
背景技术
对于大多数通信设备中均会使用到嵌入式系统,在嵌入式系统正常运行过程中,偶尔会发生一些故障。
例如:嵌入式系统突然重启、嵌入式系统在启动过程或正常运行时会突然挂死、问题出现的时间随机性,无法准确确定问题发生的时间、有些问题只发生过一次难以复刻以及系统反复挂死但无法以较好手段进行排查等。
对于上述可能出现的问题需要有故障诊断的方法对问题进行排查,从而能够及时解决问题。因此,现在亟需一种嵌入式系统故障诊断装置来解决上述问题。
发明内容
为了解决上述问题,本发明实施例提供一种可针对异常复位或重启故障的一种嵌入式系统故障诊断装置及方法。
第一方面本发明实施例提供一种嵌入式系统故障诊断装置,包括:
处理器CPU单元、内存DDR单元、逻辑CPLD单元以及复位电路单元,所述CPU单元分别连接所述DDR单元和所述CPLD单元,所述CPLD单元连接所述复位电路单元;
所述复位电路单元和所述CPU单元用于传递复位故障信息给所述CPLD单元,以供所述CPLD单元检测复位源并将所述复位源记录在所述CPLD单元本地的寄存器中,所述DDR单元用于存储故障数据。
其中,所述CPLD单元还用于确定当前复位源的复位类型,并将所述复位类型发送给所述CPU单元,以供所述CPU单元根据所述复位类型调整复位操作。
其中,所述寄存器包括复位源存放寄存器、历史记录存放寄存器以及复位类型标识寄存器;
所述复位源存放寄存器用于存放当前发生的复位源信息,所述历史记录存放寄存器用于存放历史发生的复位源信息,所述复位类型标识寄存器用于标识复位类型。
其中,所述嵌入式系统故障诊断装置还包括:
按键单元,所述按键单元用于当嵌入式系统的串口和网口连接失败时,启动所述按键单元对所述嵌入式系统进行按键复位。
其中,所述嵌入式系统故障诊断装置还包括定时器,所述定时器设置有溢出阈值,当检测到所述嵌入式系统启动时长超过所述溢出阈值时,对所述嵌入式系统进行溢出复位。
第二方面本发明实施例还提供一种嵌入式系统故障诊断方法,所述方法基于嵌入式系统故障诊断装置包括的处理器CPU单元、内存DDR单元、逻辑CPLD单元以及复位电路单元,所述方法包括:
获取所述复位电路单元和所述CPU单元发送的复位故障信息;
根据所述复位故障信息检测复位源并在本地寄存器记录所述复位源;
读取记录的复位源以及所述DDR单元存储的故障数据,以对所述嵌入式系统进行故障诊断。
其中,所述方法还包括:
确定所述复位源的复位类型,并将所述复位类型发送给所述CPU单元,以供所述CPU单元根据所述复位类型调整复位操作。
其中,所述寄存器包括复位源存放寄存器、历史记录存放寄存器以及复位类型标识寄存器,相应的,所述在本地寄存器记录所述复位源,包括:
在所述复位源存放寄存器存储当前发生的复位源信息、在所述历史记录存放寄存器存储历史发生的复位源信息、并在所述复位类型标识寄存器用于存储所述复位类型。
其中,所述嵌入式系统故障诊断装置还包括按键单元,相应的,所述方法还包括:
当所述嵌入式系统的串口和网口连接失败时,启动所述按键单元对所述嵌入式系统进行按键复位。
其中,所述嵌入式系统故障诊断装置还包括定时器,相应的,所述方法还包括:
当检测到嵌入式系统启动时长超过所述定时器设置的溢出阈值时,对所述嵌入式系统进行溢出复位。
本发明实施例提供的一种嵌入式系统故障诊断装置及方法,可通过CPLD记录的复位源信息以及DDR内存中保留的故障重启前数据来有效分析故障原因,从而有针对性的对嵌入式系统进行故障诊断。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种嵌入式系统故障诊断装置结构示意图;
图2是本发明实施例提供的不同复位类型输出功能逻辑框图;
图3是本发明实施例提供的复位源记录控制流程图;
图4是本发明实施例提供的一种嵌入式系统故障诊断方法流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种嵌入式系统故障诊断装置结构示意图,如图1所示,包括:
处理器CPU单元1、内存DDR单元4、逻辑CPLD单元2以及复位电路单元3,所述CPU单元1分别连接所述DDR单元4和所述CPLD单元2,所述CPLD单元2连接所述复位电路单元3;
所述复位电路单元3和所述CPU单元1用于传递复位故障信息给所述CPLD单元2,以供所述CPLD单元2检测复位源并将所述复位源记录在所述CPLD单元2本地的寄存器中,所述DDR单元4用于存储故障数据。
由背景内容可知,现有的嵌入式系统在运行时会出现一些难以诊断的故障问题,且这些故障问题所可能出现的场景是非常繁杂的,例如:系统莫名其妙的重启、系统启动过程中突然挂死等等,面对上述不同场景出现的不同问题,尚没有一种系统的诊断方式能全面覆盖。
针对上述现有技术中存在的问题,本发明实施例提供了一种嵌入式系统故障诊断装置来解决该问题,具体的,如图1所示,本发明实施例提供的嵌入式系统故障诊断装置主要包括有4个单元,分别为处理器(central processing unit,CPU)单元1、内存(DoubleData Rate,DDR)单元4、逻辑(Complex Programmable Logic Device,CPLD)单元2以及复位电路单元3。可以理解的是,嵌入式系统故障诊断装置是隶属于嵌入式系统的,那么嵌入式系统故障诊断装置可视为嵌入式系统的子系统,其CPU单元即整个嵌入式系统的控制核心单元,也是最常见的故障对象。CPLD单元是本发明实施例为了进行故障诊断设立的分析和处理单元,DDR单元保存着嵌入式系统运行的数据,这些数据能够反映出嵌入式系统故障情况的信息,复位电路单元主要是用于实现嵌入式系统的复位以及看门狗(watchdog)功能。
具体的,如图1所示,CPU单元通过DDR控制器连接DDR单元,CPU单元和CPLD单元之间通过Localbus通信,复位电路单元的WDI、DOG_RESET、MR信号连接到CPLD单元的GPIO,用于传递部分复位源故障信息记录给CPLD单元处理。CPU单元的CPU_WDI、RESET_REQ、CPU_POREST、GPIO_INPUT、IRQ、RST_CFG,连接到CPLD单元的GPIO,用于传递必要的故障信息给CPLD单元,实现故障检测的功能。
其中,GPIO_WDI是CPU单元的通用GPIO管脚,通过软件编写了喂狗信号送给CPU单元;RESET_REQ是CPU单元发送出来的复位请求信号,通常在CPU单元内部,驱动RESET_REQ的源包括一些控制寄存器和相关状态寄存器。以Linux系统为例,在boot下敲reset命令、在OS系统下敲reboot命令是写复位控制寄存器相应的位,驱动RESET_REQ管脚输出低电平。如果在启动过程,发生error,复位请求状态寄存器会记录这些error的信息,同时驱动RESET_REQ管脚输出低电平,即可产生请求复位源。CPU_PORESET是CPLD单元送给CPU单元的复位信号,用于对CPU单元进行全局复位;GPIO_INPUT是CPLD单元送给CPU单元的第一类或第二类复位类型判断信号。IRQ是CPLD单元送给CPU单元的中断信号,参与开启DDR单元自刷新功能的逻辑中;RST_CFG信号是系统启动必须的一些上电配置信号;Localbus信号用于CPU单元和CPLD单元数据通信。
其中,第一类和第二类复位类型是本发明实施例根据可能出现的复位情形所进行的复位类型分类,第一类复位指当发生该复位时,内存中记录的系统信息包括故障信息丢失,第二类复位指指当发生该复位时,内存中记录的系统信息包括故障信息不丢失。常见的复位类型有七种:上电复位、按键复位、软件复位、CPU复位请求复位、boot启动异常复位、OS启动异常复位、应用程序异常复位。一般的,本发明实施例将上电复位设置为第一类复位,其他复位设置为第二类复位。
那么根据图1所提供的嵌入式系统故障诊断装置就可以实现一系列场景的故障诊断。
具体的,当发生复位时,CPLD单元发送中断信号给CPU单元,CPU单元开启内存自刷新功能,然后使用PORESET复位系统,需要说明的是,使用PORESET是由于它复位能保持CPU单元给DDR单元的CKE信号一直为低电平,不会刷新DDR单元的数据,系统复位后再次启动,在boot阶段,通过判断CPLD单元告知CPU单元的第一类或第二类复位信息,若为第二类复位,则boot启动阶段不会去初始化内存,从而保留了内存的上次故障数据,那么诊断时直接读取故障数据即可。第一类复位和第二类复位由CPLD单元将信息传递给CPU单元,传递的方法可以是通过CPLD单元与CPU单元的用户自定义IO管脚实现,也可以是CPU单元通过localbus总线访问CPLD单元的寄存器信息实现,具体的信息传递方式本发明实施例不作具体限定。那么当嵌入式系统发生复位故障时,按照发生故障的时间先后依次记录历史复位故障信息,以及记录当前最近一次发生的复位故障信息。该信息可在系统故障恢复后从CPLD单元和DDR单元读取出来,从而分析故障原因。
进一步的说明的是,本发明实施例提供的上述过程可以远程进行操作,那么即使维护人员不能到达现场也能及时完成故障诊断。
本发明实施例提供的一种嵌入式系统故障诊断装置,可通过CPLD记录的复位源信息以及DDR内存中保留的故障重启前数据来有效分析故障原因,从而有针对性的对嵌入式系统进行故障诊断。
在上述实施例的基础上,所述CPLD单元还用于确定当前复位源的复位类型,并将所述复位类型发送给所述CPU单元,以供所述CPU单元根据所述复位类型调整故障诊断流程。
由上述实施例的内容可知,本发明实施例预先会为复位类型进行分类,主要分为第一类复位和第二类复位,且第一类复位信息和第二类复位信息由CPLD单元告知CPU单元后,CPU单元根据不同的复位类型采取不同的故障诊断流程。
具体的,图2是本发明实施例提供的不同复位类型输出功能逻辑框图,如图2所示,如果为第一类复位时,控制开关MUX2和MUX3都切换到First_Rst端,此时看门狗输出的复位信号被送到CPU_PORESET及所有的外设。信号的流向如图2中的虚线。同时将Fir_Sec_flag的值通过GP_INPUT传送给CPU。如果为第二类复位时,控制开关MUX2和MUX3都切换到Second_RST端,同时将Fir_Sec_flag通过GP_INPUT传送给CPU单元。此时CPLD单元检测到看门狗输出复位信号后,先通过IRQ向CPU发送一个低脉冲信号,低脉冲宽度典型值为10ms,再将看门狗输出的DOG_RESET信号经过10ms延时后再发送给CPU_PORESET。CPU收到IRQ信号后,进入中断处理,开启DDR的自刷新功能。CPU_PORESET收到复位信号后,根据GP_INPUT的值可以判断出当前复位为第二类复位,重新启动时会跳过DDR初始化,从而保证DDR保留内存的数据不丢失,信号的流向如图3中的实线线条。
可以理解的是,通过不同的复位类型采用不同的复位操作,从而可以实现DDR单元中数据的保留,一般的会将DDR一段区域作为保留内存使用,用于记录CPU实时状态信息,当软件出现挂死时,可保护现场,虽然此时软件挂死了,但DDR单元内的数据还保留着当前的CPU状态信息。
那么进行故障诊断时必须采用第二类复位的方式进行,CPLD检测到第二类复位源时,更新历史复位源信息,更新复位类型的标志(Fir_Sec_flag),输出IRQ中断信号,并延时10ms后,再复位CPU,此时没有复位DDR。
CPU_PORESET收到复位信号之前,IRQ先收到中断信号,CPU单元进入中断处理流程,此时开启DDR单元自刷新的功能,CKE被拉低,CK时钟消失,DDR单元进入自刷新状态,此时只要DDR单元不掉电,DDR单元的信息就不会丢失。
CPU_PORESET收到复位信号后,在第二类复位期间,CPU内部硬件逻辑进入初始化阶段,在CPU_PORESET复位释放时,采样复位配置管脚的信息,确定RCW、Uboot的位置和复位类型。CPU单元根据配置管脚的值加载RCW和Uboot,在Uboot启动过程中,开始对各个功能接口进行初始化。根据配置管脚的值确定第二类复位后,跳过DDR单元初始化,即不对DDR单元内的数据初始化为deadbeaf,并将DDR控制器设置为bypass模式。CPU单元正常启动后,关闭自刷新功能,CKE拉高,CK时钟恢复,DDR单元退出自刷新状态。此时读取DDR单元内的数据,分析上次故障发生的原因,确定故障发生在哪个阶段,是OS异常,还是应用程序异常等。
在上述实施例的基础上,所述寄存器包括复位源存放寄存器、历史记录存放寄存器以及复位类型标识寄存器;
所述复位源存放寄存器用于存放当前发生的复位源信息,所述历史记录存放寄存器用于存放历史发生的复位源信息,所述复位类型标识寄存器用于标识复位类型。
由上述实施例的内容可知,本发明实施例提供的CPLD内部会定义寄存器功能,从而完成故障诊断,具体的定义寄存器包括三类,第一类是复位源存放寄存器、第二类是历史记录存放寄存器、第三类是复位类型标识寄存器。复位源存放寄存器用于存放当前发生的复位源信息,历史记录存放寄存器用于存放历史发生的复位源信息,复位类型标识寄存器用于标识复位类型。
例如:在CPLD内部定义6个寄存器,rst_type、rst_history0~3、Fir_Sec_flag,分别存放曾经发生过的复位源、最近4次发生的复位源信息、以及第一类/第二类复位标识。可以理解的是,rst_history数量是根据用户需求自行设置的,对此本发明实施例不作具体限定。其中,rst_type寄存器用于记录曾经发生过的复位源,且具有读清零的操作。rst_history0~rst_histroy3依次记录过去四次发生的复位源,其中rst_history0记录最近一次复位源,rst_history3记录过去四次中时间最久远的一次复位源。Fir_Sec_flag记录第一类或第二类复位的类型。当复位源检测模块检测到任何复位源之后,就更新该6个寄存器的信息。需要说明的是,本发明实施例只记录上电后所发生的复位源,掉电后的所有信息均被清除。
进一步的,rst_type和rst_history0~3都是只读的8位寄存器,取低6位记录除上电复位源之外的其他6类复位源。由于上电复位源发生时,CPLD单元还处于加载程序的过程中,无法检测上电复位源,但可以间接检测,如果检测到没有发生其他任何复位源但又发生了复位,则可认为当前的复位源必定为上电复位源。Fir_Sec_flag为1位寄存器,用于记录复位类型,当检测为第一类复位时,Fir_Sec_flag取值为1;当检测为第二类复位时,Fir_Sec_flag取值为0。
具体的,结合CPLD单元中复位源检测时,CPLD内部定义一个寄存器rst_history0,用于存放当前的复位源信息,该寄存器不同的取值所对应的复位源可以定义为:
0xFF:表示上电复位;
0xFE:表示CPU请求复位;
0xFD:表示软件全局复位;
0xFB:表示按键复位;
0xF7:表示boot启动异常导致复位;
0xEF:表示应用程序异常导致复位;
0xDF:表示OS系统启动异常导致复位;
从而能够根据寄存器的取值确定复位源,具体的,对上电复位源检测时是上电启动时看门狗自动产生的复位信号,上电复位源自动产生,CPLD单元内部寄存器rst_history0为默认值0xFF。
对软件全局复位源检测时是在CPLD单元内部定义了一个寄存器soft_rst,CPLD单元内部将soft_rst、MRESET与RESET_REQ三个信号相与后,并进行扩展处理(Stretch)后送给复位电路单元的MR端。复位时soft_rst值被初始化为1,当CPU单元往该寄存器写0时,即可产生软件全局复位源,MR变成0,从而导致DOG_RSET输出复位信号,该复位信号的低脉冲时间由看门狗芯片自身特性决定,典型值为200ms左右。CPLD检测到DOG_RESET复位拉低时,将soft_rst由0变为1,MR经过一段2.5us的扩展后释放。CPU单元往CPLD单元寄存器soft_rst写0,CPLD将soft_rst传送给复位电路单元的MR端,触发看门狗复位,CPLD检测到soft_rst=0时,即检测到软件全局复位源,将rst_history0=0xFD。
对按键复位源检测时外部送给CPU单元模块的按键复位信号,经过CPLD单元滤抖处理后,与soft_rst及RESET_REQ相与后送给复位电路单元的MR端,MRESET释放时,MR经过2.5u扩展后再释放。按一下外部复位按钮,会产生一个低脉冲,CPLD单元检测到该低脉冲时,即检测到按键复位,将rst_history0=0xFB。
对CPU复位请求复位源检测时,CPLD单元检测到RESET_REQ信号,经过滤抖处理后,与soft_rst及MRESET相与后,送给复位电路单元的MR端。当RESET_REQ输出低电平时,MR输出低电平,经过500ns(典型值)后,复位电路单元DOG_RESET输出复位信号,并经过10ms延时后,送给CPU_PORESET,当CPU检测到CPU_PORESET有复位信号时,释放RESET_REQ,MR经过2.5us扩展后再释放。CPU单元发送复位请求指令时,将RESET_REQ管脚拉低,CPLD单元检测到该管脚为低电平时,即检测到CPU单元请求复位源,将rst_history0=0xFE。
对boot异常复位源检测时,在复位电路单元输出复位时,CPLD单元内部定时器默认使能,定时器溢出阈值Th默认设定为T1。复位释放时,定时器开始计时,CPU单元开始加载RCW,然后启动boot,如果boot正常启动,则将定时器溢出阈值修改为T2。如果boot启动异常,则在T1后,定时器溢出,复位电路单元WDI停止喂狗,经过复位电路单元超时周期(典型值1.6s)后,复位电路单元输出复位信号。CPLD单元检测定时器溢出,且溢出阈值Th=T1,即检测到BOO启动异常导致复位,将rst_history0=0xF7。
对OS启动异常复位源检测时,OS正常启动后,溢出阈值设置为T2,并将定时器计数值清零,再开启定时器。开始启动OS系统,如果OS启动异常,则最多等待T2时间后,定时器溢出。CPLD单元检测定时器溢出,且溢出阈值Th=T2,即检测到OS系统启动异常导致复位,将rst_history0=0xDF。
对应用程序启动异常复位源检测时,OS系统启动后,关闭定时器,所有控制权交给应用程序自由控制。应用程序设定溢出阈值Th,应用程序打开定时器,开启二级喂狗,如果应用程序异常,则二级喂狗停止,定时器在溢出阈值Th之后溢出,停止对看门狗喂狗,看门狗输出复位信号。CPLD检测定时器溢出,将rst_history0=0xEF。
进一步的,结合CPLD单元中复位源存储时,包括记录当前复位源信息和历史复位源信息。
图3是本发明实施例提供的复位源记录控制流程图,如图3所示,本发明实施例在CPLD单元内部定义两个中间寄存器rst_type_r和rst_type_2r,以bit[i](i=0~7)表示不同外置设备的复位源,将该复位源送到寄存器rst_type_r[i],以CPLD单元的主时钟上升沿触发,进行移位处理,rst_type_r[i]值移位给rst_type_2r[i],然后对rst_type_r[i]取反,取反再与rst_type_2r[i]进行相与处理,如果相与结果为1,则表示发生了该复位源信号,将rst_type[i]和rst_history[i]置0,记录当前发生该复位源,同时对rst_history[i]~rst_history3[i]依次进行移位处理,更新历史记录。如果相与的结果为0,则表示没有发生该复位源,rst_type[i]、rst_history0[i]~rst_history3[i]值保持不变,即各历史记录保持不变。
在上述实施例的基础上,所述系统还包括:
按键单元,所述按键单元用于当嵌入式系统的串口和网口连接失败时,启动所述按键单元对所述嵌入式系统进行按键复位。
由上述实施例的内容可知,本发明实施例提供了一种嵌入式系统故障诊断装置,能够对复位发生的原因进行诊断,但某些场景,例如嵌入式系统因不明原因异常挂死,串口和网口无法连接,没有打印信息且没有较好手段可以对挂死问题进行原因排查时,无法通过读取CPLD单元和DDR单元存储的信息进行排查。
针对上述情形,本发明实施例优选的提供一种按键复位的方式进行诊断,如图1所示,本发明实施例提供的嵌入式系统故障诊断装置还包括按键单元5,按键单元5能够对系统进行按键复位,系统重新正常启动后,此时DDR中上次故障发生的log数据还保存在内存中没有丢失,可以针对log数据来分析上次故障发生的原因。
在上述实施例的基础上,所述嵌入式系统故障诊断装置还包括定时器,所述定时器设置有溢出阈值,当检测到所述嵌入式系统启动时长超过所述溢出阈值时,对所述嵌入式系统进行溢出复位。
可以理解的是,嵌入式系统可能会出现一系列的挂死异常情形,例如:boot启动异常、OS启动异常、应用程序跑飞等。在此情形下,任何异常启动有问题,都具备重启的功能,也可选择不开启重启的功能。本发明实施例针对上述场景,为每一个启动分配一个合理的最大启动时间,将该时间作为定时器的溢出阈值Th,在这合理时间内,由嵌入式系统故障诊断装置提供的定时器功能,处于计时状态。如果在定时器设置的溢出阈值Th内,既没有检测到软件喂狗,也没有关闭定时器,那么就会溢出复位。
具体的,复位启动时,CPLD单元将定时器溢出阈值Th默认设为T1,作为boot的最大启动时间,同时定时器默认使能。如果boot启动异常,那么定时器在T1时间后溢出,导致复位重启。如果在T1时间内,boot启动正常,boot将定时器清零,同时将溢出阈值设为T2,作为OS系统启动的最大启动时间。如果OS启动异常,那么定时器在T2时间后溢出,导致复位重启。如果启动正常,OS启动后将定时器关闭。应用程序可以自由设置程序跑飞时的定时器溢出阈值,但不允许设置为T1和T2,避免CPLD单元误判为boot异常及OS系统异常。应用程序在运行的过程中,设置溢出阈值Th,并使能定时器,在Th时间内进行一次二级喂狗清零定时器,如果应用程序跑飞,则二级喂狗停止,则定时器会在Th时间后溢出,导致复位重启,从而有效对系统挂死情形自动复位,同时,在重启前开启DDR自刷新功能,保留重启前的故障信息和异常复位源信息,即方便后续的故障分析,又不影响工程自动恢复。
图4是本发明实施例提供的一种嵌入式系统故障诊断方法流程示意图,所述方法基于所述嵌入式系统包括的处理器CPU单元、内存DDR单元、逻辑CPLD单元以及复位电路单元,如图4所示,所述方法包括:
401、获取所述复位电路单元和所述CPU单元发送的复位故障信息;
402、根据所述复位故障信息检测复位源并记录所述复位源;
403、读取记录的复位源以及所述DDR单元存储的故障数据,以对所述嵌入式系统进行故障诊断。
需要说明的是,本发明实施例提供的嵌入式系统故障诊断方法实施时需要依托于如图1所示的嵌入式系统故障诊断装置,本发明实施例的执行主体为系统中的CPLD单元,通过CPLD的存储和分析功能完成故障诊断。
具体的,在步骤201中,CPLD单元会收集来自于复位电路单元和CPU单元产生的故障信息,具体的信息传递方式和信号流向可参见图1所示的实施例,本发明实施例在此不再赘述。
进一步的,在步骤202中,CPLD单元会对产生故障的复位源信息进行检测,并将复位源信息进行记录。
最后,在步骤203中,通过读取CPLD单元中记录的复位源信息以及DDR单元中存储的故障数据,即可分析系统的故障原因,完成对系统的故障诊断。
可以理解的是,本发明实施例提供的嵌入式系统故障诊断方法适用于绝大多数场景,例如:当嵌入式系统因不明原因自动重启的场景,当系统再次启动后,可通过CPLD单元记录的复位源信息判断复位类型,再结合DDR单元中保留重启前的数据来分析重启原因,从而可有效地对嵌入式系统进行故障诊断,该方法尤其适用于低概率不容易复现的情形。
本发明实施例提供的一种嵌入式系统故障诊断方法,可通过CPLD记录的复位源信息以及DDR内存中保留的故障重启前数据来有效分析故障原因,从而有针对性的对嵌入式系统进行故障诊断。
在上述实施例的基础上,所述方法还包括:
确定所述复位源的复位类型,并将所述复位类型发送给所述CPU单元,以供所述CPU单元根据所述复位类型调整复位操作。
在上述实施例的基础上,所述寄存器包括复位源存放寄存器、历史记录存放寄存器以及复位类型标识寄存器,相应的,所述在本地寄存器记录所述复位源,包括:
在所述复位源存放寄存器存储当前发生的复位源信息、在所述历史记录存放寄存器存储历史发生的复位源信息、并在所述复位类型标识寄存器用于存储所述复位类型。
在上述实施例的基础上,所述嵌入式系统故障诊断装置还包括按键单元,相应的,所述方法还包括:
当所述嵌入式系统的串口和网口连接失败时,启动所述按键单元对所述嵌入式系统进行按键复位。
在上述实施例的基础上,所述嵌入式系统故障诊断装置还包括定时器,相应的,所述方法还包括:
当检测到嵌入式系统启动时长超过所述定时器设置的溢出阈值时,对所述嵌入式系统进行溢出复位。
具体的如何通过上述方法来完成对嵌入式系统的故障诊断可参见上述嵌入式系统的故障诊断装置实施例,在此本发明实施例不再赘述。
综上所述,本发明实施例可以在嵌入式系统启动或运行过程中挂死时,进行按键复位,让系统重新启动。启动后,DDR中还保留的是上一次系统运行故障信息,从DDR中读取相关数据即可对故障进行诊断。
还可以当嵌入式系统启动或运行过程中出现异常重启或复位时,不知道重启或复位产生的原因时,在系统再次启动后从CPLD定义的寄存器rst_type、rst_history0~3中获取当前复位源信息和历史复位源信息。从而判断复位或重启发生的原因,结合DDR中保留的故障数据,即可对故障进行诊断。
还能够当嵌入式系统出现故障时,有些场景维护人员无法进入现场对故障进行诊断,此时可开启系统挂死自动复位功能,即在出现故障时,系统自动复位。系统再次启动后,维护人员可远程从CPLD寄存器中获取复位源信息以及从DDR中获取故障信息,进行故障诊断。
从而能够做到在各个场景下全面对嵌入式系统出现的问题进行诊断,且诊断效果良好。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行每个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种嵌入式系统故障诊断装置,其特征在于,包括:
处理器CPU单元、内存DDR单元、逻辑CPLD单元以及复位电路单元,所述CPU单元分别连接所述DDR单元和所述CPLD单元,所述CPLD单元连接所述复位电路单元;
所述复位电路单元用于进行嵌入式系统复位并传递部分复位故障信息给所述CPLD单元,所述CPU单元用于传递必要复位故障信息给所述CPLD单元,以供所述CPLD单元检测复位源并将所述复位源记录在所述CPLD单元本地的寄存器中,所述DDR单元用于存储故障数据;
其中,复位电路单元的WDI、DOG_RESET、MR信号连接到CPLD单元的GPIO,用于传递部分复位源故障信息记录给CPLD单元处理,CPU单元的CPU_WDI、RESET_REQ、CPU_POREST、GPIO_INPUT、IRQ、RST_CFG,连接到CPLD单元的GPIO,用于传递必要的故障信息给CPLD单元,实现故障检测的功能。
2.根据权利要求1所述的嵌入式系统故障诊断装置,其特征在于,所述CPLD单元还用于确定当前复位源的复位类型,并将所述复位类型发送给所述CPU单元,以供所述CPU单元根据所述复位类型调整故障诊断流程。
3.根据权利要求2所述的嵌入式系统故障诊断装置,其特征在于,所述寄存器包括复位源存放寄存器、历史记录存放寄存器以及复位类型标识寄存器;
所述复位源存放寄存器用于存放当前发生的复位源信息,所述历史记录存放寄存器用于存放历史发生的复位源信息,所述复位类型标识寄存器用于标识复位类型。
4.根据权利要求1所述的嵌入式系统故障诊断装置,其特征在于,所述嵌入式系统故障诊断装置还包括:
按键单元,所述按键单元用于当嵌入式系统的串口和网口连接失败时,启动所述按键单元对所述嵌入式系统进行按键复位。
5.根据权利要求1所述的嵌入式系统故障诊断装置,其特征在于,所述嵌入式系统故障诊断装置还包括定时器,所述定时器设置有溢出阈值,当检测到所述嵌入式系统启动时长超过所述溢出阈值时,对所述嵌入式系统进行溢出复位。
6.一种嵌入式系统故障诊断方法,其特征在于,所述方法基于嵌入式系统故障诊断装置包括的处理器CPU单元、内存DDR单元、逻辑CPLD单元以及复位电路单元,所述方法包括:
获取所述复位电路单元和所述CPU单元发送的复位故障信息;
根据所述复位故障信息检测复位源并在本地寄存器记录所述复位源;
读取记录的复位源以及所述DDR单元存储的故障数据,以对所述嵌入式系统进行故障诊断;
其中,复位电路单元的WDI、DOG_RESET、MR信号连接到CPLD单元的GPIO,用于传递部分复位源故障信息记录给CPLD单元处理,CPU单元的CPU_WDI、RESET_REQ、CPU_POREST、GPIO_INPUT、IRQ、RST_CFG,连接到CPLD单元的GPIO,用于传递必要的故障信息给CPLD单元,实现故障检测的功能。
7.根据权利要求6所述的嵌入式系统故障诊断方法,其特征在于,所述方法还包括:
当发生复位时,CPU单元接收到CPLD单元发送的中断信号,开启内存自刷新,并在复位启动阶段根据CPLD单元传递的复位类型信息,调整故障诊断流程;
若复位类型为故障信息不丢失类型,则取消内存初始化。
8.根据权利要求7所述的嵌入式系统故障诊断方法,其特征在于,所述寄存器包括复位源存放寄存器、历史记录存放寄存器以及复位类型标识寄存器,相应的,所述在本地寄存器记录所述复位源,包括:
在所述复位源存放寄存器存储当前发生的复位源信息、在所述历史记录存放寄存器存储历史发生的复位源信息、并在所述复位类型标识寄存器用于存储所述复位类型。
9.根据权利要求6所述的嵌入式系统故障诊断方法,其特征在于,所述嵌入式系统故障诊断装置还包括按键单元,相应的,所述方法还包括:
当所述嵌入式系统的串口和网口连接失败时,启动所述按键单元对所述嵌入式系统进行按键复位。
10.根据权利要求6所述的嵌入式系统故障诊断方法,其特征在于,所述嵌入式系统故障诊断装置还包括定时器,相应的,所述方法还包括:
当检测到嵌入式系统启动时长超过所述定时器设置的溢出阈值时,对所述嵌入式系统进行溢出复位。
CN202010285695.8A 2020-04-13 2020-04-13 一种嵌入式系统故障诊断装置及方法 Active CN113535441B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010285695.8A CN113535441B (zh) 2020-04-13 2020-04-13 一种嵌入式系统故障诊断装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010285695.8A CN113535441B (zh) 2020-04-13 2020-04-13 一种嵌入式系统故障诊断装置及方法

Publications (2)

Publication Number Publication Date
CN113535441A CN113535441A (zh) 2021-10-22
CN113535441B true CN113535441B (zh) 2023-01-31

Family

ID=78087885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010285695.8A Active CN113535441B (zh) 2020-04-13 2020-04-13 一种嵌入式系统故障诊断装置及方法

Country Status (1)

Country Link
CN (1) CN113535441B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114200874A (zh) * 2022-02-17 2022-03-18 四川创智联恒科技有限公司 一种设备复位事件的检测装置及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104317728A (zh) * 2014-10-13 2015-01-28 大唐移动通信设备有限公司 一种安全复位存储设备的方法和装置
CN206224371U (zh) * 2016-11-07 2017-06-06 深圳市恒扬数据股份有限公司 一种计算机以及用于计算机主板的复位电路
CN108549591A (zh) * 2018-03-02 2018-09-18 烽火通信科技股份有限公司 一种嵌入式系统的黑匣子装置及其实现方法
CN109408350A (zh) * 2018-10-16 2019-03-01 郑州云海信息技术有限公司 一种记录单板复位原因的方法、控制器及存储设备
CN110633166A (zh) * 2018-06-22 2019-12-31 迈普通信技术股份有限公司 复位装置及复位方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011091743A1 (en) * 2010-02-01 2011-08-04 Hangzhou H3C Technologies Co., Ltd. Apparatus and method for recording reboot reason of equipment
US10585755B2 (en) * 2016-11-29 2020-03-10 Ricoh Company, Ltd. Electronic apparatus and method for restarting a central processing unit (CPU) in response to detecting an abnormality

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104317728A (zh) * 2014-10-13 2015-01-28 大唐移动通信设备有限公司 一种安全复位存储设备的方法和装置
CN206224371U (zh) * 2016-11-07 2017-06-06 深圳市恒扬数据股份有限公司 一种计算机以及用于计算机主板的复位电路
CN108549591A (zh) * 2018-03-02 2018-09-18 烽火通信科技股份有限公司 一种嵌入式系统的黑匣子装置及其实现方法
CN110633166A (zh) * 2018-06-22 2019-12-31 迈普通信技术股份有限公司 复位装置及复位方法
CN109408350A (zh) * 2018-10-16 2019-03-01 郑州云海信息技术有限公司 一种记录单板复位原因的方法、控制器及存储设备

Also Published As

Publication number Publication date
CN113535441A (zh) 2021-10-22

Similar Documents

Publication Publication Date Title
KR101782246B1 (ko) 독립적으로 동작가능한 프로세서들 간에 에러 정보의 제어된 복구를 위한 방법들 및 장치들
US8843785B2 (en) Collecting debug data in a secure chip implementation
US7010724B1 (en) Operating system hang detection and methods for handling hang conditions
US20180157525A1 (en) Troubleshooting method, computer system, baseboard management controller, and system
TWI632462B (zh) 開關裝置及偵測積體電路匯流排之方法
US20140122421A1 (en) Information processing apparatus, information processing method and computer-readable storage medium
US9164823B2 (en) Resetting a peripheral driver and prohibiting writing into a register retaining data to be written into a peripheral on exceeding a predetermined time period
JP2006259869A (ja) マルチプロセッサシステム
WO2023115999A1 (zh) 设备状态监控方法、装置、设备及计算机可读存储介质
CN110704228B (zh) 一种固态硬盘异常处理方法及系统
CN113535441B (zh) 一种嵌入式系统故障诊断装置及方法
JP4886558B2 (ja) 情報処理装置
CN107783854B (zh) 处理进程的方法及其装置
US8060778B2 (en) Processor controller, processor control method, storage medium, and external controller
CN113407391A (zh) 故障处理的方法、计算机系统、基板管理控制器和系统
US20080209254A1 (en) Method and system for error recovery of a hardware device
CN115904793B (zh) 一种基于多核异构系统的内存转存方法、系统及芯片
CN115576734B (zh) 一种多核异构日志存储方法和系统
US10572435B2 (en) Techniques of accessing serial console of BMC using host serial port
US7334167B2 (en) Circuit for detection of internal microprocessor watchdog device execution and method for resetting microprocessor system
CN115951949A (zh) 一种bios的配置参数的恢复方法、装置及计算设备
CN115658356A (zh) 一种Linux系统中的看门狗喂狗方法及系统
CN115292077A (zh) 内核异常处理方法及系统
CN108037942B (zh) 一种嵌入式设备的自适应数据恢复与更新方法及装置
CN112631872A (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