CN114443330A - 看门狗重启故障确定方法、装置、电子设备及存储介质 - Google Patents

看门狗重启故障确定方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114443330A
CN114443330A CN202011208204.6A CN202011208204A CN114443330A CN 114443330 A CN114443330 A CN 114443330A CN 202011208204 A CN202011208204 A CN 202011208204A CN 114443330 A CN114443330 A CN 114443330A
Authority
CN
China
Prior art keywords
task
watchdog
memory
information
register
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
CN202011208204.6A
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.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication 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 Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN202011208204.6A priority Critical patent/CN114443330A/zh
Publication of CN114443330A publication Critical patent/CN114443330A/zh
Pending legal-status Critical Current

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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种看门狗重启故障确定方法、装置、电子设备及存储介质,涉及故障检测技术领域。所述方法包括:在看门狗完成复位后,从指定物理地址读取启动指令;初始化内存控制器并保持复位前的固定内存的内容,所述固定内存中包括复位前每次任务切换时存储的切换前和切换后的任务信息;基于所述任务信息确定所述看门狗重启的故障来源。通过在操作系统中预留物理地址固定的内存用于系统复位前的现场任务信息收集,从而能够在中断故障或硬件故障时更加准确地确定造成看门狗重启的故障原因。

Description

看门狗重启故障确定方法、装置、电子设备及存储介质
技术领域
本申请涉及故障检测技术领域,具体而言,涉及一种看门狗重启故障确定方法、装置、电子设备及存储介质。
背景技术
硬件看门狗用于在系统发生故障时快速重启设备,以尽快恢复业务。“故障”导致了软件没有在规定时间内去访问硬件,进而引发了硬件看门狗超时,这里的“故障”,就是硬件看门狗重启问题。
在操作系统的任务上下文中进行喂狗操作,看门狗软件由于没有信息输出,导致分析困难。因此,这种喂狗模式在排查是首先需要明确看门狗超时是哪类故障引起的。传统的方法是通过看门狗中断的方法去排除硬件故障和中断故障。即看门狗中断能够响应,就说明不是中断故障,也不是硬件故障。第二种喂狗方式是定时器中断喂狗,这种喂狗方式下,有两种故障会产生看门狗超时异常时,一个是中断故障,一个是硬件故障。这种方式目前没有好的故障分析办法。
此外,任务喂狗设计下,可以通过看门狗中断让软件介入故障现场的分析,可以在中断中查看当前系统的运行情况,分析看门狗任务得不到及时调度的原因。但是看门狗中断方法的前提是系统仍然能够响应中断,但是当系统的故障是由于中断故障或硬件故障时,由于中断无法响应,软件就无法介入现场分析,进而无法得到任何信息,无法进行故障分析。
发明内容
有鉴于此,本申请实施例的目的在于提供一种看门狗重启故障确定方法、装置、电子设备及存储介质,以改善现有技术中存在的系统的故障是由于中断故障或硬件故障时无法进行故障原因分析的问题。
本申请实施例提供了一种看门狗重启故障确定方法,所述方法包括:在看门狗完成复位后,从指定物理地址读取启动指令;初始化内存控制器并保持复位前的固定内存的内容,所述固定内存中包括复位前每次任务切换时存储的切换前和切换后的任务信息;基于所述任务信息确定所述看门狗重启的故障来源。
在上述实现方式中,通过在操作系统中预留物理地址固定的内存用于系统复位前的现场任务信息收集,并在重启后初始化内存控制器时不进行重置操作,不对内存进行清零操作,使内存保留系统复位前的现场任务信息,从而能够在中断故障或硬件故障后基于该任务信息更加准确地确定造成看门狗重启的故障原因。
可选地,所述任务信息包括任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针、任务函数指针、中断向量号和中断完成标志中的至少一个,所述方法还包括:在所述看门狗进行复位前,在固定物理地址预留预设大小的内存作为所述固定内存,所述固定内存的物理地址与所述指定物理地址不同;在每次任务切换时,将切换前和切换后的任务的任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针和任务函数指针存储至所述固定内存;将中断发生时的中断向量存储至所述固定内存,所述中断向量用于表示中断的类型;将中断完成时的中断完成标志存储至所述固定内存。
在上述实现方式中,通过固定内存在任务切换时对切换前后的任务信息、中断向量以及中断完成标志进行存储,能够在复位重启后根据任务信息确定复位前系统执行的任务情况,根据中断向量确定中断类型,根据中断完成标志区别中断上下文和任务上下文,从而能够提高故障来源的判定判定准确性。
可选地,所述初始化内存控制器并保持复位前的固定内存的内容,包括:初始化所述内存控制器,且在初始化所述内存控制器时不使用全内存清零的功能,以保存复位前存储的所述任务信息。
在上述实现方式中,通过在内存控制器初始化时不启用重置功能即全内存清零的功能,从而对故障现场信息进行完整保留,为后续故障来源分析提供基础数据。
可选地,所述基于所述任务信息确定所述看门狗重启的故障来源,包括:基于所述任务信息和复位前函数调用信息确定造成所述看门狗重启的目标代码范围,将所述目标代码范围的代码作为所述故障来源。
在上述实现方式中,除了基于任务信息确定复位前的任务执行情况,还进一步细化到复位前的函数调用信息进行函数层级的故障来源判定,提高了故障来源判定的精确度。
可选地,在看门狗完成复位后,从指定物理地址读取启动指令之后,所述方法还包括:保持复位前的SP寄存器、RA寄存器和工作寄存器的值;将所述SP寄存器、所述RA寄存器和所述工作寄存器的值存储至所述固定内存中。
在上述实现方式中,利用CPU在重启后寄存器值保持不变的特性,在重启后使用尽量少的非关键寄存器,将关键寄存器不做修改,例如RA寄存器的指针指向的代码地址,SP寄存器的指针指向的堆栈地址,利用这两个地址就可以基于工作寄存器中的函数参数分析复位前的函数调用流程,从而提高故障来源判定的精确度。
可选地,所述基于所述任务信息和复位前函数调用信息确定造成所述看门狗重启的目标代码范围,包括:建立C语言运行环境;基于所述SP寄存器、所述RA寄存器和所述工作寄存器的值获得函数调用关系的堆栈分析结果;基于所述堆栈分析结果确定复位前的函数调用信息,所述函数调用信息包括函数调用顺序和函数运行状况;基于所述任务信息和所述函数调用信息确定复位前运行信息,所述复位前运行信息表示复位前系统处于异常上下文或任务上下文,以及所述系统复位前处于的异常和任务;基于所述复位前运行信息确定造成所述看门狗重启的所述目标代码范围。
在上述实现方式中,基于SP寄存器、RA寄存器和工作寄存器的值进行具体分析确定复位前的函数调用顺序和运行状况,再结合任务信息确定目标代码范围,进一步提高了判定导致看门狗复位的故障来源的精确性。
可选地,所述工作寄存器包括r1、r2和r3寄存器。
本申请实施例还提供了一种看门狗重启故障确定装置,所述装置包括:启动模块,用于在看门狗完成复位后,从指定物理地址读取启动指令;内存初始化模块,用于初始化内存控制器并保持复位前的固定内存的内容,所述固定内存中包括复位前每次任务切换时存储的切换前和切换后的任务信息;故障确定模块,用于基于所述任务信息确定看门狗复位前的现场运行任务,将所述现场运行任务作为看门狗重启的故障来源。
在上述实现方式中,通过在操作系统中预留物理地址固定的内存用于系统复位前的现场任务信息收集,并在重启后初始化内存控制器时不进行重置操作,不对内存进行清零操作,使内存保留系统复位前的现场任务信息,从而能够在中断故障或硬件故障后基于该任务信息更加准确地确定造成看门狗重启的故障原因。
可选地,所述任务信息包括任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针、任务函数指针、中断向量号和中断完成标志中的至少一个,所述看门狗重启故障确定装置还包括:任务信息存储模块,用于在所述看门狗进行复位前,在固定物理地址预留预设大小的内存作为所述固定内存,所述固定内存的物理地址与所述指定物理地址不同;在每次任务切换时,将切换前和切换后的任务的任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针和任务函数指针存储至所述固定内存;将中断发生时的中断向量存储至所述固定内存,所述中断向量用于表示中断的类型;将中断完成时的中断完成标志存储至所述固定内存。
在上述实现方式中,通过固定内存在任务切换时对切换前后的任务信息、中断向量以及中断完成标志进行存储,能够在复位重启后根据任务信息确定复位前系统执行的任务情况,根据中断向量确定中断类型,根据中断完成标志区别中断上下文和任务上下文,从而能够提高故障来源的判定判定准确性。
可选地,所述内存初始化模块用于:初始化所述内存控制器,且在初始化所述内存控制器时不使用全内存清零的功能,以保存复位前存储的所述任务信息。
在上述实现方式中,通过在内存控制器初始化时不启用重置功能即全内存清零的功能,从而对故障现场信息进行完整保留,为后续故障来源分析提供基础数据。
可选地,所述故障确定模块用于:基于所述任务信息和复位前函数调用信息确定造成所述看门狗重启的目标代码范围,将所述目标代码范围的代码作为所述故障来源。
在上述实现方式中,除了基于任务信息确定复位前的任务执行情况,还进一步细化到复位前的函数调用信息进行函数层级的故障来源判定,提高了故障来源判定的精确度。
可选地,所述看门狗重启故障确定装置还包括:寄存器值存储模块,用于保持复位前的SP寄存器、RA寄存器和工作寄存器的值;将所述SP寄存器、所述RA寄存器和所述工作寄存器的值存储至所述固定内存中。
在上述实现方式中,利用CPU在重启后寄存器值保持不变的特性,在重启后使用尽量少的非关键寄存器,将关键寄存器不做修改,例如RA寄存器的指针指向的代码地址,SP寄存器的指针指向的堆栈地址,利用这两个地址就可以基于工作寄存器中的函数参数分析复位前的函数调用流程,从而提高故障来源判定的精确度。
可选地,所述故障确定模块用于:建立C语言运行环境;基于所述SP寄存器、所述RA寄存器和所述工作寄存器的值获得函数调用关系的堆栈分析结果;基于所述堆栈分析结果确定复位前的函数调用信息,所述函数调用信息包括函数调用顺序和函数运行状况;基于所述任务信息和所述函数调用信息确定复位前运行信息,所述复位前运行信息表示复位前系统处于异常上下文或任务上下文,以及所述系统复位前处于的异常和任务;基于所述复位前运行信息确定造成所述看门狗重启的所述目标代码范围。
在上述实现方式中,基于SP寄存器、RA寄存器和工作寄存器的值进行具体分析确定复位前的函数调用顺序和运行状况,再结合任务信息确定目标代码范围,进一步提高了判定导致看门狗复位的故障来源的精确性。
可选地,所述工作寄存器包括r1、r2和r3寄存器。
本申请实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行上述任一实现方式中的步骤。
本申请实施例还提供了一种可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种看门狗重启故障确定方法的流程示意图。
图2为本申请实施例提供的一种任务信息存储步骤的流程示意图。
图3为本申请实施例提供的一种故障来源分析步骤的流程示意图。
图4为本申请实施例提供的一种看门狗重启故障确定装置的模块示意图。
图标:20-看门狗重启故障确定装置;21-启动模块;22-内存初始化模块;23-故障确定模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
经本申请人研究发现,在看门狗由于故障重启时,当系统的故障是由于中断故障或硬件故障时,系统会立即重启,不再保留故障现场数据,同时由于中断无法响应,软件就无法介入现场分析,进而无法得到任何信息,无法进行故障分析,因此对这类问题的分析排查一直是一个痛点,而看门狗故障大多数是由于中断故障和硬件故障造成,因此看门狗重启的故障来源分析存在分析成功率和准确率较低的问题。
为了解决上述问题,本申请实施例提供了一种看门狗重启故障确定方法,请参考图1,图1为本申请实施例提供的一种看门狗重启故障确定方法的流程示意图。该看门狗重启故障确定方法的具体步骤可以如下:
步骤S12:在看门狗完成复位后,从指定物理地址读取启动指令。
以MIPS架构的CPU为例,利用CPU热重启寄存器仍然保持值不变的特性,硬件看门狗复位CPU(Central Processing Unit,中央处理器)即系统重启后,CPU会从指定物理地址读取第一条启动指令进行启动,其中,该指定物理地址可以是0x1fc00000。
可选地,为了尽可能地保存系统重启前的数据,选择尽量少、不关键的指令用于启动设备。
应当理解的是,为了后续进行故障来源的判定,在看门狗进行复位前,系统在运行过程中需要进行任务信息的存储,该任务信息可以包括任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针、任务函数指针、中断向量号和中断完成标志中的至少一个。
具体地,请参考图2,图2为本申请实施例提供的一种任务信息存储步骤的流程示意图,则进行任务信息存储的步骤可以具体如下:
步骤S111:在看门狗进行复位前,在固定物理地址预留预设大小的内存作为固定内存,固定内存的物理地址与指定物理地址不同。
可选地,在以MIPS架构的系统为例时,操作系统启动时,在内存中的固定物理地址预留一个page(MIPS架构下的一个page的大小为4k)大小的内存用于记录运行时相关信息,将该固定物理地址预留的内存称为固定内存。上述固定内存不再被操作系统的内存管理模块使用,属于保留内存地址,这块内存在CPU重启前存储的内容,在CPU重启后仍然可以被正常读取。
步骤S112:在每次任务切换时,将切换前和切换后的任务的任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针和任务函数指针存储至固定内存。
应当理解的是,本实施例中的任务与函数都必须在模块内进行定义,起作用范围局限于定义他们的模块。任务包含任务控制块、任务堆栈和任务代码,使用task和endtask进行声明,函数使用关键字function和endfunction来进行函数声明,且任务能调用另一个任务,也能调用另一个函数,函数能调用另一个函数,但不能调用另一个任务。
任务控制块是一个基于链表的数据结构,任务控制块主要用于记录任务的任务堆栈指针、指向下一个任务控制块的指针、任务等待的延迟时间、任务的当前状态标志与任务的优先级别等一些与任务管理有关的属性。
任务堆栈指针是指向任务堆栈栈顶的指针,任务函数指针是指向不同的函数的指针。
步骤S113:将中断发生时的中断向量存储至固定内存,中断向量用于表示中断的类型。
中断是指当出现异常情况或者特殊请求时,计算机停止现行的程序的运行,转而对这些异常处理或者特殊请求的处理,处理结束后再返回到现行程序的中断处,继续执行原程序。中断向量是中断服务程序的入口地址,在计算机中中断向量的地址存放一条跳转到中断服务程序的跳转指令,因此可以根据中断向量确定中断的类型。
步骤S114:将中断完成时的中断完成标志存储至固定内存。
中断完成标志是处理器用于描述中断状态的,记载是否已经发生了中断,通常该中断完成标志为二进制信息,可以根据中断完成标志判定故障现场的数据是任务上下文还是中断上下文。
应当理解的是,上述任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针、任务函数指针、中断向量号和中断完成标志在进行看门狗重启的故障来源判定时不一定全部需要,可以选用其中的一个或多个数据进行判定。
步骤S14:初始化内存控制器并保持复位前的固定内存的内容,固定内存中包括复位前每次任务切换时存储的切换前和切换后的任务信息。
内存控制器是计算机系统内部控制内存并且负责内存与CPU之间数据交换的重要组成部分,其决定了计算机系统所能使用的最大内存容量、内存BANK数、内存类型和速度、内存颗粒数据深度和数据宽度等等重要参数。
由于现在常用内存通常为DDR内存(Double Data Rate SDRAM),则以DDR控制器为例,在常规的初始化流程中,DDR控制器初始化会使用RESET(重置)硬件功能,将整个DDR内存全部清零,本步骤则不使用RESET功能,避免全内存清零,让DDR内存的值保留复位前的内容。
步骤S16:基于任务信息确定看门狗重启的故障来源。
具体地,步骤S16可以是基于任务信息确定造成看门狗重启的目标代码范围,将目标代码范围的代码作为故障来源。
在基于任务信息确定目标代码范围时,可以根据任务控制块的任务堆栈指针等确定任务状态和调用函数等,根据中断向量确定中断的类型,根据中断完成标志确定其为任务上下文还是中断上下文,从而从中断发生的现场数据确定目标代码范围,该目标代码范围的粒度为任务对应级别。
进一步地,为了在更小的粒度更加精确地确定故障来源,本实施例还可以从寄存器存储的函数数据以函数粒度进行故障来源分析,则在看门狗完成复位时,需要执行以下步骤:
步骤S115:保持复位前的SP寄存器、RA寄存器和工作寄存器的值。
SP寄存器指的是堆栈指针寄存器,在堆栈操作中使用,PUSH和POP指令是从SP寄存器得到现行堆栈段的段内偏移量,所以称SP寄存器为堆栈指针,SP始终指向栈顶。
RA寄存器中存入的是pc的值(程序运行处的地址),调用函数时,在跳转前,必须保存当前地址(pc的值),以便后来返回。
工作寄存器通常用于对函数进行参数和局部变量的传递,其可以选用r0、r1、r2、r3等工作寄存器。
CPU的启动代码通常采用汇编语言编写,为了保证SP寄存器、RA寄存器和工作寄存器的值不受影响,本实施例可以选用ABI规范中的临时寄存器tn进行汇编代码的存储。
步骤S116:将SP寄存器、RA寄存器和工作寄存器的值存储至固定内存中。
上述SP寄存器、RA寄存器和工作寄存器的值为复位前函数调用信息。
接下来可以通过任务信息和函数调用信息确定造成看门狗重启的目标代码范围,则请参考图3,图3为本申请实施例提供的一种故障来源分析步骤的流程示意图。步骤S16具体可以包括如下子步骤:
步骤S161:建立C语言运行环境。
步骤S162:基于SP寄存器、RA寄存器和工作寄存器的值获得函数调用关系的堆栈分析结果。
堆栈都是一种数据项按序排列的数据结构,只能在一端(称栈顶)对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。具体地,堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。堆这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。
上述堆栈分析结果可以是对可执行文件进行反汇编,针对每个基本块内的汇编代码统计该基本块的堆栈使用信息,然后基于SP寄存器、RA寄存器和工作寄存器的值确定函数的堆栈使用。
步骤S163:基于堆栈分析结果确定复位前的函数调用信息,函数调用信息包括函数调用顺序和函数运行状况。
将每个函数所含有的基本块的堆栈使用信息进行累加获得该函数的堆栈使用,从汇编代码中取出函数调用代码和函数返回代码,根据函数调用相关代码的位置关系确定函数调用信息。
步骤S164:基于任务信息和函数调用信息确定复位前运行信息,复位前运行信息表示复位前系统处于异常上下文或任务上下文,以及系统复位前处于的异常和任务。
通过步骤S163,利用关键寄存器的值,特别是RA寄存器的指针指向的代码地址,SP寄存器的指针指向的堆栈地址,利用这两个地址分析获得复位前的函数调用流程,再结合任务信息即复位现场信息,可以得到复位前运行信息,即复位前系统处于异常上下文还是任务上下文,具体是哪个异常以及哪个任务。
步骤S165:基于复位前运行信息确定造成看门狗重启的目标代码范围。
根据复位前运行信息确定复位前代码运行的大致范围后,则可以在该大致范围中分析可能造成看门狗重启的代码,从而确定目标代码范围。
本申请实施例可以实现设备重启后的现场分析,对于系统出现底层软件中断造成的问题(这类问题重启软件无法接入分析,无信息输出),提供了一种问题分析办法。这种分析办法对于设备出现的看门狗重启这类疑难问题,提供了有效的手段,对于提高设备的稳定性和可靠性具有积极的意义。
为了配合本实施例提供的上述看门狗重启故障确定方法,本实施例还提供了一种看门狗重启故障确定装置20。请参考图4,图4为本申请实施例提供的一种看门狗重启故障确定装置的模块示意图。
看门狗重启故障确定装置20包括:
启动模块21,用于在看门狗完成复位后,从指定物理地址读取启动指令;
内存初始化模块22,用于初始化内存控制器并保持复位前的固定内存的内容,固定内存中包括复位前每次任务切换时存储的切换前和切换后的任务信息;
故障确定模块23,用于基于任务信息确定看门狗复位前的现场运行任务,将现场运行任务作为看门狗重启的故障来源。
可选地,任务信息包括任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针、任务函数指针、中断向量号和中断完成标志中的至少一个,看门狗重启故障确定装置20还包括:任务信息存储模块,用于在看门狗进行复位前,在固定物理地址预留预设大小的内存作为固定内存,固定内存的物理地址与指定物理地址不同;在每次任务切换时,将切换前和切换后的任务的任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针和任务函数指针存储至固定内存;将中断发生时的中断向量存储至固定内存,中断向量用于表示中断的类型;将中断完成时的中断完成标志存储至固定内存。
可选地,内存初始化模块22用于:初始化内存控制器,且在初始化内存控制器时不使用全内存清零的功能,以保存复位前存储的任务信息。
可选地,故障确定模块23用于:基于任务信息和复位前函数调用信息确定造成看门狗重启的目标代码范围,将目标代码范围的代码作为故障来源。
可选地,看门狗重启故障确定装置20还包括:寄存器值存储模块,用于保持复位前的SP寄存器、RA寄存器和工作寄存器的值;将SP寄存器、RA寄存器和工作寄存器的值存储至固定内存中。
可选地,故障确定模块23用于:建立C语言运行环境;基于SP寄存器、RA寄存器和工作寄存器的值获得函数调用关系的堆栈分析结果;基于堆栈分析结果确定复位前的函数调用信息,函数调用信息包括函数调用顺序和函数运行状况;基于任务信息和函数调用信息确定复位前运行信息,复位前运行信息表示复位前系统处于异常上下文或任务上下文,以及系统复位前处于的异常和任务;基于复位前运行信息确定造成看门狗重启的目标代码范围。
可选地,工作寄存器包括r1、r2和r3寄存器。
本申请实施例还提供了一种电子设备,该电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行本实施例提供的看门狗重启故障确定方法中任一项所述方法中的步骤。
应当理解是,该电子设备可以是个人电脑(Personal Computer,PC)、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)等具有逻辑计算功能的电子设备。
本申请实施例还提供了一种可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行看门狗重启故障确定方法中的步骤。
综上所述,本申请实施例提供了一种看门狗重启故障确定方法、装置、电子设备及存储介质,所述方法包括:在看门狗完成复位后,从指定物理地址读取启动指令;初始化内存控制器并保持复位前的固定内存的内容,所述固定内存中包括复位前每次任务切换时存储的切换前和切换后的任务信息;基于所述任务信息确定所述看门狗重启的故障来源。
在上述实现方式中,通过在操作系统中预留物理地址固定的内存用于系统复位前的现场任务信息收集,并在重启后初始化内存控制器时不进行重置操作,不对内存进行清零操作,使内存保留系统复位前的现场任务信息,从而能够在中断故障或硬件故障后基于该任务信息更加准确地确定造成看门狗重启的故障原因。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。因此本实施例还提供了一种可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行区块数据存储方法中任一项所述方法中的步骤。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RanDom Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

Claims (10)

1.一种看门狗重启故障确定方法,其特征在于,所述方法包括:
在看门狗完成复位后,从指定物理地址读取启动指令;
初始化内存控制器并保持复位前的固定内存的内容,所述固定内存中包括复位前每次任务切换时存储的切换前和切换后的任务信息;
基于所述任务信息确定所述看门狗重启的故障来源。
2.根据权利要求1所述的方法,其特征在于,所述任务信息包括任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针、任务函数指针、中断向量号和中断完成标志中的至少一个,所述方法还包括:
在所述看门狗进行复位前,在固定物理地址预留预设大小的内存作为所述固定内存,所述固定内存的物理地址与所述指定物理地址不同;
在每次任务切换时,将切换前和切换后的任务的任务名、任务控制块的物理地址指针、上一个任务的运行时间、任务堆栈指针和任务函数指针存储至所述固定内存;
将中断发生时的中断向量存储至所述固定内存,所述中断向量用于表示中断的类型;
将中断完成时的中断完成标志存储至所述固定内存。
3.根据权利要求1所述的方法,其特征在于,所述初始化内存控制器并保持复位前的固定内存的内容,包括:
初始化所述内存控制器,且在初始化所述内存控制器时不使用全内存清零的功能,以保存复位前存储的所述任务信息。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述基于所述任务信息确定所述看门狗重启的故障来源,包括:
基于所述任务信息和复位前函数调用信息确定造成所述看门狗重启的目标代码范围,将所述目标代码范围的代码作为所述故障来源。
5.根据权利要求4所述的方法,其特征在于,在看门狗完成复位后,从指定物理地址读取启动指令之后,所述方法还包括:
保持复位前的SP寄存器、RA寄存器和工作寄存器的值;
将所述SP寄存器、所述RA寄存器和所述工作寄存器的值存储至所述固定内存中。
6.根据权利要求5所述的方法,其特征在于,所述基于所述任务信息和复位前函数调用信息确定造成所述看门狗重启的目标代码范围,包括:
建立C语言运行环境;
基于所述SP寄存器、所述RA寄存器和所述工作寄存器的值获得函数调用关系的堆栈分析结果;
基于所述堆栈分析结果确定复位前的函数调用信息,所述函数调用信息包括函数调用顺序和函数运行状况;
基于所述任务信息和所述函数调用信息确定复位前运行信息,所述复位前运行信息表示复位前系统处于异常上下文或任务上下文,以及所述系统复位前处于的异常和任务;
基于所述复位前运行信息确定造成所述看门狗重启的所述目标代码范围。
7.根据权利要求5或6所述的方法,其特征在于,所述工作寄存器包括r1、r2和r3寄存器。
8.一种看门狗重启故障确定装置,其特征在于,所述装置包括:
启动模块,用于在看门狗完成复位后,从指定物理地址读取启动指令;
内存初始化模块,用于初始化内存控制器并保持复位前的固定内存的内容,所述固定内存中包括复位前每次任务切换时存储的切换前和切换后的任务信息;
故障确定模块,用于基于所述任务信息确定看门狗复位前的现场运行任务,将所述现场运行任务作为看门狗重启的故障来源。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-7中任一项所述方法中的步骤。
10.一种可读取存储介质,其特征在于,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-7任一项所述方法中的步骤。
CN202011208204.6A 2020-11-02 2020-11-02 看门狗重启故障确定方法、装置、电子设备及存储介质 Pending CN114443330A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011208204.6A CN114443330A (zh) 2020-11-02 2020-11-02 看门狗重启故障确定方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011208204.6A CN114443330A (zh) 2020-11-02 2020-11-02 看门狗重启故障确定方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114443330A true CN114443330A (zh) 2022-05-06

Family

ID=81361576

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011208204.6A Pending CN114443330A (zh) 2020-11-02 2020-11-02 看门狗重启故障确定方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114443330A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117290149A (zh) * 2023-11-27 2023-12-26 宁德时代新能源科技股份有限公司 主控模块的复位故障定位方法、装置、设备、系统和介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117290149A (zh) * 2023-11-27 2023-12-26 宁德时代新能源科技股份有限公司 主控模块的复位故障定位方法、装置、设备、系统和介质

Similar Documents

Publication Publication Date Title
CN101377750B (zh) 一种用于机群容错的系统和方法
US7774636B2 (en) Method and system for kernel panic recovery
US9104425B2 (en) Apparatus and method for handling exception events
US7895477B2 (en) Resilience to memory errors with firmware assistance
US20090113443A1 (en) Transactional Memory Computing System with Support for Chained Transactions
US9262283B2 (en) Method for reading kernel log upon kernel panic in operating system
RU2628921C1 (ru) Система и способ выполнения антивирусной проверки файла на виртуальной машине
US20080276129A1 (en) Software tracing
US5828890A (en) System for interrupting program operation when an out-of-range value is encountered to correct a data value
CN102708015A (zh) 基于cpu不可屏蔽中断系统问题诊断的调试方法
US20090300434A1 (en) Clearing Interrupts Raised While Performing Operating System Critical Tasks
CN109542341B (zh) 一种读写io监测方法、装置、终端及计算机可读存储介质
CN114443330A (zh) 看门狗重启故障确定方法、装置、电子设备及存储介质
US20020073359A1 (en) System and method for high priority machine check analysis
US20110202903A1 (en) Apparatus and method for debugging a shared library
CN101770396B (zh) 实现Linux系统下擦写DMI数据的方法及装置
US11960748B2 (en) SSD supporting read-only mode after PLP backup failure
US6785883B1 (en) Software system for tracing data
US8689206B2 (en) Isolating operating system in-memory modules using error injection
US20090300290A1 (en) Memory Metadata Used to Handle Memory Errors Without Process Termination
CN115576734A (zh) 一种多核异构日志存储方法和系统
CN115858211A (zh) 机器检查错误的处理方法及装置
CN116010029A (zh) 数据清除方法、装置、电子设备及计算机可读取存储介质
CN115421960A (zh) 一种ue内存故障恢复方法、装置、电子设备及介质
US7814288B2 (en) Protecting memory operations involving zero byte allocations

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