CN116932270A - 一种长期关中断的诊断方法及装置 - Google Patents

一种长期关中断的诊断方法及装置 Download PDF

Info

Publication number
CN116932270A
CN116932270A CN202310970528.0A CN202310970528A CN116932270A CN 116932270 A CN116932270 A CN 116932270A CN 202310970528 A CN202310970528 A CN 202310970528A CN 116932270 A CN116932270 A CN 116932270A
Authority
CN
China
Prior art keywords
interrupt
cpu
term
preset
core
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.)
Pending
Application number
CN202310970528.0A
Other languages
English (en)
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.)
Chongqing Changan Automobile Co Ltd
Original Assignee
Chongqing Changan Automobile 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 Chongqing Changan Automobile Co Ltd filed Critical Chongqing Changan Automobile Co Ltd
Priority to CN202310970528.0A priority Critical patent/CN116932270A/zh
Publication of CN116932270A publication Critical patent/CN116932270A/zh
Pending legal-status Critical Current

Links

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/0721Error 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 within a central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及芯片架构中断处理技术领域,特别涉及一种长期关中断的诊断方法及装置,方法包括:按照预先设置的多核CPU中的监控关系进行关中断状态检测;当多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由监控CPU将不可屏蔽中断发送至被监控CPU;当被监控CPU响应不可屏蔽中断时,提取被监控CPU的当前堆栈信息,根据当前堆栈信息确定关中断异常代码,在没有不可屏蔽中断接口支持的情况下,实现了响应不可屏蔽中断,进而能够保存堆栈信息,实现了对长期关中断进行诊断。

Description

一种长期关中断的诊断方法及装置
技术领域
本申请涉及芯片架构中断处理技术领域,具体是涉及一种长期关中断的诊断方法及装置。
背景技术
中断是指计算机运行过程中,出现某些意外情况需主机干预时,设备能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
如图1所示,操作系统中的所有中断均可被中断控制器管理并分配给多核CPU,开关中断方法为控制异常屏蔽寄存器DAIF的屏蔽位,各CPU可以通过异常屏蔽寄存器DAIF的屏蔽位对各个异常进行屏蔽,异常屏蔽包括调试屏蔽、系统错误屏蔽、中断屏蔽、IRQ屏蔽和FIQ屏蔽;在处理紧急任务、使用互斥资源等场景,需要关中断操作,如DAIF.I=1,结束后重新打开中断操作,如DAIF.1=0。若软件出现异常代码,没有及时打开中断,导致芯片架构无法响应任何中断,包括无法调度、死锁、死机等异常,只能通过重启等机制恢复正常。
不可屏蔽中断(NMI,non-maskable interrupt)通常用于通知操作系统发生了无法恢复的硬件错误或软件异常,大多数产品提供了人工触发不可屏蔽中断的接口,比如NMI按钮或者iLO命令等,当系统挂起,失去响应的时候,可以人工触发NMI按钮,使系统重置,响应不可屏蔽中断时保存堆栈信息,以供分析导致系统异常的原因。具体地,无法恢复的硬件错误通常包括:芯片错误、内存ECC校验错、总线数据损坏等;软件异常通常包括:中断被设置为禁止状态而无法响应中断事件、系统依赖于中断来调试和采样等。
X86_64和PPC64等架构均已提供了不可屏蔽中断的支持,RISC-V架构也引入了不可屏蔽中断机制,但是还存在一些芯片架构不支持不可屏蔽中断,如ARM64架构,虽然近年来ARM增加了在CPU和GIC构架对不可屏蔽中断的支持,但对于现存大量市场使用的不支持不可屏蔽中断的芯片架构,在没有不可屏蔽中断接口支持的情况下,系统无法响应不可屏蔽中断,无法保存堆栈信息,进而无法对长期关中断进行诊断。
因此,现有技术还有待改进和提高。
发明内容
本申请提供了一种长期关中断的诊断方法及装置,以解决相关技术中对于不支持不可屏蔽中断的芯片架构,在没有不可屏蔽中断接口支持的情况下,无法对长期关中断进行诊断的技术问题。
为实现上述目的,本申请采用了以下技术方案:
本申请第一方面实施例提供一种长期关中断的诊断方法,包括以下步骤:
按照预先设置的多核CPU中的监控关系进行关中断状态检测;
当所述多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由所述监控CPU将所述不可屏蔽中断发送至所述被监控CPU;
当所述被监控CPU响应所述不可屏蔽中断时,提取所述被监控CPU的当前堆栈信息,根据所述当前堆栈信息确定关中断异常代码。
根据上述技术手段,本申请实施例通过对比优先级的值解除核间中断的屏蔽,将解除屏蔽的核间中断作为虚拟的不可屏蔽中断,在没有不可屏蔽中断接口支持的情况下,也实现了响应不可屏蔽中断,进而能够保存堆栈信息,实现了对长期关中断进行诊断。
可选地,在本申请的一个实施例中,所述多核CPU中的各个CPU串联监控,形成闭环监控线;所述监控关系为在预定监控方向上闭环监控线中的每个CPU监控下一个相邻的CPU。
根据上述技术手段,本申请实施例中的每个CPU都有监控的功能,并且每个CPU均被监控,通过环形监控的方式,能够有效的监控每个CPU的状态。
可选地,在本申请的一个实施例中,当所述多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由所述监控CPU将所述不可屏蔽中断发送至所述被监控CPU,包括:
当所述多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将中断控制器的寄存器值设置为预设关中断阈值;
将中断控制器接收到的各个操作系统中断对应的优先级的值与所述预设关中断阈值进行比对;
将各个所述操作系统中断中优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由所述监控CPU将所述不可屏蔽中断发送至所述被监控CPU。
根据上述技术手段,本申请实施例通过设置中断控制器的寄存器值来解除核间中断的开关中断操作的控制,模拟得到了不可屏蔽中断,进而使得监控CPU将不可屏蔽中断发送至被监控CPU,从而实现了诊断被监控CPU中的关中断异常代码。
可选地,在本申请的一个实施例中,当所述被监控CPU响应所述不可屏蔽中断时,提取所述被监控CPU的当前堆栈信息,根据所述当前堆栈信息确定关中断异常代码,包括:
当所述被监控CPU响应所述不可屏蔽中断时,在中断服务程序中打印所述被监控CPU的当前堆栈信息,并由所述监控CPU对所述被监控CPU进行软重启;
根据所述当前堆栈信息确定关中断异常代码。
根据上述技术手段,本申请实施例在中断服务程序中打印堆栈信息,并可以通过其他CPU的看门狗、监控通讯等方式实现软重启来恢复正常,达到了通过响应不可屏蔽中断打印被监控CPU当前堆栈信息并软重启被监控CPU的效果。
可选地,在本申请的一个实施例中,所述按照预先设置的多核CPU中的监控关系进行关中断状态检测之后,还包括:
当所述多核CPU中的各个监控CPU检测到被监控CPU的当前状态均处于正常状态时,确定当前中断操作;
若所述当前中断操作为关中断操作,则将中断控制器的寄存器值设置为预设关中断阈值;
将中断控制器接收到的各个操作系统中断对应的优先级的值与所述预设关中断阈值进行比对;
将各个所述操作系统中断中优先级的值小于所述预设关中断阈值的操作系统中断进行关中断操作。
根据上述技术手段,本申请实施例只需要将预设关中断阈值设置为高于可屏蔽中断的优先级,就能够在关中断操作时对可屏蔽中断进行屏蔽,实现了对可屏蔽中断进行关中断操作。
可选地,在本申请的一个实施例中,当所述多核CPU中的各个监控CPU检测到被监控CPU的当前状态均处于正常状态时,确定当前中断操作之后,还包括:
若所述当前中断操作为开中断操作,则将中断控制器的寄存器值设置为预设开中断阈值;
将中断控制器接收到的各个操作系统中断对应的优先级的值与所述预设开中断阈值进行比对;
将各个所述操作系统中断中优先级的值大于所述预设开中断阈值的操作系统中断进行开中断操作。
根据上述技术手段,本申请实施例只需要将预设开中断阈值设置为低于可屏蔽中断的优先级,就能够在开中断操作时不对可屏蔽中断进行屏蔽,实现了对可屏蔽中断进行开中断操作。
可选地,在本申请的一个实施例中,所述核间中断为操作系统中未使用的核间中断。
根据上述技术手段,本申请实施例利用未使用的核间中断模拟不可屏蔽中断,避免了资源冲突。
本申请第二方面实施例提供一种长期关中断的诊断装置,包括:
检测模块,用于按照预先设置的多核CPU中的监控关系进行关中断状态检测;
发送模块,用于当所述多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由所述监控CPU将所述不可屏蔽中断发送至所述被监控CPU;
确定模块,用于当所述被监控CPU响应所述不可屏蔽中断时,提取所述被监控CPU的当前堆栈信息,根据所述当前堆栈信息确定关中断异常代码。
本申请第三方面实施例提供一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的长期关中断的诊断程序,所述处理器执行所述长期关中断的诊断程序时,实现如上所述的长期关中断的诊断方法的步骤。
本申请第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有长期关中断的诊断程序,所述长期关中断的诊断程序被处理器执行时,实现如上所述的长期关中断的诊断方法的步骤。
本申请的有益效果:
(1)本申请通过对比优先级的值解除核间中断的屏蔽,将解除屏蔽的核间中断作为虚拟的不可屏蔽中断,在没有不可屏蔽中断接口支持的情况下,也实现了响应不可屏蔽中断,进而能够保存堆栈信息,实现了对长期关中断进行诊断。
(2)本申请只需要将预设关中断阈值设置为高于可屏蔽中断的优先级,就能够在关中断操作时对可屏蔽中断进行屏蔽,实现了对可屏蔽中断进行关中断操作;将预设开中断阈值设置为低于可屏蔽中断的优先级,就能够在开中断操作时不对可屏蔽中断进行屏蔽,实现了对可屏蔽中断进行开中断操作。
(3)本申请的不可屏蔽中断不再受操作系统开关中断的影响,在关中断的情况下也能够发出不可屏蔽中断,进而实现对长期关中断进行诊断。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为现有技术关中断的诊断方法中操作系统中断的处理逻辑原理图;
图2为本申请实施例提供的一种长期关中断的诊断方法的流程图;
图3为本申请实施例的长期关中断的诊断方法中操作系统中断的处理逻辑原理图;
图4为本申请实施例的长期关中断的诊断方法的CPU之间的功能原理框图;
图5为本申请实施例的长期关中断的诊断方法中具体实施例的流程图。
图6为本申请实施例的长期关中断的诊断装置的结构示意图;
图7为本申请实施例提供的终端设备的内部结构原理框图。
具体实施方式
下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的长期关中断的诊断方法及装置。针对上述背景技术中提到的对于不支持不可屏蔽中断的芯片架构,在没有不可屏蔽中断支持的情况下,无法对长期关中断进行诊断的问题,本申请提供了一种长期关中断的诊断方法,在该方法中,按照预先设置的多核CPU中的监控关系进行关中断状态检测;当多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由监控CPU将不可屏蔽中断发送至被监控CPU;当被监控CPU响应不可屏蔽中断时,提取被监控CPU的当前堆栈信息,根据当前堆栈信息确定关中断异常代码,在没有不可屏蔽中断接口支持的情况下,实现了响应不可屏蔽中断,进而能够保存堆栈信息,实现了对长期关中断进行诊断。
具体而言,图2为本申请实施例所提供的一种长期关中断的诊断方法流程示意图。
如图2所示,该长期关中断的诊断方法包括以下的步骤:
在步骤S101中,按照预先设置的多核CPU中的监控关系进行关中断状态检测。
当系统进入关中断死循环状态时,为方便定位故障点,需要CPU能打印故障点的堆栈信息。由于一些架构(如ARM64硬件架构)不支持不可屏蔽中断,因此,无法使用不可屏蔽中断打印堆栈信息,进而无法诊断长期关中断。长期关中断是指处于关中断状态的时间大于一个时间阈值,长期关中断是产品指标,一般时间阈值越小实时性越好。本申请实施例针对多核CPU的架构,采用各个CPU之间互相监控的方式进行关中断状态检测,在检测到存在CPU处于长期关中断状态时,模拟出不可屏蔽中断,根据模拟的不可屏蔽中断提取该CPU的堆栈信息,根据堆栈信息确定关中断异常代码,完成诊断。
在本申请的一个实施例中,多核CPU中的各个CPU串联监控,形成闭环监控线;监控关系为在预定监控方向上闭环监控线中的每个CPU监控下一个相邻的CPU。例如,若多核CPU中具有3个核心:CPU1、CPU2和CPU3,则利用CPU1监控CPU2,利用CPU2监控CPU3,利用CPU3监控CPU1,从而形成闭环监控线,预定监控方向则为CPU1、CPU2和CPU3依次排列的方向。对于CPU1监控CPU2,CPU1作为监控CPU,CPU2作为被监控CPU;对于CPU2监控CPU3,CPU2则作为监控CPU,CPU3作为被监控CPU。有些CPU有异构核,包括cortex A核、R核、M核,将多个cortex A核之间形成环形监控机制。
本申请实施例中的每个CPU都有监控的功能,并且每个CPU均被监控,通过环形监控的方式,能够有效的监控每个CPU的状态。
在步骤S102中,当多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由监控CPU将不可屏蔽中断发送至被监控CPU。
由于一些架构(如ARM64 GICv3)的硬件支持对每个中断设置优先级,GIC的全称为Generic Interrupt Controller,中文名称为通用的中断控制器,v3是版本号,GIC中断控制器支持中断屏蔽和中断优先级设置,因此,可以利用优先级实现伪不可屏蔽中断的功能。也就是说,基于中断控制器(如GICv3)支持软件设置中断处理优先级的特性,达到模拟支持不可屏蔽中断功能的目的。
在本申请的一个实施例中,步骤S102具体包括:当多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将中断控制器的寄存器值设置为预设关中断阈值;将中断控制器接收到的各个操作系统中断对应的优先级的值与预设关中断阈值进行比对;将各个操作系统中断中优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由监控CPU将不可屏蔽中断发送至被监控CPU。
本申请实施例将开关中断方法由设置CPU状态寄存器中断屏蔽位调整为设置GIC中断控制器的PMR寄存器,优先级低于PMR寄存器值的中断将被屏蔽,优先级高于PMR寄存器值的中断将被解除屏蔽。所有操作系统中断都被中断控制器设置为一个优先级,关中断操作时,将PMR寄存器设置为高于操作系统中断的优先级的值,即,设置为预设关中断阈值,这样,低于预设关中断阈值的操作系统中断则被屏蔽,完成关中断操作。同样的,开中断操作时,将PMR寄存器设置为低于操作系统中断的优先级的值,即设置为预设开中断阈值,这样,高于预设关中断阈值的操作系统中断则不被屏蔽,完成开中断操作。也就是说,预设关中断阈值大于预设开中断阈值,处于预设关中断阈值和预设开中断阈值之间的优先级对应操作系统中断可以受到开中断操作和关中断操作的控制,而大于预设关中断阈值的优先级对应的操作系统中断则不受开中断操作和关中断操作的控制,因此,成为不可屏蔽中断。即,不可屏蔽中断不再受操作系统开关中断操作的影响,不可屏蔽中断的优先级的值是大于预设关中断阈值的,是由中断控制器设置的。由于本申请实施例是多核CPU中的核间监控,因此,选择核间中断作为不可屏蔽中断。预设关中断阈值可以根据不同架构的操作系统中断的优先级进行调整,以保证操作系统中断的优先级中存在高于预设关中断阈值的核间中断。
本申请实施例通过解除核间中断的开关中断操作的控制,模拟得到了不可屏蔽中断,进而使得监控CPU将不可屏蔽中断发送至被监控CPU,从而实现了诊断被监控CPU中的关中断异常代码。
在步骤S103中,当被监控CPU响应不可屏蔽中断时,提取被监控CPU的当前堆栈信息,根据当前堆栈信息确定关中断异常代码。
本申请实施例中各CPU间形成环形监控机制,当存在CPU长期关中断时,被另一个CPU检测到并发送不可屏蔽中断,CPU响应不可屏蔽中断并打印堆栈信息,通过堆栈信息可以定位到长期关中断的异常代码。
在本申请的一个实施例中,步骤S103具体包括:当被监控CPU响应不可屏蔽中断时,在中断服务程序中打印被监控CPU的当前堆栈信息,并由监控CPU对被监控CPU进行软重启;根据当前堆栈信息确定关中断异常代码。
本申请实施例在中断服务程序中打印堆栈信息,并可以通过其他CPU的看门狗、监控通讯等方式实现软重启来恢复正常,达到了通过响应不可屏蔽中断打印被监控CPU当前堆栈信息并软重启被监控CPU的效果。
在本申请的一个实施例中,步骤S101之后还包括:当多核CPU中的各个监控CPU检测到被监控CPU的当前状态均处于正常状态时,确定当前中断操作;若当前中断操作为关中断操作,则将中断控制器的寄存器值设置为预设关中断阈值;将中断控制器接收到的各个操作系统中断对应的优先级的值与预设关中断阈值进行比对;将各个操作系统中断中优先级的值小于预设关中断阈值的操作系统中断进行关中断操作。
本申请实施例在正常状态下,将图1中的开关中断方式调整为设置GIC中断控制器的PMR寄存器值,如图3所示,优先级低于PMR寄存器值的中断将被屏蔽,优先级高于PMR寄存器值的中断将被解除屏蔽。当多核CPU中的各个监控CPU检测到被监控CPU的当前状态均处于正常状态时,且需要关中断操作时,将中断控制器的寄存器值设置为预设关中断阈值,例如,将预设关中断阈值设置为M,将操作系统中断中的可屏蔽中断的优先级设置为PRI_LOW优先级。
本申请实施例只需要将预设关中断阈值设置为高于可屏蔽中断的优先级,就能够在关中断操作时对可屏蔽中断进行屏蔽,实现了对可屏蔽中断进行关中断操作。
在本申请的一个实施例中,当多核CPU中的各个监控CPU检测到被监控CPU的当前状态均处于正常状态时,确定当前中断操作之后,还包括:若当前中断操作为开中断操作,则将中断控制器的寄存器值设置为预设开中断阈值;将中断控制器接收到的各个操作系统中断对应的优先级的值与预设开中断阈值进行比对;将各个操作系统中断中优先级的值大于预设开中断阈值的操作系统中断进行开中断操作。
本申请实施例在关中断结束后重新打开中断操作,即进行开中断操作时,将中断控制器的寄存器值设置为预设开中断阈值,例如,如图3所示,将预设开中断阈值设置为N,可屏蔽中断的优先级大于预设开中断阈值,这样,不对可屏蔽中断进行屏蔽,实现开中断操作。
本申请实施例只需要将预设开中断阈值设置为低于可屏蔽中断的优先级,就能够在开中断操作时不对可屏蔽中断进行屏蔽,实现了对可屏蔽中断进行开中断操作。
如图3所示,图中x为多核CPU中的CPU个数,n为操作系统中断个数。对于不可屏蔽中断,可以设置其优先级为PRI_HIGH,本申请实施例中的优先级满足N<PRI_LOW<M<PRI_HIGH,不可屏蔽中断不再受操作系统开关中断的影响。
在本申请的一个实施例中,核间中断为操作系统中未使用的核间中断。多核CPU间具有核间中断,各CPU间通过核间中断形成环形监控机制,当CPU长期关中断时,被另一个CPU检测到并将未使用的核间中断作为不可屏蔽中断进行发送,CPU响应不可屏蔽中断并打印堆栈信息,通过堆栈信息定位到长期关中断的异常代码。
本申请实施例利用未使用的核间中断模拟不可屏蔽中断,避免了资源冲突。
如图4所示,由于软件设计缺陷,中断可能被留在被禁止的状态,使系统处于无法响应的状态,导致关中断异常,操作系统不能响应操作系统中断,本申请实施例通过对PMR设置M或N值来实现操作系统的开关中断,在操作系统关中断时,CPU仍可响应其他CPU发送的模拟的不可屏蔽中断。CPU响应不可屏蔽中断,在中断服务程序中可以打印堆栈信息,并可通过其他CPU的看门狗(watchdog)、监控通讯等方式实现软重启来恢复正常。在异构核设计中,M核或R核的功能安全等级高,一般会用看门狗监控contex A核是否工作正常,也就是在contex A核的调度里定期喂狗,如果一段时间没有喂狗,M核或R核会对contex A核进行软重启,即进行内存不断电的重启。如果有外置MCU,MCU与CPU间存在监控通讯,Contex A核异常的时候MCU监控到后实现软重启。
各CPU均有检测机制,在检测机制中,可以通过在调度中循环计数、看门狗喂狗等方式来证明本CPU的运行正常。同时对另一个CPU进行监控,并检测到异常后发送模拟的不可屏蔽中断给另一个CPU。循环计数可以是一个byte类型的数据,每次在调度的时候对其进行加一操作,另一个CPU调度时一段时间内查看byte类型的值是否有变化,如果没有变化,可以认为该CPU异常。
多核CPU间形成环形监控机制,当CPU长期关中断时,被另一个CPU检测到并发送不可屏蔽中断,CPU响应不可屏蔽中断并打印堆栈信息,通过堆栈信息定位长期关中断的异常代码。
如图5所示,步骤S1、软件异常代码。
对于操作系统,如Linux通常在各处有百万行代码直接操纵中断状态。中断处理程序可能导致同步异常,在中断禁止时,它会导致非线性代码和潜在的死锁。同时,考虑到第三方的运行在完全内核特权的驱动程序也可以操作中断状态,代码检查和静态分析不足以防止中断被留在禁止的状态。
步骤S2、检测机制。
在各个CPU调度程序中,增加循环计数器,或者通过看门狗喂狗方式来证明CPU在正常运行。同时判断被检测CPU的循环计数器在周期内是否变化,或者在调度中对被检测CPU绑定的看门狗喂狗。若检测到异常,发送虚拟的不可屏蔽中断给被检测CPU。
步骤S3、异常处理。
被检测CPU收到虚拟的不可屏蔽中断(即图中的伪NMI中断)后,在中断服务程序中打印堆栈信息,并软重启系统。堆栈信息可通过黑盒子等方式写入存储器。通过堆栈信息可以定位到关中断的软件异常代码,如图中的while(1)处。
如图6所示,该长期关中断的诊断装置10包括:检测模块100、发送模块200和确定模块300。
具体地,检测模块100,用于按照预先设置的多核CPU中的监控关系进行关中断状态检测
发送模块200,用于当多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由监控CPU将不可屏蔽中断发送至被监控CPU;
确定模块300,用于当被监控CPU响应不可屏蔽中断时,提取被监控CPU的当前堆栈信息,根据当前堆栈信息确定关中断异常代码。
可选地,多核CPU中的各个CPU中串联监控,形成闭环监控线;监控关系为在预定监控方向上闭环监控线中的每个CPU监控下一个相邻的CPU。
可选地,发送模块200包括:
设置单元,用于当多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将中断控制器的寄存器值设置为预设关中断阈值;
比对单元,用于将中断控制器接收到的各个操作系统中断对应的优先级的值与预设关中断阈值进行比对;
发送单元,用于将各个操作系统中断中优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由监控CPU将不可屏蔽中断发送至被监控CPU。
可选地,确定模块300包括:
重启单元,用于当被监控CPU响应不可屏蔽中断时,在中断服务程序中打印被监控CPU的当前堆栈信息,并由监控CPU对被监控CPU进行软重启;
确定单元,用于根据当前堆栈信息确定关中断异常代码。
可选地,诊断装置10还包括:
操作模块,用于当多核CPU中的各个监控CPU检测到被监控CPU的当前状态均处于正常状态时,确定当前中断操作;若当前中断操作为关中断操作,则将中断控制器的寄存器值设置为预设关中断阈值;将中断控制器接收到的各个操作系统中断对应的优先级的值与预设关中断阈值进行比对;将各个操作系统中断中优先级的值小于预设关中断阈值的操作系统中断进行关中断操作。
可选地,操作模块还用于若当前中断操作为开中断操作,则将中断控制器的寄存器值设置为预设开中断阈值;将中断控制器接收到的各个操作系统中断对应的优先级的值与预设开中断阈值进行比对;将各个操作系统中断中优先级的值大于预设开中断阈值的操作系统中断进行开中断操作。
可选地,核间中断为操作系统中未使用的核间中断。
需要说明的是,前述对长期关中断的诊断方法实施例的解释说明也适用于该实施例的长期关中断的诊断装置,此处不再赘述。
根据本申请实施例提出的长期关中断的诊断装置,本申请按照预先设置的多核CPU中的监控关系进行关中断状态检测;当多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由监控CPU将不可屏蔽中断发送至被监控CPU;当被监控CPU响应不可屏蔽中断时,提取被监控CPU的当前堆栈信息,根据当前堆栈信息确定关中断异常代码,在没有不可屏蔽中断接口支持的情况下,实现了响应不可屏蔽中断,进而能够保存堆栈信息,实现了对长期关中断进行诊断。
图7为本申请实施例提供的终端设备的结构示意图。该终端设备可以包括:
存储器501、处理器502及存储在存储器501上并可在处理器502上运行的计算机程序。
处理器502执行程序时实现上述实施例中提供的长期关中断的诊断方法。
进一步地,终端设备还包括:
通信接口503,用于存储器501和处理器502中的通信。
存储器501,用于存放可在处理器502上运行的计算机程序。
存储器501可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器501、处理器502和通信接口503独立实现,则通信接口503、存储器501和处理器502可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Periphera lComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
可选地,在具体实现上,如果存储器501、处理器502及通信接口503,集成在一块芯片上实现,则存储器501、处理器502及通信接口503可以通过内部接口完成相互间的通信。
处理器502可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的长期关中断的诊断方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备读取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或N个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种长期关中断的诊断方法,其特征在于,包括以下步骤:
按照预先设置的多核CPU中的监控关系进行关中断状态检测;
当所述多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由所述监控CPU将所述不可屏蔽中断发送至所述被监控CPU;
当所述被监控CPU响应所述不可屏蔽中断时,提取所述被监控CPU的当前堆栈信息,根据所述当前堆栈信息确定关中断异常代码。
2.如权利要求1所述的长期关中断的诊断方法,其特征在于,所述多核CPU中的各个CPU串联监控,形成闭环监控线;所述监控关系为在预定监控方向上闭环监控线中的每个CPU监控下一个相邻的CPU。
3.如权利要求1所述的长期关中断的诊断方法,其特征在于,当所述多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由所述监控CPU将所述不可屏蔽中断发送至所述被监控CPU,包括:
当所述多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将中断控制器的寄存器值设置为预设关中断阈值;
将中断控制器接收到的各个操作系统中断对应的优先级的值与所述预设关中断阈值进行比对;
将各个所述操作系统中断中优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由所述监控CPU将所述不可屏蔽中断发送至所述被监控CPU。
4.如权利要求1所述的长期关中断的诊断方法,其特征在于,当所述被监控CPU响应所述不可屏蔽中断时,提取所述被监控CPU的当前堆栈信息,根据所述当前堆栈信息确定关中断异常代码,包括:
当所述被监控CPU响应所述不可屏蔽中断时,在中断服务程序中打印所述被监控CPU的当前堆栈信息,并由所述监控CPU对所述被监控CPU进行软重启;
根据所述当前堆栈信息确定关中断异常代码。
5.如权利要求1所述的长期关中断的诊断方法,其特征在于,所述按照预先设置的多核CPU中的监控关系进行关中断状态检测之后,还包括:
当所述多核CPU中的各个监控CPU检测到被监控CPU的当前状态均处于正常状态时,确定当前中断操作;
若所述当前中断操作为关中断操作,则将中断控制器的寄存器值设置为预设关中断阈值;
将中断控制器接收到的各个操作系统中断对应的优先级的值与所述预设关中断阈值进行比对;
将各个所述操作系统中断中优先级的值小于所述预设关中断阈值的操作系统中断进行关中断操作。
6.如权利要求5所述的长期关中断的诊断方法,其特征在于,当所述多核CPU中的各个监控CPU检测到被监控CPU的当前状态均处于正常状态时,确定当前中断操作之后,还包括:
若所述当前中断操作为开中断操作,则将中断控制器的寄存器值设置为预设开中断阈值;
将中断控制器接收到的各个操作系统中断对应的优先级的值与所述预设开中断阈值进行比对;
将各个所述操作系统中断中优先级的值大于所述预设开中断阈值的操作系统中断进行开中断操作。
7.如权利要求1所述的长期关中断的诊断方法,其特征在于,所述核间中断为操作系统中未使用的核间中断。
8.一种长期关中断的诊断装置,其特征在于,包括:
检测模块,用于按照预先设置的多核CPU中的监控关系进行关中断状态检测;
发送模块,用于当所述多核CPU中的监控CPU检测到被监控CPU的当前状态处于长期关中断状态时,将优先级的值大于预设关中断阈值的核间中断解除屏蔽,得到不可屏蔽中断,并由所述监控CPU将所述不可屏蔽中断发送至所述被监控CPU;
确定模块,用于当所述被监控CPU响应所述不可屏蔽中断时,提取所述被监控CPU的当前堆栈信息,根据所述当前堆栈信息确定关中断异常代码。
9.一种终端设备,其特征在于,所述终端设备包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的长期关中断的诊断程序,所述处理器执行所述长期关中断的诊断程序时,实现如权利要求1-7任一项所述的长期关中断的诊断方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有长期关中断的诊断程序,所述长期关中断的诊断程序被处理器执行时,实现如权利要求1-7任一项所述的长期关中断的诊断方法的步骤。
CN202310970528.0A 2023-08-02 2023-08-02 一种长期关中断的诊断方法及装置 Pending CN116932270A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310970528.0A CN116932270A (zh) 2023-08-02 2023-08-02 一种长期关中断的诊断方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310970528.0A CN116932270A (zh) 2023-08-02 2023-08-02 一种长期关中断的诊断方法及装置

Publications (1)

Publication Number Publication Date
CN116932270A true CN116932270A (zh) 2023-10-24

Family

ID=88390759

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310970528.0A Pending CN116932270A (zh) 2023-08-02 2023-08-02 一种长期关中断的诊断方法及装置

Country Status (1)

Country Link
CN (1) CN116932270A (zh)

Similar Documents

Publication Publication Date Title
US7594143B2 (en) Analysis engine for analyzing a computer system condition
JP6086230B2 (ja) 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法
TW200416595A (en) On-die mechanism for high-reliability processor
JPS61502223A (ja) 再構成可能なデュアル・プロセッサ・システム
WO2007002940A2 (en) Debugging using virtual watchpoints
EP2816480A1 (en) Processor system
CN112395122A (zh) 闪存控制器及闪存控制器的方法
CN101639816B (zh) 一种总线的实时跟踪系统及相应的跟踪、调试方法
JP2008146542A (ja) マルチプロセッサシステム、プロセッサ装置及び例外処理方法
CN115576734B (zh) 一种多核异构日志存储方法和系统
CN116932270A (zh) 一种长期关中断的诊断方法及装置
JPH02294739A (ja) 障害検出方式
CN115292077A (zh) 内核异常处理方法及系统
US20210390022A1 (en) Systems, methods, and apparatus for crash recovery in storage devices
CN1831785A (zh) 应用于固件程序除错的微处理器与方法
US9176806B2 (en) Computer and memory inspection method
CN113742113A (zh) 一种嵌入式系统健康管理方法、设备及储存介质
JP3161444B2 (ja) 障害ロギングシステム、方法およびプログラムを記憶した記憶媒体
JPH11120154A (ja) コンピュータシステムにおけるアクセス制御装置および方法
CN113836035B (zh) 电池管理系统测试方法、装置及电子设备
JP2019020869A (ja) 車両制御装置
WO2022257871A1 (zh) 一种错误检测方法及相关装置
JPH10228395A (ja) 制御用コントローラの異常診断装置
JPH0255816B2 (zh)
SU993237A1 (ru) Устройство дл сопр жени оперативной пам ти с внешними устройствами

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