CN116521411A - 一种检测嵌入式设备程序错误并复位的方法、设备及介质 - Google Patents

一种检测嵌入式设备程序错误并复位的方法、设备及介质 Download PDF

Info

Publication number
CN116521411A
CN116521411A CN202310312230.0A CN202310312230A CN116521411A CN 116521411 A CN116521411 A CN 116521411A CN 202310312230 A CN202310312230 A CN 202310312230A CN 116521411 A CN116521411 A CN 116521411A
Authority
CN
China
Prior art keywords
program
embedded
equipment
module
error report
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
CN202310312230.0A
Other languages
English (en)
Other versions
CN116521411B (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.)
Guangdong Baolun Electronics Co ltd
Original Assignee
Guangdong Baolun Electronics 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 Guangdong Baolun Electronics Co ltd filed Critical Guangdong Baolun Electronics Co ltd
Priority to CN202310312230.0A priority Critical patent/CN116521411B/zh
Publication of CN116521411A publication Critical patent/CN116521411A/zh
Application granted granted Critical
Publication of CN116521411B publication Critical patent/CN116521411B/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/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明涉及嵌入式纠错领域,具体公开了一种检测嵌入式设备程序错误并复位的方法、设备及介质,包括在嵌入式设备中,设置用于存放错误报告的数据结构,作为错误报告缓冲区;通过数据接口与嵌入式设备通信相连,检测嵌入式设备是否进入硬故障状态;如是,则将外设及外设数据、变量及其变量数据,函数及其返回地址、函数位于嵌入式设备程序的位置存入错误报告缓冲区存入错误报告缓冲区,储存为错误报告并发送;侦听是否有更正程序被反馈;如是,将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备。本发明在嵌入式设备发生故障后,获取完整的错误信息保存并发送给处理终端,能够更方便的定位故障代码位置,极大的提升了故障定位的效率及准确性。

Description

一种检测嵌入式设备程序错误并复位的方法、设备及介质
技术领域
本发明涉及嵌入式纠错领域,尤其涉及一种检测嵌入式设备程序错误并复位的方法、设备及介质。
背景技术
随着现代信息技术的发展,单片机以及嵌入式技术正在飞速的改变人们的生产与生活方式。特别是在工业控制领域,通过单片机执行工控程序实现设备的自动化生产,为企业的生产效率提高与人力资源的节约提供了最重要的支持。
对于嵌入式设备来说,当出现硬故障(hard fault)导致死机情况,传统的解决方法是将嵌入式设备连接上仿真器,一步步单步调试,定位到具体的错误代码,再去猜测、排除、推敲错误原因,并且可以通过故障寄存器信息来定位故障原因及故障代码地址,虽然这样能解决一部分问题,但是重复的、繁琐的检查操作与分析过程会耽误大量时间。而且对于一些复杂问题,只依靠代码地址仍然难以判断错误原因或源头,导致问题无法解决,只能依靠更费时费力的还原错误现场的函数调用逻辑关系。
另外,在某些情况下,很多嵌入式产品的真机调试时必须断开仿真器,导致无法直接排查故障。有时,嵌入式设备的问题确实存在,但是极难被重现,或者重现概率低,或重现耗时过长,导致排查故障的周期过长。当嵌入式设备的程序代码量成千上万,但日志确没检测到错误代码,导致难以查找故障原因。而当嵌入式设备的故障问题一直存在,而无法得到快速解决,会对企业造成重大的损失。
发明内容
为了克服上述问题,本发明提供一种检测嵌入式设备程序错误并复位的方法、设备及介质。
本发明提供了一种检测嵌入式设备程序错误并复位的方法,包括步骤如下:
在嵌入式设备中,设置用于存放错误报告的数据结构,作为错误报告缓冲区,并建立外设列表和变量列表;其中,所述外设列表是记录要监测的外设的第一寄存器,变量列表是记录要监测的变量名的第二寄存器;
通过数据接口与所述嵌入式设备通信相连;
检测所述嵌入式设备是否进入硬故障状态;
如否,持续检测所述嵌入式设备;
如是,依据外设列表获取外设在所述嵌入式设备的寄存器中保存的外设数据,依据变量列表获取各变量名对应的变量数据,解析堆栈数据获取嵌入式设备程序在运行的函数以及函数的返回地址;
将全部外设及其对应的外设数据、全部变量名及其对应的变量数据,以及函数及其对应的返回地址存入错误报告缓冲区,储存为错误报告;
发送所述错误报告以及所述函数位于嵌入式设备程序的位置至处理终端;其中,所述处理终端用于依据所述错误报告以及所述函数位于嵌入式设备程序的位置生成处理终端用于依据所述错误报告以及所述函数位于嵌入式设备程序的位置生成并反馈更正程序;
侦听是否有更正程序被反馈;
如是,将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备;
否则,持续侦听。
作为优选地,所述错误报告缓冲区是FIFO数据结构。
优选地,所述通过数据接口与所述嵌入式设备通信相连,具体为:通过转接装置与所述嵌入式设备的数据接口通信相连,所述转接装置与处理终端数据互联。
优选地,所述发送所述错误报告以及所述函数位于嵌入式设备程序的位置至处理终端,具体为:所述转接装置读取所述嵌入式设备的错误报告,同时将错误报告发送至处理终端,处理终端将错误报告存档。
优选地,所述侦听是否有更正程序被反馈;如是,将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备;否则,持续侦听;具体为:
所述转接装置侦听是否有更正程序从所述处理终端送达;
如是,所述转接装置接收所述处理终端发出的更正程序,并将更正程序发送至所述嵌入式设备;复位嵌入式设备;
否则,持续侦听。
优选地,所述设备代码反汇编程序储存并运行在所述嵌入式设备、所述转接装置或所述处理终端其中的任意一个之上。
优选地,所述转接装置设有一个MCU、至少一个网络接口和至少一个串口;所述处理终端是服务器,所述转接装置通过通信网络与所述处理终端数据互联。
优选地,所述将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备,具体为:
读取更正程序对应的指定代码段起始地址;
将更正程序覆盖到起始地址对应的flash中;
检测是否覆盖成功;
如是,发送更正成功信号,并复位嵌入式设备;
否则,返回“检测所述嵌入式设备是否进入硬故障状态”步骤。
本发明还提供了一种检测嵌入式设备程序错误并复位的设备,包括:架构模块、通信模块、检测模块、第一循环模块、数据采集模块、错误报告模块、寻址模块、读取模块、侦听模块、更正模块和第二循环模块;
所述架构模块用于在嵌入式设备中,设置用于存放错误报告的数据结构,作为错误报告缓冲区,并建立外设列表和变量列表;其中,所述外设列表是记录要监测的外设的第一寄存器,变量列表是记录要监测的变量名的第二寄存器;
所述通信模块用于通过数据接口与所述嵌入式设备通信相连;
所述检测模块用于检测所述嵌入式设备是否进入硬故障状态;
所述第一循环模块用于如检测模块结果为否,持续检测所述嵌入式设备;
所述数据采集模块用于如检测模块结果为是,则依据外设列表获取外设在所述嵌入式设备的寄存器中保存的外设数据,依据变量列表获取各变量名对应的变量数据,解析堆栈数据获取嵌入式设备程序在运行的函数以及函数的返回地址;
所述错误报告模块用于将全部外设及其对应的外设数据、全部变量名及其对应的变量数据,以及函数及其对应的返回地址存入错误报告缓冲区,储存为错误报告;
所述寻址模块依据所述函数以及所述返回地址,通过设备代码反汇编程序,对返回地址配对获得所述函数位于嵌入式设备程序的位置;其中,所述设备代码反汇编程序是在嵌入式设备程序编译时候生成的程序,其中包含有各个函数的返回地址及其在嵌入式设备程序的位置;
所述读取模块用于发送所述错误报告以及所述函数位于嵌入式设备程序的位置至处理终端;其中,所述处理终端用于依据所述错误报告以及所述函数位于嵌入式设备程序的位置生成并反馈更正程序;
所述侦听模块用于侦听是否有更正程序被反馈;
所述更正模块用于如侦听模块结果为是,将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备;
所述第二循环模块用于如侦听模块结果为是否,持续侦听。
本发明提供了一种终端设备,包括处理器和存储装置,所述存储装置用于存储一个或多个程序;当所述一个或多个程序被所述处理器执行时,所述处理器实现上述检测嵌入式设备程序错误并复位的方法。
本发明提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述检测嵌入式设备程序错误并复位的方法。
本发明的有益效果是:
(1)通过在嵌入式设备发生故障后,获取完整的错误信息保存并发送给处理终端,相比传统的仿真器定位故障,能够更方便的定位故障代码位置,极大的提升了故障定位的效率及准确性。
(2)通过数据接口与嵌入式设备通信进行维护,可以远程进行操作维护,极大的提升了检测嵌入式设备程序错误并复位的效率,大大降低了企业运维的维护成本。
附图说明
下文将结合说明书附图对本发明进行进一步的描述说明,其中:
图1为本发明其中一个实施例的方法流程图;
图2为本发明另一个实施例的设备连接关系图;
图3为本发明另一个实施例的错误报告数据结构示意图;
图4为本发明另一个实施例的函数内存分布示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,作为本发明的其中一个实施,公开了一种检测嵌入式设备程序错误并复位的方法,包括:
S1、在嵌入式设备中,设置用于存放错误报告的数据结构,作为错误报告缓冲区,并建立外设列表和变量列表;其中,外设列表是记录要监测的外设的第一寄存器,变量列表是记录要监测的变量名的第二寄存器;
S2、通过数据接口与嵌入式设备通信相连;
S3、检测嵌入式设备是否进入硬故障状态;
S41、如否,持续检测嵌入式设备;
S42、如是,依据外设列表获取外设在嵌入式设备的寄存器中保存的外设数据,依据变量列表获取各变量名对应的变量数据,解析堆栈数据获取嵌入式设备程序在运行的函数以及函数的返回地址;
S5、将全部外设及其对应的外设数据、全部变量名及其对应的变量数据,以及函数及其对应的返回地址存入错误报告缓冲区,储存为错误报告;
S6、依据函数以及返回地址,通过设备代码反汇编程序,对返回地址配对获得函数位于嵌入式设备程序的位置;其中,设备代码反汇编程序是在嵌入式设备程序编译时候生成的程序,其中包含有各个函数的返回地址及其在嵌入式设备程序的位置;
S7、发送错误报告以及函数位于嵌入式设备程序的位置至处理终端;其中,处理终端用于依据错误报告以及函数位于嵌入式设备程序的位置生成并反馈更正程序;
S8、侦听是否有更正程序被反馈;
S91、如是,将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备;
S92、否则,持续侦听。
本实施例通过数据接口可以直接现实与嵌入式设备通信进行维护,可以远程进行操作维护,极大的提升了检测嵌入式设备程序错误并复位的效率,大大降低了企业运维的维护成本。
在ARM芯片中,存储器空间由低到高分别为片内Flash、片内SRAM、Boot Block、片外存储器、VPB和AHB外设,其中,用户的程序可以存在片内Flash、片内SRAM、片外存储器中。本实施例的嵌入式设备内置程序默认保存在Flash中。
本实施例的错误报告可以为维护人员或者自动纠错程序提供:外设及其对应的外设数据、全部变量名及其对应的变量数据,以及函数及其对应的返回地址的具体信息,相比传统的仿真器定位故障,能够更方便的定位故障代码位置,极大的提升了故障定位的效率及准确性。
本实施例还提供了一种检测嵌入式设备程序错误并复位的设备,包括:架构模块、通信模块、检测模块、第一循环模块、数据采集模块、错误报告模块、寻址模块、读取模块、侦听模块、更正模块和第二循环模块;
架构模块用于在嵌入式设备中,设置用于存放错误报告的数据结构,作为错误报告缓冲区,并建立外设列表和变量列表;其中,外设列表是记录要监测的外设的第一寄存器,变量列表是记录要监测的变量名的第二寄存器;
通信模块用于通过数据接口与嵌入式设备通信相连;
检测模块用于检测嵌入式设备是否进入硬故障状态;
第一循环模块用于如检测模块结果为否,持续检测嵌入式设备;
数据采集模块用于如检测模块结果为是,则依据外设列表获取外设在嵌入式设备的寄存器中保存的外设数据,依据变量列表获取各变量名对应的变量数据,解析堆栈数据获取嵌入式设备程序在运行的函数以及函数的返回地址;
寻址模块依据函数以及返回地址,通过设备代码反汇编程序,对返回地址配对获得函数位于嵌入式设备程序的位置;其中,设备代码反汇编程序是在嵌入式设备程序编译时候生成的程序,其中包含有各个函数的返回地址及其在嵌入式设备程序的位置;
错误报告模块用于将全部外设及其对应的外设数据、全部变量名及其对应的变量数据,以及函数及其对应的返回地址存入错误报告缓冲区,储存为错误报告;
读取模块用于发送错误报告以及函数位于嵌入式设备程序的位置至处理终端;其中,处理终端用于依据错误报告以及函数位于嵌入式设备程序的位置生成并反馈更正程序;
侦听模块用于侦听是否有更正程序被反馈;
更正模块用于如侦听模块结果为是,将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备;
第二循环模块用于如侦听模块结果为是否,持续侦听。
参见图2至图4,是本方案的另一实施例,包括:
嵌入式设备(或简称“设备”),其主控芯片为ARM芯片,内部含有当处于“hardfalut”状态时运行的程序,用于执行上述实施例的方法。
转接装置设有一个MCU、至少一个网络接口和至少一个串口,通过串口与嵌入式设备连接;内部有程序用于检测嵌入式设备是否异常及恢复。
处理终端是服务器,转接装置通过通信网络与处理终端数据互联。在其他实施例中,处理终端还可以是电脑、个人智能终端等设备,通过局域网或者总线接口直接与转接装置相连,进行错误报告的读取与嵌入式程序的更正。
变量列表是记录要监测的变量名的寄存器,设于主控芯片中。
外设列表是记录要监测的外设的寄存器,设于主控芯片中。
错误报告由外设及其对应的外设数据、全部变量名及其对应的变量数据,以及函数及其对应的返回地址组成。
本实施例的错误报告缓冲区采用FIFO数据结构(First Input First Output)简单说就是一个先入先出的双口缓冲器,即第一个进入其内的数据第一个被移出,其中一个口是存储器的输入口,另一个口是存储器的输出口,该数据结构灵活、方便、高效。
本实施例与上述实施例的区别在于,步骤S2的具体实现的分步骤如下:
S21、通过转接装置与嵌入式设备的数据接口通信相连,转接装置与处理终端数据互联;
步骤S7的具体实现的分步骤如下:
S71、转接装置读取嵌入式设备的错误报告,同时将错误报告发送至处理终端,处理终端将错误报告存档。
步骤S8和步骤S91、S92的具体实现的分步骤为:
S81、转接装置侦听是否有更正程序从处理终端送达;
S911、如是,转接装置接收处理终端发出的更正程序,并将更正程序发送至嵌入式设备;复位嵌入式设备;
S921、否则,持续侦听。
优选地,步骤S91中,其具体实现“将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备”的分步骤为:
A1、读取更正程序对应的指定代码段起始地址;
A2、将更正程序覆盖到起始地址对应的flash中;
A3、检测是否覆盖成功;
A41、如是,发送更正成功信号,并复位嵌入式设备;
A42、否则,返回步骤S2。
本方案的设备代码反汇编程序可以储存并运行在嵌入式设备、转接装置或处理终端其中的任意一个之上,即相关程序可以在上述三种设备的任何一种的处理器中执行,只要能获得函数位于嵌入式设备程序的位置并发送至处理终端处即可。由于设备代码反汇编程序通常占用储存空间较大,占用的运算资源较多,因此通常不在嵌入式设备上运行,而在处理终端上运行,可以降低转接装置的硬件需求,节约一定的设备成本。
参见图3,是本实施的错误报告数据结构示意图,即嵌入式设备在运行过程中,进入“hard falut”状态时的嵌入式设备程序的运行数据,其中有外设名为i2c的外设,其寄存器数值如图所示;还有变量名为int a,数值为XX的变量,和变量名为int*b,数值为XX的变量;以及有函数A、B、C,以及其各自对应的函数位置。
上述参数按顺序排列并转成字符串的形式,然后存入设备错误报告缓冲区FIFO中,保存为错误报告。
本实施例数据的获取具体如下:
1,错误报告的“函数及其对应的返回地址”获取:
当设备在“hard falut”状态,函数的信息存放在栈中,假设执行到C函数时出错死机了,并且调用关系是A->B->C,栈中含有A、B、C的返回地址并且按照先后顺序排列,把栈里的返回地址转成字符串的形式然后存入设备错误报告缓冲区FIFO中。
2,错误报告的“函数对应的返回地址”获取:
转接装置含有设备代码反汇编程序,它是在代码编译的时候生成的一个文件,这个文件里面有各个函数内存的地址以及在代码中的位置,当转接装置获得设备发过来的A、B、C的返回地址,通过返回地址的配对即可得出函数位于工程代码的位置。
3,错误报告的“全部外设及其对应的外设数据”获取:
当进入“hard falut”状态后,把外设列表的对应的外设寄存器值存入设备错误报告缓冲区FIFO中。
4,错误报告的“全部变量名及其对应的变量数据”获取:
将变量列表所存的全部变量名称及变量参数转成字符串的形式,存入设备错误报告缓冲区FIFO中;其中,变量列表对应的变量均是存放在数据段的全局变量。
本实施例的检测工作原理解析:
首先,设备与该转接装置是通过串口的连接方式进行通信。
然后,当设备的程序出现跑飞的情况,设备的CPU会进入“hard falut”状态。“hardfalut”状态是ARM芯片硬件或者软件出现异常时就会进入的一种状态,会记录出错时R0-R15寄存器和堆栈数据。设备会根据外设列表、变量列表来获取对应数值存入设备错误报告缓冲区中,并且解析栈来获取函数的返回地址并存入错误报告缓冲区中发送给转接装置。
转接装置解析设备发送来的数据,获得A、B、C的返回地址。转接装置内部含有设备代码反汇编程序,这个文件里面有各个函数内存的地址以及在代码中的位置,通过返回地址的配对即可得出函数位于工程代码的位置;假设执行到C函数时出错死机了,并且调用关系是A->B->C。实际在嵌入式设备的程序执行过程中,其A、B、C函数的执行与其对应寄存器的数据形成步骤,其具体的一个示例如下:
B1、执行到addr1地址的时候,记录函数返回LR寄存器的值为addr1,把A的函数与状态存入栈中,其中包或A函数局部变量和ARM内部寄存器R0-R15;
B2、执行B();
B3、执行到addr2地址的时候,记录函数返回LR寄存器的值为addr2,把B的函数与状态存入栈中,其中包或B函数局部变量和ARM内部寄存器R0-R15;
B4、执行C();
B5、当执行到addr3地址的时候,就会进入hal tfaul t状态,ARM会发生hal tfault中断,进入hal tfaul t中断状态。
此时栈中会存有A、B、C三个函数的状态,如图4所示,每个函数所占用的栈对应一组R0-R15的寄存器空间,其中包括该函数执行完后的返回地址、该函数的局部变量和剩余的其他寄存器。本实施例仅解析函数对应的栈,其他未被函数调用的“其他寄存器”及其分别对应的R0-R15,不在本实施例的调用范围内。
然后转接装置把全部外设及其对应的外设数据、全部变量名及其对应的变量数据,以及函数及其对应的返回地址整合起来得到错误报告。
然后转接装置把错误报告存入内部的Flash中并且把它通过网口把错误信息发送给服务器。
当工程师看到错误报告即可快速判断代码中错误的位置并且修改完可得到应用程序。如果转接装置无法发送给服务器,工程师也可以查看flash的内容推断出代码出错的地方。
本实施例的恢复工作原理解析:
转接装置从服务器中获得应用程序后发送给设备,设备的旧应用程序存放的位置位于flash的代码段中,得到旧程序起始地址后,往这个地址把新的应用程序写入,即可以完成覆盖,最后重新复位即可。
本发明还公开了一种终端设备,包括处理器和存储装置,存储装置用于存储一个或多个程序;当一个或多个程序被处理器执行时,处理器实现上述的检测嵌入式设备程序错误并复位的方法。所称处理器可以是中央处理单元(Central Process ing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Appl icat ion Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所称处理器是测试设备的控制中心,利用各种接口和线路连接整个测试设备的各个部分。
存储装置可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储装置内的计算机程序和/或模块,以及调用存储在存储装置内的数据,实现终端设备的各种功能。存储装置可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储装置可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digi tal,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,检测嵌入式设备程序错误并复位的设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于至少一个计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
需说明的是,以上所描述的设备及装置的实施例仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

Claims (10)

1.一种检测嵌入式设备程序错误并复位的方法,其特征在于,包括:
在嵌入式设备中,设置用于存放错误报告的数据结构,作为错误报告缓冲区,并建立外设列表和变量列表;其中,所述外设列表是记录要监测的外设的第一寄存器,变量列表是记录要监测的变量名的第二寄存器;
通过数据接口与所述嵌入式设备通信相连;
检测所述嵌入式设备是否进入硬故障状态;
如否,持续检测所述嵌入式设备;
如是,依据外设列表获取外设在所述嵌入式设备的寄存器中保存的外设数据,依据变量列表获取各变量名对应的变量数据,解析堆栈数据获取嵌入式设备程序在运行的函数以及函数的返回地址;
将全部外设及其对应的外设数据、全部变量名及其对应的变量数据,以及函数及其对应的返回地址存入错误报告缓冲区,储存为错误报告;
依据所述函数以及所述返回地址,通过设备代码反汇编程序,对返回地址配对获得所述函数位于嵌入式设备程序的位置;其中,所述设备代码反汇编程序是在嵌入式设备程序编译时候生成的程序,其中包含有各个函数的返回地址及其在嵌入式设备程序的位置;
发送所述错误报告以及所述函数位于嵌入式设备程序的位置至处理终端;其中,所述处理终端用于依据所述错误报告以及所述函数位于嵌入式设备程序的位置生成并反馈更正程序;
侦听是否有更正程序被反馈;
如是,将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备;
否则,持续侦听。
2.根据权利要求1所述的一种检测嵌入式设备程序错误并复位的方法,其特征在于,所述错误报告缓冲区是FIFO数据结构。
3.根据权利要求1所述的一种检测嵌入式设备程序错误并复位的方法,其特征在于,所述通过数据接口与所述嵌入式设备通信相连,具体为:
通过转接装置与所述嵌入式设备的数据接口通信相连,所述转接装置与处理终端数据互联。
4.根据权利要求3所述的一种检测嵌入式设备程序错误并复位的方法,其特征在于,所述发送所述错误报告以及所述函数位于嵌入式设备程序的位置至处理终端,具体为:
所述转接装置读取所述嵌入式设备的错误报告,同时将错误报告发送至处理终端,处理终端将错误报告存档。
5.根据权利要求3所述的一种检测嵌入式设备程序错误并复位的方法,其特征在于,所述侦听是否有更正程序被反馈;如是,将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备;否则,持续侦听;具体为:
所述转接装置侦听是否有更正程序从所述处理终端送达;
如是,所述转接装置接收所述处理终端发出的更正程序,并将更正程序发送至所述嵌入式设备;复位嵌入式设备;
否则,持续侦听。
6.根据权利要求3所述的一种检测嵌入式设备程序错误并复位的方法,其特征在于,所述转接装置设有一个MCU、至少一个网络接口和至少一个串口;所述处理终端是服务器,所述转接装置通过通信网络与所述处理终端数据互联。
7.根据权利要求3所述的一种检测嵌入式设备程序错误并复位的方法,其特征在于,所述设备代码反汇编程序储存并运行在所述嵌入式设备、所述转接装置或所述处理终端其中的任意一个之上。
8.根据权利要求1所述的一种检测嵌入式设备程序错误并复位的方法,其特征在于,所述将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备,具体为:
读取更正程序对应的指定代码段起始地址;
将更正程序覆盖到起始地址对应的flash中;
检测是否覆盖成功;
如是,发送更正成功信号,并复位嵌入式设备;
否则,返回“检测所述嵌入式设备是否进入硬故障状态”步骤。
9.一种检测嵌入式设备程序错误并复位的设备,其特征在于,包括:架构模块、通信模块、检测模块、第一循环模块、数据采集模块、错误报告模块、寻址模块、读取模块、侦听模块、更正模块和第二循环模块;
所述架构模块用于在嵌入式设备中,设置用于存放错误报告的数据结构,作为错误报告缓冲区,并建立外设列表和变量列表;其中,所述外设列表是记录要监测的外设的第一寄存器,变量列表是记录要监测的变量名的第二寄存器;
所述通信模块用于通过数据接口与所述嵌入式设备通信相连;
所述检测模块用于检测所述嵌入式设备是否进入硬故障状态;
所述第一循环模块用于如检测模块结果为否,持续检测所述嵌入式设备;
所述数据采集模块用于如检测模块结果为是,则依据外设列表获取外设在所述嵌入式设备的寄存器中保存的外设数据,依据变量列表获取各变量名对应的变量数据,解析堆栈数据获取嵌入式设备程序在运行的函数以及函数的返回地址;
所述错误报告模块用于将全部外设及其对应的外设数据、全部变量名及其对应的变量数据,以及函数及其对应的返回地址存入错误报告缓冲区,储存为错误报告;
所述寻址模块依据所述函数以及所述返回地址,通过设备代码反汇编程序,对返回地址配对获得所述函数位于嵌入式设备程序的位置;其中,所述设备代码反汇编程序是在嵌入式设备程序编译时候生成的程序,其中包含有各个函数的返回地址及其在嵌入式设备程序的位置;
所述读取模块用于发送所述错误报告以及所述函数位于嵌入式设备程序的位置至处理终端;其中,所述处理终端用于依据所述错误报告以及所述函数位于嵌入式设备程序的位置生成处理终端用于依据所述错误报告以及所述函数位于嵌入式设备程序的位置生成并反馈更正程序;
所述侦听模块用于侦听是否有更正程序被反馈;
所述更正模块用于如侦听模块结果为是,将更正程序覆盖嵌入式设备的原程序,并复位嵌入式设备;
所述第二循环模块用于如侦听模块结果为是否,持续侦听。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至8中任意一项所述的检测嵌入式设备程序错误并复位的方法。
CN202310312230.0A 2023-03-27 2023-03-27 一种检测嵌入式设备程序错误并复位的方法、设备及介质 Active CN116521411B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310312230.0A CN116521411B (zh) 2023-03-27 2023-03-27 一种检测嵌入式设备程序错误并复位的方法、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310312230.0A CN116521411B (zh) 2023-03-27 2023-03-27 一种检测嵌入式设备程序错误并复位的方法、设备及介质

Publications (2)

Publication Number Publication Date
CN116521411A true CN116521411A (zh) 2023-08-01
CN116521411B CN116521411B (zh) 2023-11-17

Family

ID=87394845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310312230.0A Active CN116521411B (zh) 2023-03-27 2023-03-27 一种检测嵌入式设备程序错误并复位的方法、设备及介质

Country Status (1)

Country Link
CN (1) CN116521411B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117806870A (zh) * 2024-02-29 2024-04-02 双一力(宁波)电池有限公司 一种故障代码定位方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140143615A1 (en) * 2011-07-15 2014-05-22 Toshikazu Ohwada Embedded apparatus, program generation apparatus, and program
CN111984452A (zh) * 2020-08-26 2020-11-24 网易(杭州)网络有限公司 程序故障检测方法、装置、电子设备以及存储介质
CN112860473A (zh) * 2021-04-27 2021-05-28 武汉深之度科技有限公司 程序运行错误时定位源代码的方法、装置及计算设备
CN113076213A (zh) * 2021-03-30 2021-07-06 山东英信计算机技术有限公司 一种优化系统管理中断处理硬件错误时间的方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140143615A1 (en) * 2011-07-15 2014-05-22 Toshikazu Ohwada Embedded apparatus, program generation apparatus, and program
CN111984452A (zh) * 2020-08-26 2020-11-24 网易(杭州)网络有限公司 程序故障检测方法、装置、电子设备以及存储介质
CN113076213A (zh) * 2021-03-30 2021-07-06 山东英信计算机技术有限公司 一种优化系统管理中断处理硬件错误时间的方法及系统
CN112860473A (zh) * 2021-04-27 2021-05-28 武汉深之度科技有限公司 程序运行错误时定位源代码的方法、装置及计算设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117806870A (zh) * 2024-02-29 2024-04-02 双一力(宁波)电池有限公司 一种故障代码定位方法及相关装置
CN117806870B (zh) * 2024-02-29 2024-05-28 双一力(宁波)电池有限公司 一种故障代码定位方法及相关装置

Also Published As

Publication number Publication date
CN116521411B (zh) 2023-11-17

Similar Documents

Publication Publication Date Title
US6167358A (en) System and method for remotely monitoring a plurality of computer-based systems
US6944796B2 (en) Method and system to implement a system event log for system manageability
CN109408338B (zh) 抓取NVME硬盘trace的方法、装置、设备及系统
CN116521411B (zh) 一种检测嵌入式设备程序错误并复位的方法、设备及介质
CN105183575A (zh) 处理器故障的诊断方法、装置及系统
CN109471763B (zh) 抓取NVME硬盘trace的方法、装置、设备及系统
CN115658373B (zh) 基于服务器的内存处理方法和装置、处理器及电子设备
CN115756935A (zh) 嵌入式软件系统的异常故障定位方法、装置及设备
CN115599617B (zh) 总线检测方法、装置、服务器及电子设备
CN114003419A (zh) 一种基于oses实现内存ras特性自动测试的方法、系统及装置
CN111143138A (zh) 一种PCIe Bus总线故障定位方法、系统、终端及存储介质
CN117873771B (zh) 一种系统宕机处理方法、装置、设备、存储介质及服务器
CN114253846B (zh) 自动化测试异常定位方法、装置、设备及可读存储介质
CN111767182B (zh) Ssd失效分析方法、装置、计算机设备及存储介质
CN113886165B (zh) 一种固件诊断功能的验证方法、装置、设备及可读介质
CN118445098A (zh) 单片机的故障检测方法、装置、电子设备及存储介质
CN116893928A (zh) 故障内存的监管方法、系统、终端及存储介质
CN114675991A (zh) 一种实现日志有效定位的方法、系统、设备和存储介质
JPH03135651A (ja) メッセージ出力方法
CN118550747A (zh) 一种PCIe致命错误的快速定位方法、系统、电子设备及介质
CN116489001A (zh) 交换机故障诊断及恢复方法、装置、交换机及存储介质
CN118503106A (zh) 一种芯片验证方法及系统
CN116680170A (zh) 测试方法和计算设备
CN116431400A (zh) 基于fpga的调试控制方法、装置、计算机设备和存储介质
CN112925700A (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