CN112256507A - 芯片故障诊断方法、装置、可读存储介质及电子设备 - Google Patents

芯片故障诊断方法、装置、可读存储介质及电子设备 Download PDF

Info

Publication number
CN112256507A
CN112256507A CN202011143874.4A CN202011143874A CN112256507A CN 112256507 A CN112256507 A CN 112256507A CN 202011143874 A CN202011143874 A CN 202011143874A CN 112256507 A CN112256507 A CN 112256507A
Authority
CN
China
Prior art keywords
interrupt
state
chip
fault
type
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.)
Granted
Application number
CN202011143874.4A
Other languages
English (en)
Other versions
CN112256507B (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.)
Horizon Shanghai Artificial Intelligence Technology Co Ltd
Original Assignee
Horizon Shanghai Artificial Intelligence Technology 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 Horizon Shanghai Artificial Intelligence Technology Co Ltd filed Critical Horizon Shanghai Artificial Intelligence Technology Co Ltd
Priority to CN202011143874.4A priority Critical patent/CN112256507B/zh
Publication of CN112256507A publication Critical patent/CN112256507A/zh
Priority to US17/507,158 priority patent/US11579960B2/en
Application granted granted Critical
Publication of CN112256507B publication Critical patent/CN112256507B/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/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • 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
    • 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
    • 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers

Abstract

本公开提供了一种芯片故障诊断方法,包括:基于中断标志寄存器中标识中断状态的第一数据,确定所述中断标志寄存器的中断标志;基于所述中断标志,确定所述中断标志对应的芯片中断的故障状态。采用本公开提供的技术方案,能够及时的诊断出中断的故障,且能够及时对中断进行处理。

Description

芯片故障诊断方法、装置、可读存储介质及电子设备
技术领域
本公开涉及芯片技术领域,尤其涉及一种芯片故障诊断方法、装置、可读存储介质及电子设备。
背景技术
SOC芯片中的硬件功能模块发出中断请求来中断CPU中的软件是SOC的基本功能之一。当遇到预先定义好的中断事件时,硬件功能模块发出中断请求给中断控制器,中断控制器会产生中断信号给指定的CPU来中断该CPU的常规程序,从而使得中断事件处理程序能够优先得到执行。
一般SOC中,中断事件在SOC的硬件功能模块中发生,然后硬件功能模块把中断信号通过SOC片上总线或中断信号线等方式传递给中断控制器。中断控制器收到中断信号后再根据该中断信号的配置将中断信号发送给指定的CPU。CPU收到该中断信号后,尝试中断正在运行的普通程序,然后再调用对应的芯片中断处理程序。
但是,由于现有技术中通常通过中断信号来启动中断处理过程,收到信号即启动中断处理过程,未收到信号不启动中断处理过程,这种处理方式当硬件功能模块、中断控制器或通信链路出现故障时,会难以收到信号或收到错误的信号,并依照未收到信号或收到错误的信号执行程序,难以发现该故障。
发明内容
为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种芯片故障诊断方法、装置、可读存储介质及电子设备,能够及时的确定芯片的故障状态,有利于及时排除故障。
根据本公开的一个方面,提供了一种芯片故障诊断方法,包括:
基于中断标志寄存器中标识中断状态的第一数据,确定所述中断标志寄存器的中断标志;
基于所述中断标志,确定所述中断标志对应的芯片中断的故障状态。
根据本公开的第二方面,提供了一种芯片故障诊断装置,包括:
中断标志确定模块,用于基于中断标志寄存器中标识中断状态的第一数据,确定所述中断标志寄存器的中断标志;
故障状态确定模块,用于基于所述中断标志,确定所述中断标志对应的芯片中断的故障状态。
根据本公开的第三方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述任一所述的芯片故障诊断方法。
根据本公开的第四方面,提供了一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述任一所述的芯片故障诊断方法。
在本公开中提供的上述四个技术方案,通过中断标志寄存器中的第一数据,确定中断标志,由于中断标志能够标识中断是否发生,因此,可以依据中断标志确定对应的芯片中断故障的状态;在本公开的技术方案中,由于中断标志寄存器中的中断标志标识了芯片中断的状态类型,因此,无论是否收到中断信号,都可以通过该中断标志所表征的中断状态进行验证,从而能够及时的确定芯片的故障状态,有利于及时排除故障,也有利于及时的对中断进行处理。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本公开所适用的中断处理系统的结构图。
图2是本公开一示例性实施例提供的芯片故障诊断方法的流程示意图。
图3是本公开另一示例性实施例提供的芯片故障诊断方法中确定中断故障状态的流程示意图。
图4是本公开另一示例性实施例提供的芯片故障诊断方法中确定中断故障状态的流程示意图。
图5是本公开另一示例性实施例提供的芯片故障诊断方法中确定中断故障状态的流程示意图。
图6是本公开另一示例性实施例提供的芯片故障诊断方法中多核SOC中断程序处理中断的流程示意图。
图7是本公开另一示例性实施例提供的芯片故障诊断方法中单核SOC中断程序处理中断的流程示意图。
图8是本公开另一示例性实施例提供的芯片故障诊断方法中确定中断故障状态的流程示意图。
图9是本公开另一示例性实施例提供的芯片故障诊断方法的中单核SOC非中断程序处理中断的流程示意图。
图10是本公开另一示例性实施例提供的芯片故障诊断方法中确定中断故障状态的流程示意图。
图11是本公开另一示例性实施例提供的芯片故障诊断方法中多核SOC非中断程序处理中断的流程示意图。
图12是本公开另一示例性实施例提供的芯片故障诊断装置的示意图。
图13是本公开另一示例性实施例提供的芯片故障诊断装置的故障状态确定模块的示意图。
图14是本公开另一示例性实施例提供的芯片故障诊断装置的故障状态确定模块的示意图。
图15是本公开另一示例性实施例提供的芯片故障诊断装置的故障状态确定模块的部分示意图。
图16是本公开另一示例性实施例提供的芯片故障诊断装置的示意图。
图17是本公开另一示例性实施例提供的芯片故障诊断装置的示意图。
图18是本公开一示例性实施例提供的电子设备的结构图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
申请概述
在一般SOC中,中断事件会发生在硬件功能模块,其中,硬件功能模块例如网络模块、输入输出模块、存储模块或图像采集模块等,例如网络模块可以为以太网模块,图像采集模块可以为摄像头等,然后硬件功能模块把中断信号通过SOC片上总线或中断信号线等方式传递给中断控制器。中断控制器收到中断信号后再根据该中断信号的配置将中断信号发送给指定的CPU。CPU收到该中断信号后,尝试中断正在运行的普通程序,然后再调用对应的中断处理程序。这种中断处理过程中,仅仅依靠中断信号来判断中断的发生,当硬件功能模块、中断控制器或通信链路出现故障时,会始终难以收到中断信号或收到错误的信号并依照未收到信号或收到的错误信号执行程序,不能及时发现该故障。
针对上述的问题,本公开提供了一种芯片故障诊断方法,包括:
基于中断标志寄存器中标识中断状态的第一数据,确定所述中断标志寄存器的中断标志;
基于所述中断标志,确定所述中断标志对应的芯片中断的故障状态。
在本公开提供的技术方案中,通过中断标志寄存器中的第一数据,确定中断标志,由于中断标志能够标识中断是否发生,因此,可以依据中断标志确定对应的芯片中断故障的状态;在本公开的技术方案中,由于中断标志寄存器中的中断标志具有标识了芯片中断的状态类型,因此,无论是否收到中断信号,都可以通过该中断标志所表征的中断状态进行验证,从而能够及时的确定芯片的故障状态,有利于及时排除故障,也有利于及时的对中断进行处理。。
示例性系统
图1是本公开所适用的中断处理系统的结构图,如图1所示,SOC的硬件功能模块101例如可以为网络模块、输入输出模块、存储模块或图像采集模块等,中断事件可以在上述模块中发生,然后硬件功能模块101把中断信号通过SOC片上总线或中断信号线等方式传递给中断控制器102,并且硬件功能模块101在其内部的中断标志寄存器1011中置起相应的中断标志,表示该中断事件已发生。中断控制器收到中断信号后再根据该中断信号的配置将中断信号发送给指定的CPU103。CPU103收到该中断信号后,尝试中断正在运行的普通程序,然后再调用对应的芯片中断处理程序。通常情况下,硬件功能模块101的中断标志寄存器1011也可能会出错导致中断标志被意外置起,但这种情况可以用硬件功能模块101的中断标志寄存器的奇偶校验检测模块1012来避免。所以,当硬件功能模块101的中断标志寄存器中有对应的标志时,我们认为该标志是可信的。
示例性方法
图2是本公开一示例性实施例提供的一种芯片故障诊断方法。本实施例可应用在电子设备上,如图2所示,包括如下步骤:
步骤201,基于中断标志寄存器中用于标识中断状态的第一数据,确定所述中断标志寄存器的中断标志;
在一些实施例中,中断标志寄存器1011是硬件功能模块101中的中断标志寄存器1011,硬件功能模块101可以为网络模块、输入输出模块、存储模块或图像采集模块等,例如,网络模块可以为以太网模块,图像采集模块可以为摄像头等。第一数据是指中断标志寄存器1011中在预设字段中设置的数据,第一数据基于中断发生变化,例如,中断标志寄存器1011中预设字段的预设位在中断发生时为1,在中断未发生时为0,那么如果检测到该预设字段中的预设位变为1时,表示中断发生。中断标志为与第一数据对应的标志,中断标志表示了当前是否发生中断,例如,当第一数据中的预设位为1时,表明当前中断标志已经置起,即已经发生了中断;当第一数据中的预设位为0时,表明当前中断标志未置起,即未发生中断。当发生中断时,第一数据中的预设位变为1,即硬件功能模块101置起中断标志,同时,硬件功能模块101把发生中断的信息通过SOC片上总线或中断信号线等方式传递给中断控制器102。中断控制器102收到发生中断信息后再发送中断信号给指定的CPU103。
步骤202,基于所述中断标志,确定所述中断标志对应的芯片中断的故障状态。
在一些实施例中,中断标志标识了当前的中断状态,在正常状态下,硬件功能模块101在置起中断标志的同时,会通过中断控制器102向CPU103发出中断信号。无论CPU103是否收到中断控制器102发送的中断信号时,CPU103都可以依据中断标志寄存器1011中的第一数据确定中断标志,并依据中断标志判断芯片中断的故障状态。例如,在CPU103收到中断控制器102发送的中断信号时,第一数据的预设位为0,即中断标志是未置起的状态,此时,中断标志未置起状态指示当前未发生中断,而收到中断信号指示当前发生了中断,这种情况就表明中断发生了故障。又例如,在CPU103未收到中断控制器102发送的中断信号时,中断标志寄存器1011的预设位为1,即中断标志是置起的状态,此时,中断标志指示当前发生了中断,而当前未收到中断信号指示当前未发生中断,这种情况也表明中断发生了故障。
在本公开中提供的芯片故障诊断方法中,由于中断标志寄存器1011中的中断标志用于标识芯片的中断状态,因此,无论是否收到中断信号,都可以通过该中断标志所表征的中断状态进行验证,从而能够及时的确定芯片的故障状态,有利于及时排除故障,也有利于及时的对中断进行处理。
如图3所示,在上述图2所示的实施的基础上,步骤202可以包括如下步骤:
步骤2021,确定所述中断标志的状态类型;
在一些实施例中,中断标志的状态类型包括标识中断发生状态的第一状态类型和中断使能状态的第二状态类型。在一些优选的实施例中,上述两种类型的状态中,可以确定中断标志的状态类型的优先级,例如,由于第一状态类型直接标识了中断的发生与否,而第二状态类型则对第一状态类型具有控制作用,即间接控制中断信号的发出,因此,将第一状态类型的优先级设置为较高,第二状态类型的优先级设置为较低,这样能够通过直接表征中断发生与否的第一状态类型较直接的确认芯片中断的故障,当不能通过第一状态类型确认芯片中断的故障时,则可以通过第二状态类型来进一步进行确认,从而实现效率与准确性兼顾的效果。通常情况下,通过中断的第一状态类型和第二状态类型的组合来形成中断标志的状态类型,但是,当仅通过其中一种状态即能够确定芯片中断的状态类型时,即可采用其中一种进行判断。其中,第一状态类型指示当前是否发生了芯片中断,而第二状态类型指示当前的芯片中断是否被屏蔽,例如,当第二状态类型为已使能状态时,指示当第一状态类型可以表示为已置起,也就能够向CPU103发出中断信号,当第二状态类型为未使能状态时,指示当第一状态类型不能表示为已置起状态,也就不能向CPU103发出中断信号。
步骤2022,基于所述中断标志的状态类型,确定所述中断标志对应的芯片中断的故障状态。
在一些实施例中,通过第一状态类型和第二状态类型的组合方式得到中断标志的状态类型,通过该状态类型与当前CPU103收到或未收到中断信号的情况进行验证,即可得到中断标志对应的芯片中断的故障状态。例如,第一状态类型为已置起且第二状态类型为已使能的状态类型,此时,第一状态类型表明当前已发生芯片中断,但是当前CPU103未收到中断信号,此时,未收到中断信号的状态表明当前未发生芯片中断,通过这种矛盾的情形即可以判定芯片中断的故障状态为已故障状态。在一些实施例中,当仅采用第一状态类型的置起或未置起的状态类型即可判断中断是否发生故障时,即采用第一状态类型进行判断。例如,当前CPU103收到了中断信号,此时,收到中断信号的状态表明当前发生了芯片中断,但是第一状态类型为未置起状态,此时,第一状态类型表明当前未发生芯片中断,通过这种状态即可判断中断出现了故障,而不需要再查询第二状态类型。
在上述实施方式中,采用中断标志的状态类型验证当前CPU103收到或未收到中断信号的情况是否正确,从而判断出中断是否出现故障。无论当前是否收到中断信号,都可以对中断的故障进行诊断。
如图4所示,在上述图3所示的实施例的基础上,所述中断标志的状态类型包括表示中断发生状态的第一状态类型和用于表示中断使能状态的第二状态类型;
在一些实施例中,中断标志寄存器1011例如可以为一个寄存器,中断标志寄存器1011中至少包含两个预设字段,其中一个预设字段中存储的数据用于表示中断标志的第一状态类型,另一个预设字段用于表示中断标志的第二状态类型,中断标志的状态类型包括第一状态类型和第二状态类型。中断标志寄存器1011例如还可以为两个寄存器的组合,其中一个寄存器的一个预设字段中存储的数据用于表示中断标志的第一状态类型,另一个寄存器的一个预设字段中存储的数据用于表示中断标志的第二状态类型。第一状态类型用于表示芯片中断的状态,当第一状态类型为已置起的状态类型时,表明当前发生了中断,当第一状态类型为未置起状态时,表明当前未发生中断。使能标志的状态类型用于指示是否允许第一状态类型发生变化,当第二状态类型为已使能的状态类型时,表明当前允许第一状态类型发生变化,即发生中断时允许第一状态类型变为已置起的状态。当第二状态类型为未使能的状态类型时,表明当前不允许第一状态类型发生变化,即使发生中断,第一状态类型仍然为未置起的状态类型。
步骤2022包括:
步骤20221,若所述第一状态类型表示未置起的状态类型,确定所述中断标志对应的芯片中断的故障状态为中断已发生故障;
在一些实施例中,第一状态类型的置起或未置起的状态类型直接影响中断信号的发送,当第一状态类型的置起或未置起的状态与中断信号的状态不一致时,即可直接判断芯片中断出现了故障。例如,以CPU103收到中断信号后的判断过程为例,当CPU103接收到中断信号时,依据第一状态类型对中断故障进行判断,此时,首先确定第一状态类型,当第一状态类型显示为未置起状态时,第一状态类型表示当前未发生中断,而中断信号表明当前发生了中断,两者的矛盾情况确定了当前中断的故障状态为已发生故障。
步骤20222,若所述第一状态类型表示已置起的状态类型,查询所述第二状态类型;
在一些实施例中,第二状态类型会决定芯片中断发生时第一状态类型能否表示为已置起的状态类型,因此,第二状态类型也会对芯片中断的故障状态具有一定的表征作用。例如,以CPU103收到中断信号后的判断过程为例,当CPU103接收到中断信号时,依据第一状态类型对中断故障进行判断,此时,首先确定中断标志的第一状态类型,当第一状态类型为已置起的状态时,第一状态类型表示当前已发生中断,中断信号也表明当前已发生故障两者是一致的,但是,由于CPU103能否收到中断信号还受到第二状态类型的影响,因此,应当进一步验证第二状态类型。
步骤20223,基于所述第二状态类型,确定所述中断标志对应的芯片中断的故障状态。
在一些实施例中,第二状态类型能够在影响第一状态类型能否表示为已置起的状态,从而影响中断信号的发出,因此,基于第二状态类型,能够进一步确认芯片中断的故障状态。例如,以CPU103收到中断信号后的判断过程为例,当第二状态类型为未使能状态时,表明中断标志不能表示为已置起的状态,也就不能发出中断信号,即表明当前CPU103不应当收到中断信号,此时,如果CPU103收到了中断信号,这与第二状态类型是相矛盾的,这种矛盾的状况即表明当前的中断出现了故障。
在上述实施例中,通过第二状态类型对CPU103收到的信号的情况进行进一步验证,能够更加精确的判断中断的故障状态。
如图5所示,在上述的图4所示的实施例上,步骤20223包括如下步骤:
步骤202231,若所述第二状态类型表示已使能的状态类型,确定所述中断标志对应的芯片中断的故障状态为中断未发生故障;
在一些实施例中,第二状态类型表示已使能的状态类型时,表明中断标志的第一数据会随中断的发生和处理发生变化,即发生中断时,第一状态类型表示为已置起的状态,并同时发出中断信号。仍以CPU103收到中断信号的判断过程为例,在CPU103收到中断信号,且经查询第一状态类型为已置起状态时,需要依据第二状态类型判断故障状态,当第二状态类型为已使能状态时,此时表明第一状态类型可以表示为已置起的状态,也即CPU103可以收到中断信号,这种情况与CPU103已经收到中断信号的情况是一致的,即可表明中断未发生故障。
步骤202232,若所述第二状态类型表示未使能的状态类型,确定所述中断标志对应的芯片中断的故障状态为中断已发生故障。
在一些实施例中,第二状态类型表示未使能的状态类型时,硬件功能模块101不会发出中断信号。以CPU103接收到中断信号后的判断过程为例,在CPU103收到中断信号,且经查询第一状态类型为已置起状态时,需要依据第二状态类型判断故障状态,当第二状态类型为未使能状态时,此时表明硬件功能模块101不应当发出中断信号,也即CPU103不可以收到中断信号,这种情况与CPU103已经收到中断信号的情况是矛盾的,即可表明中断已发生故障。
一种处理中断的示例性过程如图6所示,图6示出了一种SOC的芯片中断处理过程,该处理过程具体如下:
步骤601,CPU收到模块的中断请求。
步骤602,判断硬件功能模块的中断标志寄存器中对应中断的第一状态类型是否为已置起的状态类型,当第一状态类型为已置起的状态类型时,执行步骤6021,当第一状态类型为未置起的状态类型时,执行步骤6022。
步骤6021,判断硬件功能模块中的对应第二状态类型是否为已使能的状态类型,当第二状态类型为已使能的状态类型时,执行步骤60211,当第二状态类型为未使能的状态类型时,执行步骤6022。
步骤60211,运行对应中断的处理函数。该过程是以CPU收到中断信号作为起始来执行的,当CPU收到硬件功能模块的中断请求时,依据第一状态类型进行中断故障状态的判断,如果第一状态类型为已置起的状态类型,则进一步依据第二状态类型进行判断,如果第二状态类型为已使能的状态类型,则表明当前硬件功能模块确实发生了中断且该中断应当被处理,因此,运行对应的芯片中断函数进行处理。
步骤60212,中断故障计数器清零。由于在对中断的处理过程涉及到多个软件对于该芯片中断的访问,因此,会采用中断故障计数器记录该中断已使能状态被连续访问的次数,当非中断程序连续检测到中断标志的已使能状态未超过指定的次数时,表明当前的中断程序的当前运行在较为繁忙的核心上,当前的芯片中断需要等待中断程序直到中断程序对该芯片中断正确处理,在处理完成后,由于该中断已经不存在,因此需要对该中断故障计数器进行清零。
步骤6022,跳过对应中断的处理。
步骤60221,中断故障报错。在一些实施例中,该步骤在执行步骤6022之后执行。当第一状态类型为未置起的状态类型时,表明当前没有中断发生,与CPU收到中断信号是矛盾的,表明中断出现了故障,因此,跳过针对该中断信号对应的芯片中断的处理并报错。当第一状态类型为已置起状态,但是第二状态类型为未使能的状态类型时,由于第二状态类型为未使能的状态类型,表明当前第一状态类型不应当表示为已置起的状态,且CPU不应当收到中断信号,这与CPU收到中断信号这一情况是矛盾的,因此可以确定出现了故障,因此,跳过针对该中断信号对应的芯片中断的处理并报错。
图7示出了另一种SOC处理中断的过程,该处理过程具体如下:
步骤701,CPU收到模块的中断请求。
步骤702,判断硬件功能模块的中断标志寄存器中对应中断的第一状态类型是否为已置起的状态类型,当第一状态类型为已置起的状态类型时,执行步骤7021,当第一状态类型为未置起的状态类型时,执行步骤7022。
步骤7021,判断硬件功能模块中的对应第二状态类型是否为已使能的状态类型,当第二状态类型为已使能的状态类型时,执行步骤70211,当第二状态类型为未使能的状态类型时,执行步骤7022。
步骤70211,运行对应中断的处理函数。该过程是以CPU收到中断信号作为起始来执行的,当CPU收到硬件功能模块的中断请求时,依据第一状态类型进行中断故障状态的判断,如果第一状态类型为已置起的状态类型,则进一步依据第二状态类型进行判断,如果第二状态类型为已使能的状态类型,则表明当前硬件功能模块确实发生了中断且该中断应当被处理,因此,运行对应的芯片中断函数进行处理。
步骤7022,跳过对应中断的处理。
步骤70221,中断故障报错。在一些实施例中,该步骤在执行步骤7022之后执行。当第一状态类型为未置起的状态类型时,表明当前没有中断发生,与CPU103收到中断信号是矛盾的,表明中断出现了故障,因此,跳过针对该中断信号对应的芯片中断的处理并报错。当第一状态类型为已置起状态,但是第二状态类型为未使能的状态类型时,由于第二状态类型为未使能的状态类型,表明当前第一状态类型不应当表示为已置起的状态,且CPU不应当收到中断信号,这与CPU收到中断信号这一情况是矛盾的,因此可以确定出现了故障,因此,跳过针对该中断信号对应的芯片中断的处理并报错。
该处理中断的过程与图6所示SOC处理中断的过程的不同之处在于,在处理过程中不涉及到采用中断故障计数器记录查询次数和中断故障计数器清零的过程。
如图8所示,在上述图3所示的是实施例基础上,在步骤201之前包括:
步骤200,基于预定的时间间隔,查询所述中断标志寄存器中标识中断状态第一数据;
在一些实施例中,需要对中断标志寄存器1011中的第一数据周期性的进行查询,从而在芯片中断发生故障时及时发现和处理。以CPU103在执行非中断程序时的判断过程为例,CPU103在执行非中断程序时,每间隔预定的时间对中断标志寄存器1011中的第一数据进行一次查询,由于芯片中断的故障在一些情况下会导致不能正确的发出信号,上述的处理方式能够在通讯链路故障或者硬件功能模块101故障或者中断控制器102故障时,不能正确发出中断信号时也能够诊断出中断的故障。
在步骤2022中包括:
步骤20224,若所述第一状态类型表示已置起的状态类型,查询所述第二状态类型;
在一些实施例中,通过周期性查询得到当第一状态类型表示已置起的状态类型时,该状态类型表明已经发生了故障,由于该第一状态类型是通过查询得到的,当前CPU103未收到中断信号,第一状态类型已置起的状态与当前CPU103未收到中断信号的情况是矛盾的,表明中断已发生故障,此时,为了进一步确认芯片中断当前故障,需要进一步的查询第二状态类型进行确认。
步骤20225,基于所述中断的所述第二状态类型,确定所述中断标志对应的芯片中断的故障状态并由非中断程序依据预定的处理方式对所述中断进行处理。
在一些实施例中,当第二状态类型为已使能状态时,表明允许硬件功能模块101的第一状态类型表示为已置起的状态类型,仍以CPU103周期性查询为例,当第一状态类型表示已置起的状态类型,且第二状态类型为已使能状态时,但是CPU103未收到中断信号,此时表明中断已经发生了故障,但是,由于该中断已经发生且应当被处理,为了尽快处理该中断,采用非中断程序对该中断进行处理后再确认中断的已故障状态。当第二状态类型为未使能状态时,表明当前的第一状态类型不应当被表示为已置起状态,可以直接确认中断的已故障。
图9示出了一种SOC处理中断的具体过程执行上述实施例各步骤的流程图,该过程具体如下:
步骤901,CPU103在非中断程序段中读取模块中的中断标志寄存器。
步骤902,模块中的中断标志寄存器中的第一状态类型是否为已置起的状态类型,当第一状态类型为已置起的状态类型时,执行步骤9021,当第一状态类型为未置起的状态类型时,执行步骤9022。
步骤9021,等待T时间后返回步骤901。该步骤使查询步骤能够依据预定的时间重复执行,从而能够周期性的检测芯片中断的故障。
步骤9022,查询模块中对应中断标志的第二状态类型,当第二状态类型为已使能的状态类型时,执行步骤902211,当第二状态类型为未使能的状态类型时,执行步骤90222。
步骤902211,提高非中断程序的优先级。为了避免非中断程序在处理中断的过程中被打断,将非中断程序的优先级提高。
步骤902212,由非中断程序调用对应中断的处理函数。
步骤902213,还原非中断程序的优先级。处理完毕后,该非中断程序还原至其原本的优先级,避免对其他优先级高于该非中断程序的程序产生影响。
步骤90222,中断故障报错。由于在步骤902中,第一状态类型第一状态类型为已置起的状态类型时,其表征当前已发生中断,CPU未收到中断信号,此时两者是矛盾的,表明芯片中断已发生了故障。在步骤9022中,第二状态类型为未使能状态时,第一状态类型不应当被表示为已置起状态,此时两者是矛盾的,因此,也可以表明当前芯片中断已发生了故障。
如图10所示,在上述图8所示的实施例的基础上,步骤20225包括:
步骤202251,若所述第二状态类型表示已使能的状态类型,查询中断故障计数器中的标识第二状态类型查询次数的第二数据;
在一些实施例中,由于在对中断的处理过程涉及到多个软件对于该芯片中断的访问,因此,会采用中断故障计数器记录该中断已使能状态被连续访问的次数,当非中断程序连续检测到第一状态类型的已使能状态未超过指定的次数时,表明当前的中断程序的当前运行在较为繁忙的核心上,当前的芯片中断需要等待中断程序直到中断程序对该芯片中断正确处理,为了记录当前的芯片中断的已使能状态被连续访问的次数,采用中断故障计数器记录查询多个核心查询该中断的已使能的状态类型的次数,第二数据即为中断故障计数器中所存储的数值,已使能的状态类型每被查询到一次,中断故障计数器中的所存储的数值即加1。
步骤202252,基于所述第二数据,确定所述已使能的状态类型已被连续查询到的次数;
在一些实施例中,当每个中断被处理后,中断故障计数器即被清零,因此,在中断故障计数器中的数值即为当前中断的已使能的状态类型被连续查询到的次数。
步骤202253,基于所述已被连续查询到的次数与预定阈值的比较结果,确定所述中断标志对应的芯片中断的故障状态并由非中断程序依据预定的处理方式对所述中断进行处理。
在一些实施例中,预定阈值为依据中断的紧急状态或发生中断的模块等信息进行设定的,例如预定阈值可以被设定为2。中断的紧急状态越紧急,该阈值应当被设置的越小,发生中断的模块越重要,该预定阈值也应当被设置的越小。
作为一种优选的实施例,图11示出了一种多核SOC处理中断的具体流程图。具体的步骤如下:
步骤1101,CPU在非中断程序中读取模块中的中断标志寄存器。
步骤1102,模块中的中断标志寄存器中的第一状态类型是否为已置起的状态类型,当第一状态类型为已置起的状态类型时,执行步骤9021,当第一状态类型为未置起的状态类型时,执行步骤11022。
步骤11021,等待T时间后返回步骤1101。该步骤使查询步骤能够依据预定的时间重复执行,从而能够周期性的检测芯片中断的故障。
步骤11022,查询模块中对应中断标志的第二状态类型,当第二状态类型为已使能的状态类型时,执行步骤110222,当第二状态类型为未使能的状态类型时,执行步骤110221。
步骤110222,中断故障计数器+1。
步骤1102221,判断中断故障计数器的计数是否大于预定阈值,当计数大于预定阈值时,执行步骤1102222,当计数不大于预定阈值时,结束当前中断处理的流程。图11中与图9的不同之处在于,在图11中在确认第二状态类型为已使能的状态之后,再通过查询中断故障计数器确定其处理紧急状态,当被连续查询到的次数超出预定阈值时,表明当前中断需要尽快处理,因此,先对该中断进行处理后再确认中断的已故障状态。当被连续查询到的次数未超出预定阈值时,表明当前中断不需要尽快处理,因此,直接确认中断的已故障状态。
步骤1102222,提高非中断程序的优先级。为了避免非中断程序在处理中断的过程中被打断,将非中断程序的优先级提高。
步骤1102223,由非中断程序调用对应中断的处理函数。
步骤1102224,还原非中断程序的优先级。处理完毕后,该非中断程序还原至其原本的优先级,避免对其他优先级高于该非中断程序的程序产生影响。
步骤110221,中断故障报错。由于在步骤1102中,第一状态类型第一状态类型为已置起的状态类型时,其表征当前已发生中断,CPU未收到中断信号,此时两者是矛盾的,表明芯片中断已发生了故障。在步骤11022中,第二状态类型为未使能状态时,第一状态类型不应当被表示为已置起状态,此时两者是矛盾的,因此,也可以表明当前芯片中断已发生了故障。
示例性装置
图12是本公开一示例性实施例提供的一种芯片故障诊断方法。本实施例可应用在电子设备上,如图12所示,包括如下模块:
中断标志确定模块301,用于基于中断标志寄存器中用于标识中断状态的第一数据,确定所述中断标志寄存器的中断标志;
在一些实施例中,中断标志寄存器1011是硬件功能模块101中的中断标志寄存器1011,硬件功能模块101可以为网络模块、输入输出模块、存储模块或图像采集模块等,例如,网络模块可以为以太网模块,图像采集模块可以为摄像头等。第一数据是指中断标志寄存器1011中在预设字段中设置的数据,第一数据基于中断发生变化,例如,中断标志寄存器1011中预设字段的预设位在中断发生时为1,在中断未发生时为0,那么如果检测到该预设字段中的预设位变为1时,表示中断发生。中断标志为与第一数据对应的标志,中断标志表示了当前是否发生中断,例如,当第一数据中的预设位为1时,表明当前中断标志已经置起,即已经发生了中断;当第一数据中的预设位为0时,表明当前中断标志未置起,即未发生中断。当发生中断时,第一数据中的预设位变为1,即硬件功能模块101置起中断标志,同时,硬件功能模块101把发生中断的信息通过SOC片上总线或中断信号线等方式传递给中断控制器102。中断控制器102收到发生中断信息后再发送中断信号给指定的CPU103。
故障状态确定模块302,用于基于所述中断标志,确定所述中断标志对应的芯片中断的故障状态。
在一些实施例中,中断标志标识了当前的中断状态,在正常状态下,硬件功能模块101在置起中断标志的同时,会通过中断控制器102向CPU103发出中断信号。无论CPU103是否收到中断控制器102发送的中断信号时,CPU103都可以依据中断标志寄存器1011中的第一数据确定中断标志,并依据中断标志判断芯片中断的故障状态。例如,在CPU103收到中断控制器102发送的中断信号时,第一数据的预设位为0,即中断标志是未置起的状态,此时,中断标志未置起状态指示当前未发生中断,而收到中断信号指示当前发生了中断,这种情况就表明中断发生了故障。又例如,在CPU103未收到中断控制器102发送的中断信号时,中断标志寄存器1011的预设位为1,即中断标志是置起的状态,此时,中断标志指示当前发生了中断,而当前未收到中断信号指示当前未发生中断,这种情况也表明中断发生了故障。
在本公开中提供的芯片故障诊断方法中,由于中断标志寄存器1011中的中断标志用于标识芯片的中断状态,因此,无论是否收到中断信号,都可以通过该中断标志所表征的中断状态进行验证,从而能够及时的确定芯片的故障状态,有利于及时排除故障,也有利于及时的对中断进行处理。
如图13所示,在上述图12所示的实施的基础上,故障状态确定模块302可以包括如下子模块:
状态类型确定子模块3021,用于确定所述中断标志的状态类型;
在一些实施例中,中断标志的状态类型包括表示中断发生状态的第一状态类型和表示中断使能状态的第二状态类型。在一些优选的实施例中,上述两种类型的状态中,可以确定中断标志的状态类型的优先级,例如,由于第一状态类型直接标识了中断的发生与否,而第二状态类型则对第一状态类型具有控制作用,即间接控制中断信号的发出,因此,将第一状态类型的优先级设置为较高,第二状态类型的优先级设置为较低,这样能够通过直接表征中断发生与否的第一状态类型较直接的确认芯片中断的故障,当不能通过第一状态类型确认芯片中断的故障时,则可以通过第二状态类型来进一步进行确认,从而实现效率与准确性兼顾的效果。通常情况下,通过中断的第一状态类型和第二状态类型的组合来形成中断标志的状态类型,但是,当仅通过其中一种状态即能够确定芯片中断的状态类型时,即可采用其中一种进行判断。其中,第一状态类型指示当前是否发生了芯片中断,而第二状态类型指示当前的芯片中断是否被屏蔽,例如,当第二状态类型为已使能状态时,指示当第一状态类型可以表示为已置起,也就能够向CPU103发出中断信号,当第二状态类型为未使能状态时,指示当第一状态类型不能表示为已置起状态,也就不能向CPU103发出中断信号。
中断故障确定子模块3022,用于基于所述中断标志的状态类型,确定所述中断标志对应的芯片中断的故障状态。
在一些实施例中,通过第一状态类型和第二状态类型的组合方式得到中断标志的状态类型,通过该状态类型与当前CPU103收到或未收到中断信号的情况进行验证,即可得到中断标志对应的芯片中断的故障状态。例如,第一状态类型为已置起且第二状态类型为已使能的状态类型,此时,第一状态类型表明当前已发生芯片中断,但是当前CPU103未收到中断信号,此时,未收到中断信号的状态表明当前未发生芯片中断,通过这种矛盾的情形即可以判定芯片中断的故障状态为已故障状态。在一些实施例中,当仅采用第一状态类型的置起或未置起的状态类型即可判断中断是否发生故障时,即采用中断标志状态类型进行判断。例如,当前CPU103收到了中断信号,此时,收到中断信号的状态表明当前发生了芯片中断,但是第一状态类型为未置起状态,此时,第一状态类型表明当前未发生芯片中断,通过这种状态即可判断中断出现了故障,而不需要再查询第二状态类型。
在上述实施方式中,采用中断标志的状态类型验证当前CPU103收到或未收到中断信号的情况是否正确,从而判断出中断是否出现故障。无论当前是否收到中断信号,都可以对中断的故障进行诊断。
如图14所示,在上述图13所示的实施例的基础上,所述中断故障确定子模块具体用于基于表示中断发生状态的第一状态类型和用于表示中断使能状态的第二状态类型,确定所述中断标志对应的芯片中断的故障状态;
在一些实施例中,中断标志寄存器1011例如可以为一个寄存器,中断标志寄存器1011中至少包含两个预设字段,其中一个预设字段中存储的数据用于表示中断标志的第一状态类型,另一个预设字段用于表示中断标志的第二状态类型,中断标志的状态类型包括第一状态类型和第二状态类型。中断标志寄存器1011例如还可以为两个寄存器的组合,其中一个寄存器的一个预设字段中存储的数据用于表示中断标志的第一状态类型,另一个寄存器的一个预设字段中存储的数据用于表示中断标志的第二状态类型。第一状态类型用于表示芯片中断的状态,当第一状态类型为已置起的状态类型时,表明当前发生了中断,当第一状态类型为未置起状态时,表明当前未发生中断。使能标志的状态类型用于指示是否允许第一状态类型发生变化,当第二状态类型为已使能的状态类型时,表明当前允许第一状态类型发生变化,即发生中断时允许第一状态类型变为已置起的状态。当第二状态类型为未使能的状态类型时,表明当前不允许第一状态类型发生变化,即使发生中断,第一状态类型仍然为未置起的状态类型。
中断故障确定子模块3022包括:
已故障确定单元30221,若所述第一状态类型表示未置起的状态类型,确定所述中断标志对应的芯片中断的故障状态为中断已发生故障;
在一些实施例中,第一状态类型的置起或未置起的状态类型直接影响中断信号的发送,当第一状态类型的置起或未置起的状态与中断信号的状态不一致时,即可直接判断芯片中断出现了故障。例如,以CPU103收到中断信号后的判断过程为例,当CPU103接收到中断信号时,依据第一状态类型对中断故障进行判断,此时,首先确定第一状态类型,当第一状态类型显示为未置起状态时,第一状态类型表示当前未发生中断,而中断信号表明当前发生了中断,两者的矛盾情况确定了当前中断的故障状态为已发生故障。
使能查询单元30222,用于若所述第一状态类型表示已置起的状态类型,查询所述第二状态类型;
在一些实施例中,第二状态类型会决定芯片中断发生时第一状态类型能否表示为已置起的状态类型,因此,第二状态类型也会对芯片中断的故障状态具有一定的表征作用。例如,以CPU103收到中断信号后的判断过程为例,当CPU103接收到中断信号时,依据第一状态类型对中断故障进行判断,此时,首先确定中断标志的第一状态类型,当第一状态类型为已置起的状态时,第一状态类型表示当前已发生中断,中断信号也表明当前已发生故障两者是一致的,但是,由于CPU103能否收到中断信号还受到第二状态类型的影响,因此,应当进一步验证第二状态类型。
故障状态单元30223,用于基于所述第二状态类型,确定所述中断标志对应的芯片中断的故障状态。
在一些实施例中,第二状态类型能够在影响第一状态类型能否表示为已置起的状态,从而影响中断信号的发出,因此,基于第二状态类型,能够进一步确认芯片中断的故障状态。例如,以CPU103收到中断信号后的判断过程为例,当第二状态类型为未使能状态时,表明中断标志不能表示为已置起的状态,也就不能发出中断信号,即表明当前CPU103不应当收到中断信号,此时,如果CPU103收到了中断信号,这与第二状态类型是相矛盾的,这种矛盾的状况即表明当前的中断出现了故障。
在上述实施例中,通过第二状态类型对CPU103收到的信号的情况进行进一步验证,能够更加精确的判断中断的故障状态。
如图15所示,在上述的图14所示的实施例上,故障状态单元30223包括如下子单元:
未故障子单元302231,用于若所述第二状态类型表示已使能的状态类型,确定所述中断标志对应的芯片中断的故障状态为中断未发生故障;
在一些实施例中,第二状态类型表示已使能的状态类型时,表明中断标志的第一数据会随中断的发生和处理发生变化,即发生中断时,第一状态类型表示为已置起的状态,并同时发出中断信号。仍以CPU103收到中断信号的判断过程为例,在CPU103收到中断信号,且经查询第一状态类型为已置起状态时,需要依据第二状态类型判断故障状态,当第二状态类型为已使能状态时,此时表明第一状态类型可以表示为已置起的状态,也即CPU103可以收到中断信号,这种情况与CPU103已经收到中断信号的情况是一致的,即可表明中断未发生故障。
已故障子单元302232,用于若所述第二状态类型表示未使能的状态类型,确定所述中断标志对应的芯片中断的故障状态为中断已发生故障。
在一些实施例中,第二状态类型表示未使能的状态类型时,硬件功能模块101不会发出中断信号。以CPU103接收到中断信号后的判断过程为例,在CPU103收到中断信号,且经查询第一状态类型为置起状态时,需要依据第二状态类型判断故障状态,当第二状态类型为未使能状态时,此时表明硬件功能模块101不应当发出中断信号,也即CPU103不可以收到中断信号,这种情况与CPU103已经收到中断信号的情况是矛盾的,即可表明中断已发生故障。
一种处理中断的示例性过程如图6所示,图6示出了一种SOC的芯片中断处理过程,该处理过程具体如下:
步骤601,CPU到模块的中断请求。
步骤602,判断硬件功能模块的中断标志寄存器中对应中断的第一状态类型是否为已置起的状态类型,当第一状态类型为已置起的状态类型时,执行步骤6021,当第一状态类型为未置起的状态类型时,执行步骤6022。
步骤6021,判断硬件功能模块中的对应第二状态类型是否为已使能的状态类型,当第二状态类型为已使能的状态类型时,执行步骤60211,当第二状态类型为未使能的状态类型时,执行步骤6022。
步骤60211,运行对应中断的处理函数。该过程是以CPU收到中断信号作为起始来执行的,当CPU收到硬件功能模块的中断请求时,依据第一状态类型进行中断故障状态的判断,如果第一状态类型为已置起的状态类型,则进一步依据第二状态类型进行判断,如果第二状态类型为已使能的状态类型,则表明当前硬件功能模块确实发生了中断且该中断应当被处理,因此,运行对应的芯片中断函数进行处理。
步骤60212,中断故障计数器清零。由于在对中断的处理过程涉及到多个软件对于该芯片中断的访问,因此,会采用中断故障计数器记录该中断已使能状态被连续访问的次数,当非中断程序连续检测到中断标志的已使能状态未超过指定的次数时,表明当前的中断程序的当前运行在较为繁忙的核心上,当前的芯片中断需要等待中断程序直到中断程序对该芯片中断正确处理,在处理完成后,由于该中断已经不存在,因此需要对该中断故障计数器进行清零。
步骤6022,跳过对应中断的处理。
步骤60221,中断故障报错。在一些实施例中,该步骤在执行步骤6022之后执行。当第一状态类型为未置起的状态类型时,表明当前没有中断发生,与CPU收到中断信号是矛盾的,表明中断出现了故障,因此,跳过针对该中断信号对应的芯片中断的处理并报错。当第一状态类型为已置起状态,但是第二状态类型为未使能的状态类型时,由于第二状态类型为未使能的状态类型,表明当前第一状态类型不应当表示为已置起的状态,且CPU不应当收到中断信号,这与CPU收到中断信号这一情况是矛盾的,因此可以确定出现了故障,因此,跳过针对该中断信号对应的芯片中断的处理并报错。
图7示出了另一种SOC处理中断的过程,该处理过程具体如下:
步骤701,CPU收到模块的中断请求。
步骤702,判断硬件功能模块的中断标志寄存器中对应中断的第一状态类型是否为已置起的状态类型,当第一状态类型为已置起的状态类型时,执行步骤7021,当第一状态类型为未置起的状态类型时,执行步骤7022。
步骤7021,判断硬件功能模块中的对应第二状态类型是否为已使能的状态类型,当第二状态类型为已使能的状态类型时,执行步骤70211,当第二状态类型为未使能的状态类型时,执行步骤7022。
步骤70211,运行对应中断的处理函数。该过程是以CPU收到中断信号作为起始来执行的,当CPU收到硬件功能模块的中断请求时,依据第一状态类型进行中断故障状态的判断,如果第一状态类型为已置起的状态类型,则进一步依据第二状态类型进行判断,如果第二状态类型为已使能的状态类型,则表明当前硬件功能模块确实发生了中断且该中断应当被处理,因此,运行对应的芯片中断函数进行处理。
步骤7022,跳过对应中断的处理。
步骤70221,中断故障报错。在一些实施例中,该步骤在执行步骤7022之后执行。当第一状态类型为未置起的状态类型时,表明当前没有中断发生,与CPU收到中断信号是矛盾的,表明中断出现了故障,因此,跳过针对该中断信号对应的芯片中断的处理并报错。当第一状态类型为已置起状态,但是第二状态类型为未使能的状态类型时,由于第二状态类型为未使能的状态类型,表明当前第一状态类型不应当表示为已置起的状态,且CPU不应当收到中断信号,这与CPU收到中断信号这一情况是矛盾的,因此可以确定出现了故障,因此,跳过针对该中断信号对应的芯片中断的处理并报错。
该处理中断的过程与图6所示SOC处理中断的过程的不同之处在于,在处理过程中不涉及到采用中断故障计数器记录查询次数和中断故障计数器清零的过程。
如图16所示,在上述图13所示的是实施例基础上,芯片故障诊断装置还包括:
第一数据查询单元300,用于基于预定的时间间隔,查询所述中断标志寄存器中标识中断状态第一数据;
在一些实施例中,需要对中断标志寄存器1011中的第一数据周期性的进行查询,从而在芯片中断发生故障时及时发现和处理。以CPU103在执行非中断程序时的判断过程为例,CPU103在执行非中断程序时,每间隔预定的时间对中断标志寄存器1011中的第一数据进行一次查询,由于芯片中断的故障在一些情况下会导致不能正确的发出信号,上述的处理方式能够在通讯链路故障或者硬件功能模块101故障或者中断控制器102故障时,不能正确发出中断信号时也能够诊断出中断的故障。
在中断故障确定子模块3022中包括:
已置起执行单元30224,用于若所述第一状态类型表示已置起的状态类型,查询所述第二状态类型;
在一些实施例中,通过周期性查询得到当第一状态类型表示已置起的状态类型时,该状态类型表明已经发生了故障,由于该第一状态类型是通过查询得到的,当前CPU103未收到中断信号,第一状态类型已置起的状态与当前CPU103未收到中断信号的情况是矛盾的,表明中断已发生故障,此时,为了进一步确认芯片中断当前故障,需要进一步的查询第二状态类型进行确认。
中断处理单元30225,用于基于所述中断的所述第二状态类型,确定所述中断标志对应的芯片中断的故障状态并由非中断程序依据预定的处理方式对所述中断进行处理。
在一些实施例中,当第二状态类型为已使能状态时,表明允许硬件功能模块101的第一状态类型表示为已置起的状态类型,仍以CPU103周期性查询为例,当第一状态类型表示已置起的状态类型,且第二状态类型为已使能状态时,但是CPU103未收到中断信号,此时表明中断已经发生了故障,但是,由于该中断已经发生且应当被处理,为了尽快处理该中断,采用非中断程序对该中断进行处理后再确认中断的已故障状态。当第二状态类型为未使能状态时,表明当前的第一状态类型不应当被表示为已置起状态,可以直接确认中断的已故障。
图9示出了一种SOC处理中断的具体过程执行上述实施例各步骤的流程图,该过程具体如下:
步骤901,CPU103在非中断程序段中读取模块中的中断标志寄存器。
步骤902,模块中的中断标志寄存器中的第一状态类型是否为已置起的状态类型,当第一状态类型为已置起的状态类型时,执行步骤9021,当第一状态类型为未置起的状态类型时,执行步骤9022。
步骤9021,等待T时间后返回步骤901。该步骤使查询步骤能够依据预定的时间重复执行,从而能够周期性的检测芯片中断的故障。
步骤9022,查询模块中对应中断标志的第二状态类型,当第二状态类型为已使能的状态类型时,执行步骤902211,当第二状态类型为未使能的状态类型时,执行步骤90222。
步骤902211,提高非中断程序的优先级。为了避免非中断程序在处理中断的过程中被打断,将非中断程序的优先级提高。
步骤902212,由非中断程序调用对应中断的处理函数。
步骤902213,还原非中断程序的优先级。处理完毕后,该非中断程序还原至其原本的优先级,避免对其他优先级高于该非中断程序的程序产生影响。
步骤90222,中断故障报错。由于在步骤902中,第一状态类型第一状态类型为已置起的状态类型时,其表征当前已发生中断,CPU未收到中断信号,此时两者是矛盾的,表明芯片中断已发生了故障。在步骤9022中,第二状态类型为未使能状态时,第一状态类型不应当被表示为已置起状态,此时两者是矛盾的,因此,也可以表明当前芯片中断已发生了故障。
如图17所示,在上述图16所示的实施例的基础上,中断处理单元30225包括:
第二数据查询子单元302251,用于若所述第二状态类型表示已使能的状态类型,查询中断故障计数器中的标识第二状态类型查询次数的第二数据;
在一些实施例中,由于在对中断的处理过程涉及到多个软件对于该芯片中断的访问,因此,会采用中断故障计数器记录该中断已使能状态被连续访问的次数,当非中断程序连续检测到第一状态类型的已使能状态未超过指定的次数时,表明当前的中断程序的当前运行在较为繁忙的核心上,当前的芯片中断需要等待中断程序直到中断程序对该芯片中断正确处理,为了记录当前的芯片中断的已使能状态被连续访问的次数,采用中断故障计数器记录查询多个核心查询该中断的已使能的状态类型的次数,第二数据即为中断故障计数器中所存储的数值,已使能的状态类型每被查询到一次,中断故障计数器中的所存储的数值即加1。
查询次数确定子单元302252,用于基于所述第二数据,确定所述已使能的状态类型已被连续查询到的次数;
在一些实施例中,当每个中断被处理后,中断故障计数器即被清零,因此,在中断故障计数器中的数值即为当前中断的已使能的状态类型被连续查询到的次数。
中断处理子单元302253,用于基于所述已被连续查询到的次数与预定阈值的比较结果,确定所述中断标志对应的芯片中断的故障状态并由非中断程序依据预定的处理方式对所述中断进行处理。
在一些实施例中,预定阈值为依据中断的紧急状态或发生中断的模块等信息进行设定的,例如预定阈值可以被设定为2。中断的紧急状态越紧急,该阈值应当被设置的越小,发生中断的模块越重要,该预定阈值也应当被设置的越小。
作为一种优选的实施例,图11示出了一种多核SOC处理中断的具体流程图。具体的步骤如下:
步骤1101,CPU在非中断程序中读取模块中的中断标志寄存器。
步骤1102,模块中的中断标志寄存器中的第一状态类型是否为已置起的状态类型,当第一状态类型为已置起的状态类型时,执行步骤9021,当第一状态类型为未置起的状态类型时,执行步骤11022。
步骤11021,等待T时间后返回步骤1101。该步骤使查询步骤能够依据预定的时间重复执行,从而能够周期性的检测芯片中断的故障。
步骤11022,查询模块中对应中断标志的第二状态类型,当第二状态类型为已使能的状态类型时,执行步骤110222,当第二状态类型为未使能的状态类型时,执行步骤110221。
步骤110222,中断故障计数器+1。
步骤1102221,判断中断故障计数器的计数是否大于预定阈值,当计数大于预定阈值时,执行步骤1102222,当计数不大于预定阈值时,结束当前中断处理的流程。图11中与图9的不同之处在于,在图11中在确认第二状态类型为已使能的状态之后,再通过查询中断故障计数器确定其处理紧急状态,当被连续查询到的次数超出预定阈值时,表明当前中断需要尽快处理,因此,先对该中断进行处理后再确认中断的已故障状态。当被连续查询到的次数未超出预定阈值时,表明当前中断不需要尽快处理,因此,直接确认中断的已故障状态。
步骤1102222,提高非中断程序的优先级。为了避免非中断程序在处理中断的过程中被打断,将非中断程序的优先级提高。
步骤1102223,由非中断程序调用对应中断的处理函数。
步骤1102224,还原非中断程序的优先级。处理完毕后,该非中断程序还原至其原本的优先级,避免对其他优先级高于该非中断程序的程序产生影响。
步骤110221,中断故障报错。由于在步骤1102中,第一状态类型第一状态类型为已置起的状态类型时,其表征当前已发生中断,CPU未收到中断信号,此时两者是矛盾的,表明芯片中断已发生了故障。在步骤11022中,第二状态类型为未使能状态时,第一状态类型不应当被表示为已置起状态,此时两者是矛盾的,因此,也可以表明当前芯片中断已发生了故障。
示例性电子设备
下面,参考图18来描述根据本公开实施例的电子设备。图18图示了根据本公开实施例的电子设备的框图。
如图18所示,电子设备11包括一个或多个处理器111和存储器112。
处理器111可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备11中的其他组件以执行期望的功能。
存储器112可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器111可以运行所述程序指令,以实现上文所述的本公开的各个实施例的芯片故障诊断方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备11还可以包括:输入装置113和输出装置114,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,该输入装置113可以是例如键盘、鼠标等等。在该电子设备是单机设备时,该输入装置113可以是通信网络连接器。
该输出装置114可以向外部输出各种信息,该输出设备114可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图18中仅示出了该电子设备11中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备11还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的芯片故障诊断方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的芯片故障诊断方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (10)

1.一种芯片故障诊断方法,包括:
基于中断标志寄存器中标识中断状态的第一数据,确定所述中断标志寄存器的中断标志;
基于所述中断标志,确定所述中断标志对应的芯片中断的故障状态。
2.根据权利要求1所述的方法,其中,所述基于所述中断标志,确定所述中断标志对应的芯片中断的故障状态包括:
确定所述中断标志的状态类型;
基于所述中断标志的状态类型,确定所述中断标志对应的芯片中断的故障状态。
3.根据权利要求2所述的方法,其中,所述中断标志的状态类型包括表示中断发生状态的第一状态类型和表示中断使能状态的第二状态类型;
所述确定所述中断标志对应的芯片中断的故障状态包括:
若所述第一状态类型表示未置起的状态类型,确定所述中断标志对应的芯片中断的故障状态为中断已发生故障;
若所述第一状态类型表示已置起的状态类型,查询所述芯片第二状态类型;
基于所述第二状态类型,确定所述中断标志对应的芯片中断的故障状态。
4.根据权利要求3所述的方法,其中,所述基于所述第二状态类型,确定所述中断标志对应的芯片中断的故障状态包括:
若所述第二状态类型表示已使能的状态类型,确定所述中断标志对应的芯片中断的故障状态为中断未发生故障;
若所述第二状态类型表示未使能的状态类型,确定所述中断标志对应的芯片中断的故障状态为中断已发生故障。
5.根据权利要求2所述的方法,其中,所述基于中断标志寄存器中标识中断状态的第一数据,确定所述中断标志寄存器的中断标志之前包括:基于预定的时间间隔,查询所述中断标志寄存器中标识中断状态第一数据;
基于所述第一状态类型,确定所述中断标志对应的芯片中断的故障状态包括:
若所述第一状态类型表示已置起的状态类型,查询所述第二状态类型;
基于所述中断的所述第二状态类型,确定所述中断标志对应的芯片中断的故障状态并由非中断程序依据预定的处理方式对所述中断进行处理。
6.根据权利要求5所述的方法,其中,所述基于芯片第二状态类型,确定所述中断标志对应的芯片中断的故障状态并由非中断程序依据预定的处理方式对所述中断进行处理包括:
若所述第二状态类型表示已使能的状态类型,查询中断故障计数器中的标识第二状态类型查询次数的第二数据;
基于所述第二数据,确定所述已使能的状态类型已被连续查询到的次数;
基于所述已被连续查询到的次数与预定阈值的比较结果,确定所述中断标志对应的芯片中断的故障状态并由非中断程序依据预定的处理方式对所述芯片中断进行处理。
7.一种芯片故障诊断装置,包括:
中断标志确定模块,用于基于中断标志寄存器中标识中断状态的第一数据,确定所述中断标志寄存器的中断标志;
故障状态确定模块,用于基于所述中断标志,确定所述中断标志对应的芯片中断的故障状态。
8.根据权利要求7所述的装置,其中,所述故障状态确定模块包括:
状态类型确定子模块,用于确定所述中断标志的状态类型;
中断故障确定子模块,用于基于所述中断标志的状态类型,确定所述中断标志对应的芯片中断的故障状态。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-6任一所述的芯片故障诊断方法。
10.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-6任一所述的芯片故障诊断方法。
CN202011143874.4A 2020-10-22 2020-10-22 芯片故障诊断方法、装置、可读存储介质及电子设备 Active CN112256507B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011143874.4A CN112256507B (zh) 2020-10-22 2020-10-22 芯片故障诊断方法、装置、可读存储介质及电子设备
US17/507,158 US11579960B2 (en) 2020-10-22 2021-10-21 Chip fault diagnosis method, chip fault diagnosis device, computer-readable storage medium and electronic equipment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011143874.4A CN112256507B (zh) 2020-10-22 2020-10-22 芯片故障诊断方法、装置、可读存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN112256507A true CN112256507A (zh) 2021-01-22
CN112256507B CN112256507B (zh) 2023-10-27

Family

ID=74264818

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011143874.4A Active CN112256507B (zh) 2020-10-22 2020-10-22 芯片故障诊断方法、装置、可读存储介质及电子设备

Country Status (2)

Country Link
US (1) US11579960B2 (zh)
CN (1) CN112256507B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113832663A (zh) * 2021-09-18 2021-12-24 珠海格力电器股份有限公司 控制芯片故障记录方法、装置以及控制芯片故障读取方法
CN114780283A (zh) * 2022-06-20 2022-07-22 新华三信息技术有限公司 一种故障处理的方法及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117294573A (zh) * 2022-06-17 2023-12-26 中兴通讯股份有限公司 故障处理方法、装置和计算机可读存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070255876A1 (en) * 2006-04-28 2007-11-01 Nec Electronics Corporation Interrupt control circuit and method
CN102253859A (zh) * 2010-05-21 2011-11-23 康佳集团股份有限公司 嵌入式设备系统死锁调试装置及方法
CN102708015A (zh) * 2012-05-15 2012-10-03 江苏中科梦兰电子科技有限公司 基于cpu不可屏蔽中断系统问题诊断的调试方法
CN103617137A (zh) * 2013-11-29 2014-03-05 暨南大学 一种兼容8051 ip核的中断控制器及其控制方法
CN103744413A (zh) * 2013-11-19 2014-04-23 广东威灵电机制造有限公司 电机控制系统中微处理器的内核寄存器故障检测方法
CN105095128A (zh) * 2014-05-22 2015-11-25 中兴通讯股份有限公司 中断处理方法及中断控制器
CN111566592A (zh) * 2017-11-29 2020-08-21 超威半导体公司 计算系统中的动态中断速率控制
CN111679945A (zh) * 2020-06-12 2020-09-18 地平线(上海)人工智能技术有限公司 处理器的检测方法、装置及计算机可读存储介质
CN111723032A (zh) * 2019-03-21 2020-09-29 杭州宏杉科技股份有限公司 一种中断管控方法及电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812439A (en) * 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
WO2015114741A1 (ja) * 2014-01-28 2015-08-06 富士通株式会社 情報処理装置の診断方法、情報処理装置の診断プログラムおよび情報処理装置
WO2019061517A1 (zh) * 2017-09-30 2019-04-04 华为技术有限公司 内存故障的检测方法、装置和服务器
JP2019096243A (ja) * 2017-11-28 2019-06-20 ルネサスエレクトロニクス株式会社 半導体装置及びその故障検出方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070255876A1 (en) * 2006-04-28 2007-11-01 Nec Electronics Corporation Interrupt control circuit and method
CN102253859A (zh) * 2010-05-21 2011-11-23 康佳集团股份有限公司 嵌入式设备系统死锁调试装置及方法
CN102708015A (zh) * 2012-05-15 2012-10-03 江苏中科梦兰电子科技有限公司 基于cpu不可屏蔽中断系统问题诊断的调试方法
CN103744413A (zh) * 2013-11-19 2014-04-23 广东威灵电机制造有限公司 电机控制系统中微处理器的内核寄存器故障检测方法
CN103617137A (zh) * 2013-11-29 2014-03-05 暨南大学 一种兼容8051 ip核的中断控制器及其控制方法
CN105095128A (zh) * 2014-05-22 2015-11-25 中兴通讯股份有限公司 中断处理方法及中断控制器
CN111566592A (zh) * 2017-11-29 2020-08-21 超威半导体公司 计算系统中的动态中断速率控制
CN111723032A (zh) * 2019-03-21 2020-09-29 杭州宏杉科技股份有限公司 一种中断管控方法及电子设备
CN111679945A (zh) * 2020-06-12 2020-09-18 地平线(上海)人工智能技术有限公司 处理器的检测方法、装置及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李子华: ""8031单片机中断程序设计及堆栈的设置"", 《辽宁农业职业技术学院》, vol. 4, no. 3, pages 54 - 56 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113832663A (zh) * 2021-09-18 2021-12-24 珠海格力电器股份有限公司 控制芯片故障记录方法、装置以及控制芯片故障读取方法
CN113832663B (zh) * 2021-09-18 2022-08-16 珠海格力电器股份有限公司 控制芯片故障记录方法、装置以及控制芯片故障读取方法
CN114780283A (zh) * 2022-06-20 2022-07-22 新华三信息技术有限公司 一种故障处理的方法及装置
CN114780283B (zh) * 2022-06-20 2022-11-01 新华三信息技术有限公司 一种故障处理的方法及装置

Also Published As

Publication number Publication date
US20220129338A1 (en) 2022-04-28
US11579960B2 (en) 2023-02-14
CN112256507B (zh) 2023-10-27

Similar Documents

Publication Publication Date Title
CN112256507B (zh) 芯片故障诊断方法、装置、可读存储介质及电子设备
JP6333410B2 (ja) 障害処理方法、関連装置、およびコンピュータ
US20020178404A1 (en) Method for prioritizing bus errors
CN105183575A (zh) 处理器故障的诊断方法、装置及系统
US7685473B2 (en) Computer system, method of detecting a stall in a computer system, and signal-bearing medium embodying a program causing a computer system to perform a method of detecting a stall in a computer system
CN112395122A (zh) 闪存控制器及闪存控制器的方法
US20080288828A1 (en) structures for interrupt management in a processing environment
JP7125602B2 (ja) データ処理装置および診断方法
CN114564334B (zh) 一种mrpc数据处理方法、系统及相关组件
JP3711871B2 (ja) Pciバスの障害解析容易化方式
US20220222135A1 (en) Electronic control device
JP5337661B2 (ja) メモリ制御装置及びメモリ制御装置の制御方法
JPH09160840A (ja) バス通信装置
CN117076183B (zh) 一种错误上报方法、片上系统、计算机设备及存储介质
CN117076182B (zh) 一种错误上报方法、片上系统、计算机设备及存储介质
JPH11120154A (ja) コンピュータシステムにおけるアクセス制御装置および方法
JP2013196410A (ja) サーバ装置及び障害管理方法及び障害管理プログラム
CN115391232B (zh) 程序数据流诊断方法、装置及设备
CN116991651B (zh) 一种错误注入方法、片上系统、计算机设备及存储介质
CN106250260A (zh) 处理器溢出监控和调试方法及装置
CN114356708A (zh) 一种设备故障监控方法、装置、设备及可读存储介质
CN116302694A (zh) 故障处理方法、装置、通信设备及存储介质
JP2004185318A (ja) Cpuシステムの障害監視装置
JP5871499B2 (ja) 通信制御装置、通信制御システム、通信制御方法およびプログラム
JP4103141B2 (ja) コンピュータシステム、入出力制御部及び入出力制御プログラム

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