CN117806870B - 一种故障代码定位方法及相关装置 - Google Patents

一种故障代码定位方法及相关装置 Download PDF

Info

Publication number
CN117806870B
CN117806870B CN202410226467.1A CN202410226467A CN117806870B CN 117806870 B CN117806870 B CN 117806870B CN 202410226467 A CN202410226467 A CN 202410226467A CN 117806870 B CN117806870 B CN 117806870B
Authority
CN
China
Prior art keywords
address
fault
peripheral
singlechip
interrupt
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
CN202410226467.1A
Other languages
English (en)
Other versions
CN117806870A (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.)
Shuangyili Ningbo Battery Co ltd
Original Assignee
Shuangyili Ningbo Battery 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 Shuangyili Ningbo Battery Co ltd filed Critical Shuangyili Ningbo Battery Co ltd
Priority to CN202410226467.1A priority Critical patent/CN117806870B/zh
Publication of CN117806870A publication Critical patent/CN117806870A/zh
Application granted granted Critical
Publication of CN117806870B publication Critical patent/CN117806870B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

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

本申请提供了一种故障代码定位方法及相关装置,涉及故障代码定位技术领域。该方法用于实现程序的故障定位,程序烧录于开发系统的单片机,该单片机包括多个寄存器,开发系统还包括外设,单片机与外设通信连接,在检测到单片机触发中断情况下,从多个寄存器中确定出中断对应的目标寄存器;并从目标寄存器中输出中断对应的地址至外设中;判断目标寄存器的类型是否为设定类型;如果是,则依据外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将目标寄存器中的地址重置;如果否,则生成故障信号,并将故障信号输出至中断中。本申请具有实现了自动化确定出故障代码的位置,降低了工程师的工作量的优点。

Description

一种故障代码定位方法及相关装置
技术领域
本申请涉及故障代码定位技术领域,具体而言,涉及一种故障代码定位方法及相关装置。
背景技术
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
在单片机中烧录代码后,单片机在运行过程中,可能出现代码故障的情况,具体体现为单片机系统的异常或者死机问题。在目前的故障代码定位中,一般通过人工的方式,对源代码进行深入分析,尽可能地分析出有可能出现故障的源代码位置,然后使用JLink在线调试或者串口、CAN等工具打印调试信息,逐步锁定出现故障的源代码位置,然后对源代码进行优化,解决代码故障的问题。
然而,通过人工分析源代码找出可能出现故障的源代码位置的方式,其成功率受工程师经验和阅历的影响;普通工程师面对该类问题大多无法定位故障源代码的位置,需要对程序进行逐步排除与测试,需要花费大量的调试优化时间。
综上,现有技术中在定位源代码时,存在工程师对故障代码的定位难度较大的问题。
发明内容
本申请的目的在于提供一种故障代码定位方法及相关装置,以解决现有技术中存在的工程师对故障代码的定位难度较大的问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供了一种故障代码定位方法,用于实现程序的故障定位,所述程序烧录于开发系统的单片机,所述单片机包括多个寄存器,所述开发系统还包括外设,所述单片机与所述外设通信连接,所述方法包括:
在检测到所述单片机触发中断情况下,从所述多个寄存器中确定出中断对应的目标寄存器;并从所述目标寄存器中输出中断对应的地址至所述外设中;
判断所述目标寄存器的类型是否为设定类型;
如果是,则依据所述外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将所述目标寄存器中的地址重置;
如果否,则生成故障信号,并将所述故障信号输出至所述外设中。
可选地,在从目标寄存器中输出中断对应的地址至外设中的步骤之前,所述方法还包括:
获取目标寄存器的首地址,并判断所述首地址是否位于预设的地址范围内;其中,每个型号的单片机对应一个特定的地址范围;
如果是,则执行从目标寄存器中输出中断对应的地址至外设中的步骤;
如果否,则将输出变量置零。
可选地,从目标寄存器中输出中断对应的地址至外设中的步骤包括:
将所述目标寄存器中地址上的数据写入输出变量中,并通过输出变量向所述外设输出变量信息。
可选地,在将输出变量置零的步骤之后,所述方法还包括:
确定所述目标寄存器的首地址所处的目标地址范围;
依据所述目标地址范围确定程序对应的单片机型号。
可选地,从所述多个寄存器中确定出中断对应的目标寄存器的步骤包括:
获取所述单片机的型号;
依据所述单片机的型号从多个寄存器中确定目标寄存器。
可选地,所述单片机中还包括故障类型寄存器,在当检测到单片机触发中断时,所述方法还包括:
将故障类型寄存器中的数据输出至外设中。
可选地,依据外设中获取的地址与源代码的map文件进行匹配的步骤包括:
确定所述地址在所述map文件中所处的目标地址区间;
依据所述目标地址区间确定故障代码函数。
第二方面,本申请提供了一种故障代码定位装置,用于实现程序的故障定位,所述程序烧录于开发系统的单片机,所述单片机包括多个寄存器,所述开发系统还包括外设,所述单片机与所述外设通信连接,所述装置包括:
数据处理单元,用于在检测到所述单片机触发中断情况下,从所述多个寄存器中确定出中断对应的目标寄存器;并从所述目标寄存器中输出中断对应的地址至所述外设中;
判断单元,用于判断所述目标寄存器的类型是否为设定类型;
数据处理单元,还用于在标寄存器的类型为设定类型时,依据所述外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将所述目标寄存器中的地址重置;
数据处理单元,还用于在标寄存器的类型为非设定类型时,生成故障信号,并将所述故障信号输出至所述中断中。
第三方面,本申请实施例还提供了一种单片机,包括:
存储器,用于存储一个或多个程序;处理器;当所述一个或多个程序被所述处理器执行时,实现上述的方法。
第四方面,本申请实施例还提供了一种可读存储介质,其上存储有单片机程序,该单片机程序被处理器执行时实现上述的方法。
相对于现有技术,本申请具有以下有益效果:
本申请提供了一种故障代码定位方法及相关装置,该方法用于实现程序的故障定位,程序烧录于开发系统的单片机,该单片机包括多个寄存器,开发系统还包括外设,单片机与外设通信连接,在检测到单片机触发中断情况下,从多个寄存器中确定出中断对应的目标寄存器;并从目标寄存器中输出中断对应的地址至外设中;判断目标寄存器的类型是否为设定类型;如果是,则依据外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将目标寄存器中的地址重置;如果否,则生成故障信号,并将故障信号输出至中断中。由于本申请中,在检测到单片机触发中断时,会直接将目标寄存器中的地址输出至外设中,并且可以依据地址从map文件中确定出故障代码函数,实现了自动化确定出故障代码的位置,降低了工程师的工作量的效果。并且,还可以依据中断对应的不同寄存器的类型,控制故障代码是否继续运行,进而在出现简易故障时,能够使烧录的程序继续跑完,进而提升了程序验证的快捷性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本申请实施例提供的单片机系统的模块示意图。
图2为本申请实施例提供的单片机的模块示意图。
图3为本申请实施例提供的故障代码定位方法的示例性流程图。
图4为本申请实施例提供的处理器核心包括的寄存器类型的示意图。
图5为本申请实施例提供的map文件的示意图。
图中:100-单片机;101-处理器;102-存储器;103-通信接口;200-外设。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
正如背景技术中所述,目前,在单片机烧录代码后,若单片机运行时出现异常或者死机问题,则表明源代码出现故障,此时,需要对源代码的故障位置进行定位,例如源代码中具体哪个函数出现故障,并在故障定位后,对源代码的故障位置进行修复。目前,普遍采用人工分析的方式对出现故障的源代码进行定位,但该方式会导致工程师的工作量较大,且受限于工程师的经验。因此,现有技术中,存在工程师对故障代码的定位难度较大的问题。
有鉴于此,本申请提供了一种故障代码定位方法,通过中断对应的地址与map文件匹配的方式,实现故障代码函数的定位。
需要说明的是,本申请提供的故障代码定位方法用于实现程序的故障定位,该程序烧录于开发系统的单片机,请参阅图1,开发系统还包括外设200,单片机与外设200通信连接,当出现程序故障等情况时,单片机可将相关信息输出至外设200中。
图2示出本申请实施例提供的单片机100的一种示意性结构框图,单片机100包括存储器102、处理器101和通信接口103,该存储器102、处理器101和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
存储器102可用于存储软件程序及模块,如本申请实施例提供的故障代码定位装置对应的程序指令或模块,处理器101通过执行存储在存储器102内的软件程序及模块,从而执行各种功能应用以及数据处理,进而执行本申请实施例提供的故障代码定位方法的步骤。该通信接口103可用于与其他节点设备进行信令或数据的通信。
其中,存储器102可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除可编程只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器101可以是一种集成电路芯片,具有信号处理能力。该处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以理解,图2所示的结构仅为示意,单片机100还可以包括比图1中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。
下面对本申请提供的故障代码定位方法进行示例性说明:
作为一种可选的实现方式,请参阅图3,该方法包括:
S102,执行程序。
S104,判断是否检测到单片机触发中断,如果是,则执行S106,如果否,则返回执行S102。
S106,从所述多个寄存器中确定出中断对应的目标寄存器;并从所述目标寄存器中输出中断对应的地址至所述外设中。
S108,判断所述目标寄存器的类型是否为设定类型。如果是,则执行S110,如果否,则执行S112。
S110,依据所述外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将所述目标寄存器中的地址重置。
S112,生成故障信号,并将所述故障信号输出至所述外设中。
其中,本申请提供的开发系统中,包括单片机与外设,单片机与外设通信连接。本申请并不对单片机的具体型号进行限定,示例性地,选用型号为STM32 Cortex-M4 MCU的单片机;同时,工程师可以通过外设直接获取信息,示例性地,外设可以选用显示器。
在将单片机的运行程序烧录至单片机时,可以同时烧录检测代码段,检测代码段能够对中断进行检测,并在单片机系统触发错误中断后,进入错误中断处理流程。
即在系统上电开始后,先运行启动文件中的程序,在这部分程序中,添加了监测代码段并启动该监测代码。在程序正常运行阶段,监测代码段会实时进行监测,若运行过程中的未触发中断,则程序维持执行;若单片机系统出现错误则会触发错误中断,此时监测代码段监测到中断发生后,进入错误中断处理流程。
在进入错误中断处理流程后,首先重新初始化系统时钟;该时钟可以是外部时钟也可以是内部时钟,示例性地,本申请采用内部时钟,即在进入错误中断处理流程后,使能单片机内部自带晶振。
并且,当程序正常运行时,单片机可以不输出外设,而在进入错误中断处理流程后,则初始化输出外设,该外设可以是单片机的任何输出外设,例如可以为CAN外设,并从目标寄存器中输出中断对应的地址至外设中。
需要说明的是,对于单片机而言,其内部包括有多种寄存器,例如,常见的寄存器包括:
通用寄存器(General Purpose Register),用于存储临时数据和中间结果;状态寄存器(Status Register),用于存储处理器的状态信息,如零标志、进位标志、溢出标志等;程序计数器(Program Counter),用于存储当前指令的地址,指示下一条将要执行的指令的位置;堆栈指针寄存器(Stack Pointer Register),用于指示当前堆栈的位置,用于处理函数调用和中断处理;数据寄存器(Data Register):用于存储数据,常用于输入输出操作;地址寄存器(Address Register):用于存储内存地址或外设地址;控制寄存器(ControlRegister):用于存储各种控制位,如时钟控制、中断使能等。
而对于每一种型号的单片机,其实际运行过程中用到的处理器核心中寄存器类型存在不同。例如,如图4所示,为处理器核心包括的寄存器类型,其中,通用寄存器为R0-R12共13个寄存器,该部分寄存器主要用来存放下一次程序需要执行的代码地址。除了通用寄存器,处理器核心还包括其余的多种寄存器,例如连接寄存器、控制寄存器等。
然而,对于每种型号的单片机而言,基于其堆栈特性,可能只使用了其中部分的寄存器,而并非全部的寄存器,例如,基于型号为STM32 Cortex-M4 MCU单片机的内核的堆栈特性,处理器核心寄存器只使用了R0/R1/R2/R3/R12/LR/PC/xPSR等8个寄存器,其余寄存器则并未被使用。
因此,可以通过获取单片机的型号,并依据单片机的型号确定出对应的寄存器作为每个寄存器的类型,进而可以确定出中断对应的目标寄存器,目标寄存器为处理器核心寄存器。例如,对于STM32 Cortex-M4 MCU单片机,选取R0/R1/R2/R3/R12/LR/PC/xPSR等8个寄存器作为目标寄存器。通过该方式,可以在发生中断后,直接从指定的目标寄存器中输出地址至外设,其处理速度可以更快。
当单片机程序运行过程中触发中断时,则监测代码段会从目标寄存器中输出中断对应的地址至外设中。
在实际应用中,当触发中断时,该程序故障可能不会影响整段程序的运行,或者,当出现该程序故障时,该程序故障的部分可能已经导致剩余的程序也无法运行。基于此,在触发中断时,需要从多个寄存器中确定出中断对应的目标寄存器。
需要说明的是,本申请在确定目标寄存器时,首先获取单片机的型号,进而可以确定出该单片机中,所有寄存器的种类。接着依据单片机的型号从多个寄存器中确定目标寄存器,并从目标寄存器中输出中断对应的地址至所述外设中。
在此基础上,还需要判断目标寄存器的类型是否为设定类型;如果是,则依据外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将目标寄存器中的地址重置;如果否,则生成故障信号,并将故障信号输出至外设中。
其中,设定类型指在出现故障后,不会影响程序的后续进行的类型,例如,当寄存器的类型为程序状态寄存器、连接寄存器等,则在出现程序故障后,程序还可以继续运行。具体地,可以利用外设中接收到的地址与map文件进行比较,进而定位出故障函数,同时,将目标寄存器中的地址重置,例如重置为上一状态的地址,或者重置为指定地址,使得程序可以继续运行。在该实现方式上,当程序执行完成后,可以确定出该程序故障的次数以及位置,实现对整个程序的测试。
而当目标寄存器为设定外的寄存器型号时,则表示此时无法继续运行,因此系统会生成故障信号,并将所述故障信号输出至外设中。此时,用户可以通过外设看到故障信号以及中断对应的地址。
由于在对单片机烧录程序时,可能出现烧录错误的情况,因此,在S106的步骤之前,该方法还包括:
S1051,获取目标寄存器的首地址,并判断所述首地址是否位于预设的地址范围内;如果是,则执行S1052,如果否,则执行S1053。
S1052,如果是,则执行从目标寄存器中输出中断对应的地址至外设中的步骤;
S1053,如果否,则将输出变量置零。
其中,每个型号的单片机对应一个特定的地址范围;例如,对于A型号的单片机,其地址范围可能是0~200;对于B型号的单片机,其地址范围可能是210~400,以此类推。
当单片机触发中断后,可以先获取目标寄存器的首地址,然后判断首地址是否位于预设的地址范围内,该预设的地址范围即为该单片机型号对应的地址范围,若处于该地址范围内,则表征烧录的程序为该单片机的程序,程序内的某个函数可能出现故障导致中断。若未处于该地址范围内,则表示烧录的程序可能并非为该型号单片机的程序,例如,将A型号的单片机的程序烧录进了B型号的单片机。此时,检测代码段会将输出变量置零,表明该次程序故障,无法进行故障代码定位,此时,对于外设而言,不会输出相关数据。
在此基础上,作为一种可选的实现方式,由于每种单片机型号均对应一个地址范围,因此也可以确定此时目标寄存器的首地址所处的目标地址范围,然后根据目标地址范围确定程序对应的单片机型号,进而确定出烧录的程序具体为哪种型号的单片机的程序,便于工程师反推在操作过程中的具体哪个环节出现问题。
需要说明的是,当判定首地址位于预设的地址范围内时,也是通过将目标寄存器中地址上的数据写入输出变量中,然后通过输出变量向外设输出变量信息。
在一种实现方式中,在单片机中还包括故障类型寄存器,在当检测到单片机触发中断时,还可以将故障类型寄存器中的数据输出至外设中,具体地,可以将故障寄存器的数据写入输出变量中,然后通过外设输出相应的变量信息,进而不仅能够实现故障程序的定位,而且能够定位出具体的故障类型。
当目标寄存器的类型为设定类型,可根据地址与源代码的map文件进行匹配,进而定位出对应的故障代码函数,其中,单片机的map文件是单片机程序编译后生成的链接文件,它包含了程序的地址映射信息,可以用来查看程序中各个函数和变量在内存中的地址分布情况。通过map文件,可以了解程序的内存占用情况,帮助优化程序的内存使用和性能。如图5所示,map文件中包括函数首地址、函数名称、函数大小以及函数所在文件等信息,由图5可知,不同函数的首地址不同,且地址区间不同,函数大小也不同,且每个函数均对应一个首地址。
在具体确定过程中,可以先确定发生中断的地址在map文件中所处的目标地址区间,然后依据目标地址区间确定故障代码函数。例如,当发生系统错误时,先获取到错误地址,如错误地址 = 0x0800a4ff,接着,与源文件进行匹配,匹配的具体方式可以根据已知“错误地址”查找map文件中的“函数首地址”+“函数大小”范围来确定问题代码片段,例如,函数A的首地址 = 0x0800a4fd,函数大小 = 608,函数对应的地址范围是:0x0800a4fd~0x0800ab05;上述的错误地址 = 0x0800a4f,位于0x0800a4fd~0x0800ab05的地址范围区间内,因此可以确定出函数A即为故障代码函数。之后,可以根据函数所在的文件确定出故障代码段,工程师只需分析这个代码片段即可查处具体问题原因,实现了故障代码函数的快速定位。
基于上述实现方式,本申请实施例还提供了一种故障代码定位装置,用于实现程序的故障定位,程序烧录于开发系统的单片机,开发系统还包括外设,单片机与外设通信连接,该装置包括:
数据处理单元,用于在检测到所述单片机触发中断情况下,从所述多个寄存器中确定出中断对应的目标寄存器;并从所述目标寄存器中输出中断对应的地址至所述外设中;
判断单元,用于判断所述目标寄存器的类型是否为设定类型;
数据处理单元,还用于在标寄存器的类型为设定类型时,依据所述外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将所述目标寄存器中的地址重置;
数据处理单元,还用于在标寄存器的类型为非设定类型时,生成故障信号,并将所述故障信号输出至所述中断中。
综上所述,本申请提供了一种故障代码定位方法及相关装置,该方法用于实现程序的故障定位,程序烧录于开发系统的单片机,该单片机包括多个寄存器,开发系统还包括外设,单片机与外设通信连接,在检测到单片机触发中断情况下,从多个寄存器中确定出中断对应的目标寄存器;并从目标寄存器中输出中断对应的地址至外设中;判断目标寄存器的类型是否为设定类型;如果是,则依据外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将目标寄存器中的地址重置;如果否,则生成故障信号,并将故障信号输出至中断中。由于本申请中,在检测到单片机触发中断时,会直接将目标寄存器中的地址输出至外设中,并且可以依据地址从map文件中确定出故障代码函数,实现了自动化确定出故障代码的位置,降低了工程师的工作量的效果。并且,还可以依据中断对应的不同寄存器的类型,控制故障代码是否继续运行,进而在出现简易故障时,能够使烧录的程序继续跑完,进而提升了程序验证的快捷性。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中显示了根据本申请实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,附图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。
也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,本申请附图中的每个方框、以及方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (7)

1.一种故障代码定位方法,其特征在于,用于实现程序的故障定位,所述程序烧录于开发系统的单片机,所述单片机包括多个寄存器,所述开发系统还包括外设,所述单片机与所述外设通信连接,所述方法包括:
在检测到所述单片机触发中断情况下,从所述多个寄存器中确定出中断对应的目标寄存器;
获取所述目标寄存器的首地址,并判断所述首地址是否位于预设的地址范围内;其中,每个型号的单片机对应一个特定的地址范围;
如果否,则将输出变量置零;
确定所述目标寄存器的首地址所处的目标地址范围;
依据所述目标地址范围确定程序对应的单片机型号;
如果是,则将所述目标寄存器中地址上的数据写入所述输出变量中,并通过所述输出变量向所述外设输出变量信息;
判断所述目标寄存器的类型是否为设定类型;其中,设定类型指在出现故障后,不会影响程序的后续进行的类型;
如果是,则依据所述外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将所述目标寄存器中的地址重置;
如果否,则生成故障信号,并将所述故障信号输出至所述外设中。
2.如权利要求1所述的故障代码定位方法,其特征在于,从所述多个寄存器中确定出中断对应的目标寄存器的步骤包括:
获取所述单片机的型号;
依据所述单片机的型号从多个寄存器中确定所述目标寄存器。
3.如权利要求1所述的故障代码定位方法,其特征在于,所述单片机中还包括故障类型寄存器,在检测到单片机触发中断时,所述方法还包括:
将故障类型寄存器中的数据输出至所述外设中。
4.如权利要求1所述的故障代码定位方法,其特征在于,依据所述外设中获取的地址与源代码的map文件进行匹配的步骤包括:
确定所述地址在所述map文件中所处的目标地址区间;
依据所述目标地址区间确定故障代码函数。
5.一种故障代码定位装置,其特征在于,用于执行如权利要求1至4任一项所述的故障代码定位方法,并用于实现程序的故障定位,所述程序烧录于开发系统的单片机,所述单片机包括多个寄存器,所述开发系统还包括外设,所述单片机与所述外设通信连接,所述装置包括:
数据处理单元,用于在检测到所述单片机触发中断情况下,从所述多个寄存器中确定出中断对应的目标寄存器;并从所述目标寄存器中输出中断对应的地址至所述外设中;
判断单元,用于判断所述目标寄存器的类型是否为设定类型;
数据处理单元,还用于在标寄存器的类型为设定类型时,依据所述外设中获取的地址与源代码的map文件进行匹配,以定位对应的故障代码函数,并将所述目标寄存器中的地址重置;
数据处理单元,还用于在标寄存器的类型为非设定类型时,生成故障信号,并将所述故障信号输出至所述中断中。
6.一种单片机,其特征在于,包括:
存储器,用于存储一个或多个程序;
处理器;
当所述一个或多个程序被所述处理器执行时,实现如权利要求1-4中任一项所述的方法。
7.一种可读存储介质,其上存储有单片机程序,其特征在于,该单片机程序被处理器执行时实现如权利要求1-4中任一项所述方法。
CN202410226467.1A 2024-02-29 2024-02-29 一种故障代码定位方法及相关装置 Active CN117806870B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410226467.1A CN117806870B (zh) 2024-02-29 2024-02-29 一种故障代码定位方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410226467.1A CN117806870B (zh) 2024-02-29 2024-02-29 一种故障代码定位方法及相关装置

Publications (2)

Publication Number Publication Date
CN117806870A CN117806870A (zh) 2024-04-02
CN117806870B true CN117806870B (zh) 2024-05-28

Family

ID=90434928

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410226467.1A Active CN117806870B (zh) 2024-02-29 2024-02-29 一种故障代码定位方法及相关装置

Country Status (1)

Country Link
CN (1) CN117806870B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776179A (zh) * 2016-12-17 2017-05-31 上海与德信息技术有限公司 电子器件故障的自动检测方法及装置
CN114661606A (zh) * 2022-03-31 2022-06-24 龙芯中科技术股份有限公司 程序调试方法、装置、电子设备及存储介质
CN114691481A (zh) * 2020-12-30 2022-07-01 龙芯中科(成都)技术有限公司 异常定位方法、装置及可读存储介质
CN114706702A (zh) * 2022-02-28 2022-07-05 中国航发控制系统研究所 一种基于fadec操作系统的故障快速定位方法
WO2022142927A1 (zh) * 2020-12-30 2022-07-07 中兴通讯股份有限公司 一种基于规则的故障分析方法、装置、设备和存储介质
CN115756935A (zh) * 2022-12-06 2023-03-07 中科酷原科技(武汉)有限公司 嵌入式软件系统的异常故障定位方法、装置及设备
CN116521411A (zh) * 2023-03-27 2023-08-01 广东保伦电子股份有限公司 一种检测嵌入式设备程序错误并复位的方法、设备及介质
CN117349183A (zh) * 2023-11-16 2024-01-05 杭州安恒信息技术股份有限公司 一种异常代码定位方法、装置、设备及存储介质
WO2024012094A1 (zh) * 2022-07-09 2024-01-18 超聚变数字技术有限公司 故障处理方法及计算设备
CN117472659A (zh) * 2023-08-30 2024-01-30 白盒子(上海)微电子科技有限公司 一种排查soc usb接口故障的方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776179A (zh) * 2016-12-17 2017-05-31 上海与德信息技术有限公司 电子器件故障的自动检测方法及装置
CN114691481A (zh) * 2020-12-30 2022-07-01 龙芯中科(成都)技术有限公司 异常定位方法、装置及可读存储介质
WO2022142927A1 (zh) * 2020-12-30 2022-07-07 中兴通讯股份有限公司 一种基于规则的故障分析方法、装置、设备和存储介质
CN114706702A (zh) * 2022-02-28 2022-07-05 中国航发控制系统研究所 一种基于fadec操作系统的故障快速定位方法
CN114661606A (zh) * 2022-03-31 2022-06-24 龙芯中科技术股份有限公司 程序调试方法、装置、电子设备及存储介质
WO2024012094A1 (zh) * 2022-07-09 2024-01-18 超聚变数字技术有限公司 故障处理方法及计算设备
CN115756935A (zh) * 2022-12-06 2023-03-07 中科酷原科技(武汉)有限公司 嵌入式软件系统的异常故障定位方法、装置及设备
CN116521411A (zh) * 2023-03-27 2023-08-01 广东保伦电子股份有限公司 一种检测嵌入式设备程序错误并复位的方法、设备及介质
CN117472659A (zh) * 2023-08-30 2024-01-30 白盒子(上海)微电子科技有限公司 一种排查soc usb接口故障的方法
CN117349183A (zh) * 2023-11-16 2024-01-05 杭州安恒信息技术股份有限公司 一种异常代码定位方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
嵌入式可编程安全相关系统软件故障控制措施及算法研究;刘阳;刘晓东;孙首群;牛道森;;计算机应用与软件;20150115(第01期);第235-239页 *

Also Published As

Publication number Publication date
CN117806870A (zh) 2024-04-02

Similar Documents

Publication Publication Date Title
US8756460B2 (en) Test selection based on an N-wise combinations coverage
US8386851B2 (en) Functional coverage using combinatorial test design
US8397104B2 (en) Creation of test plans
FI87704C (fi) Foerfarande och anordning foer sjaelvtestning av flyttalsacceleratorprocessorer
US20080270842A1 (en) Computer operating system handling of severe hardware errors
CN110297737B (zh) 多路输出芯片的故障诊断测试方法及装置
US11422916B2 (en) Usage amount monitoring method and monitoring unit of electronic control unit for vehicle
WO2013159495A1 (zh) 性能瓶颈诊断方法和设备
CN111858290B (zh) 用于检测目标代码的内存泄漏路径的方法和设备
CN117806870B (zh) 一种故障代码定位方法及相关装置
CN110888809B (zh) 一种测试任务的风险预测方法及装置
CN116756037A (zh) 异常代码定位系统、方法、设备及计算机可读存储介质
CN112148590A (zh) 一种代码覆盖率的确定方法、装置及设备
US10990685B2 (en) Static software analysis tool approach to determining breachable common weakness enumerations violations
CN115756935A (zh) 嵌入式软件系统的异常故障定位方法、装置及设备
US7415560B2 (en) Method of automatically monitoring computer system debugging routine
CN102279797A (zh) 一种检测内存泄漏的方法及系统
CN102023916B (zh) 电脑系统的检测方法
US20070168978A1 (en) Computer program code debugging method and system
CN110399258B (zh) 一种服务器系统的稳定性测试方法、系统及装置
JP6731366B2 (ja) ソースコード検証システム
US8489927B2 (en) Device for use in inspecting a CPU and method thereof
US20140236564A1 (en) Coverage model and measurements for partial instrumentation
TW201818271A (zh) 程式能力評估系統與程式能力評估方法
CN107291613B (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