一种软件错误现场定位及处理的方法及装置与流程

文档序号:13332056阅读:266来源:国知局
一种软件错误现场定位及处理的方法及装置与流程

本发明涉及嵌入式系统技术领域,特别涉及一种软件错误现场定位及处理的方法及装置。



背景技术:

凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统,嵌入式系统可采用多种类型的处理器和处理器体系结构。嵌入式系统有着广泛的应用领域和应用前景,如手机、数字相机、数字摄像机、机顶盒、高清电视、游戏机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等。

随着软件规模的逐渐扩大,它的复杂度也在增加,软件可靠性往往随着规模的增加而下降,软件质量也越来越难保证,尽管加强了软件开发过程的管理,开发了良好的测试用例,采用了多种测试方法,都不能保证软件运行过程中完全没有异常,其中,内存异常和程序进入某个异常分支而导致死循环,都是很难定位和排查的。内存异常可能是内存的读写超过了正常的范围,比如数组越界、堆栈溢出,也可能是内存存储单元长期受外界条件影响而失效。容易触发的软件错误往往在开发和测试阶段就已解决,遗留到产品中的软件错误往往程序运行一段时间后才会暴露问题,难以及时定位。目前,嵌入式系统软件开发商对这种软件异常错误发现和处理各不相同,并没有统一的方式。通常,软件错误检测都是停留调度和算法级别上的检测,不主动检测内存方面的异常,程序一直处于异常状态,或程序异常退出,或待人为发现程序异常后主动复位系统,未能识别是嵌入式系统中的哪个处理器造成的错误,是否有必要复位整个系统。或者软件错误检测单元和被检测单元是同一个处理器上,一旦发生软件错误,无法保证检测错误检测单元能够正常工作。或者主动监测代码异常,发现异常时才会复位处理器,此时内存改写可能已经发生一段时间了,即使保存内存信息也不是最接近异常现场的。



技术实现要素:

根据本发明实施例提供的方案解决的技术问题是无法及时发现处理器是否发生了软件错误。

根据本发明实施例提供的一种软件错误现场定位及处理的方法,包括:

系统上电后,各数字信号处理单元对其运行软件进行软件错误检测;

未检测到软件错误的数字信号处理单元,向中央处理单元发送处理器状态正常通知消息,并进行正常操作;

检测到软件错误的数字信号处理单元,则进入不可屏蔽中断,并停止向中央处理单元发送处理器状态正常通知消息。

优选地,当所述中央处理单元未收到处理器状态正常通知消息时,则确认相应数字信号处理单元出现了软件错误;

其中,所述软件错误包括数字信号处理单元检测到的内存代码段改写,和/或堆栈溢出,和/或异常表改写的软件错误和数字信号处理单元未检测到的错误代码引起程序进入死循环和错误代码引起程序代码跑飞的软件错误。

优选地,所述中央处理单元确认相应数字信号处理单元出现了软件错误后,包括:

所述中央处理单元停止向相应数字信号处理单元指派业务。

优选地,所述中央处理单元确认相应数字信号处理单元出现了软件错误后,包括:

所述中央处理单元启动定时器开始计时,并读取相应数字信号处理单元的内存数据;

所述中央处理单元将所读取的内存数据发送到服务器进行保存;

当所述中央处理单元的定时器计时到预置时间或内存数据全部保存至服务器时,通知相应数字信号处理单元进行软件复位。

优选地,所述中央处理单元接收到数字信号处理单元发送的处理器状态正常通知消息后,包括:

所述中央处理单元对数字信号处理单元发送的处理器状态正常通知消息进行校验;

若对所述处理器状态正常通知消息校验成功,则所述中央处理单元向相应数字信号处理单元指派业务;

若对所述处理器状态正常通知消息校验失败,则所述中央处理单元确认相应数字信号处理单元出现了软件错误。

根据本发明实施例提供的一种软件错误现场定位及处理的装置,包括:

检测模块,用于系统上电后,各数字信号处理单元对其运行软件进行软件错误检测;

第一处理模块,用于未检测到软件错误的数字信号处理单元,向中央处理单元发送处理器状态正常通知消息,并进行正常操作;

第二处理模块,用于检测到软件错误的数字信号处理单元,则进入不可屏蔽中断,并停止向中央处理单元发送处理器状态正常通知消息。

优选地,还包括第三处理模块,用于检测到所述中央处理单元未收到处理器状态正常通知消息时,则确认相应数字信号处理单元出现了软件错误;

其中,所述软件错误包括数字信号处理单元检测到的内存代码段改写,和/或堆栈溢出,和/或异常表改写的软件错误和数字信号处理单元未检测到的错误代码引起程序进入死循环和错误代码引起程序代码跑飞的软件错误。

优选地,所述第三处理模块还用于控制所述中央处理单元停止向出现了软件错误的数字信号处理单元指派业务。

优选地,所述第三处理模块还用于启动所述中央处理单元的定时器开始计时,并读取相应数字信号处理单元的内存数据,并将所读取的内存数据发送到服务器进行保存,以及当定时器计时到预置时间或内存数据全部保存至服务器时,通知相应数字信号处理单元进行软件复位。

优选地,所述第三处理模块还用于所述控制中央处理单元对数字信号处理单元发送的处理器状态正常通知消息进行校验,并在对所述处理器状态正常通知消息校验成功时,向相应数字信号处理单元指派业务,以及在对所述处理器状态正常通知消息校验失败时,则确认相应数字信号处理单元出现了软件错误。

根据本发明实施例提供的方案,处理器自己检测软件错误的同时,借助其它处理器单元协助检测,提高了软件错误检出概率。发现错误后,保存更接近错误现场发生时刻的内存数据,为后续分析出错原因提供了有效的参考。业务指派时控制新发起的业务只在监测的处理器状态正常通知正常的处理器单元上运行,不会引起新的使用异常。

附图说明

图1是本发明实施例提供的一种软件错误现场定位及处理的方法流程图;

图2是本发明实施例提供的一种软件错误现场定位及处理的装置示意图;

图3是本发明实施例提供的软件错误现场定位及处理的系统示意图;

图4是本发明实施例提供的图3中的数字信号处理单元的流程图;

图5是本发明实施例提供的图3中的中央处理单元的流程图。

具体实施方式

以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1是本发明实施例提供的一种软件错误现场定位及处理的方法流程图,如图1所示,包括:

步骤s101:系统上电后,各数字信号处理单元对其运行软件进行软件错误检测;

步骤s102:未检测到软件错误的数字信号处理单元,向中央处理单元发送处理器状态正常通知消息,并进行正常操作;

步骤s103:检测到软件错误的数字信号处理单元,则进入不可屏蔽中断,并停止向中央处理单元发送处理器状态正常通知消息。

其中,当所述中央处理单元未收到处理器状态正常通知消息时,则确认相应数字信号处理单元出现了软件错误;

其中,所述软件错误包括数字信号处理单元检测到的内存代码段改写,和/或堆栈溢出,和/或异常表改写的软件错误和数字信号处理单元未检测到的错误代码引起程序进入死循环和错误代码引起程序代码跑飞的软件错误。

具体地说,所述中央处理单元确认相应数字信号处理单元出现了软件错误后,包括:所述中央处理单元停止向相应数字信号处理单元指派业务。

具体地说,所述中央处理单元确认相应数字信号处理单元出现了软件错误后,包括:所述中央处理单元启动定时器开始计时,并读取相应数字信号处理单元的内存数据;所述中央处理单元将所读取的内存数据发送到服务器进行保存;当所述中央处理单元的定时器计时到预置时间或内存数据全部保存至服务器时,通知相应数字信号处理单元进行软件复位。

具体地说,所述中央处理单元接收到数字信号处理单元发送的处理器状态正常通知消息后,包括:所述中央处理单元对数字信号处理单元发送的处理器状态正常通知消息进行校验;若对所述处理器状态正常通知消息校验成功,则所述中央处理单元向相应数字信号处理单元指派业务;若对所述处理器状态正常通知消息校验失败,则所述中央处理单元确认相应数字信号处理单元出现了软件错误。

图2是本发明实施例提供的一种软件错误现场定位及处理的装置示意图,如图2所示,包括:检测模块201,用于系统上电后,各数字信号处理单元对其运行软件进行软件错误检测;第一处理模块202,用于未检测到软件错误的数字信号处理单元,向中央处理单元发送处理器状态正常通知消息,并进行正常操作;第二处理模块203,用于检测到软件错误的数字信号处理单元,则进入不可屏蔽中断,并停止向中央处理单元发送处理器状态正常通知消息。

本发明实施例还包括第三处理模块,用于检测到所述中央处理单元未收到处理器状态正常通知消息时,则确认相应数字信号处理单元出现了软件错误;其中,所述软件错误包括数字信号处理单元检测到的内存代码段改写,和/或堆栈溢出,和/或异常表改写的软件错误和数字信号处理单元未检测到的错误代码引起程序进入死循环和错误代码引起程序代码跑飞的软件错误。

其中,所述第三处理模块还用于控制所述中央处理单元停止向出现了软件错误的数字信号处理单元指派业务。

其中,所述第三处理模块还用于启动所述中央处理单元的定时器开始计时,并读取相应数字信号处理单元的内存数据,并将所读取的内存数据发送到服务器进行保存,以及当定时器计时到预置时间或内存数据全部保存至服务器时,通知相应数字信号处理单元进行软件复位。

其中,所述第三处理模块还用于所述控制中央处理单元对数字信号处理单元发送的处理器状态正常通知消息进行校验,并在对所述处理器状态正常通知消息校验成功时,向相应数字信号处理单元指派业务,以及在对所述处理器状态正常通知消息校验失败时,则确认相应数字信号处理单元出现了软件错误。

图3是本发明实施例提供的软件错误现场定位及处理的系统示意图,如图3所示,包括:数字信号处理单元、中央处理器单元以及服务器。其中,数字信号处理单元:有强大的运算能力,主要完成复杂的数字信号处理,软件复杂度更高,更易出错。数字信号处理单元包括错误检测单元、通知发送单元。中央处理器单元:不需要进行大量的运算,软件稳定性更强。服务器,保存内存数据,以便后续利用现有的技术分析错误原因。在服务器中对应于每一次软件错误时保存的记录文件,都会有编号、日期、时间等信息能够区分。

其中数字信号处理单元包括错误检测单元和通知发送单元。错误检测单元:检测是否发生软件错误。通知发送单元:组建和发送固定格式的处理器状态正常通知消息。中央处理单元包括通知监控单元、内存保存单元、业务指派单元和软件复位单元。通知监控单元:接收和校验处理器状态正常通知消息的正确性,检测到处理器状态正常通知失败后启动定时器。内存保存单元:负责从处理器状态正常通知失败的数字信号处理单元中读取需要的内存信息并保存到服务器。业务指派单元:负责往处理器状态正常通知正常的数字信号处理单元指派业务。软件复位单元:负责软件复位数字信号处理单元。

具体过程包括:启动系统后,数字信号处理单元软件未出错时,要定时向中央处理单元发送处理器状态正常通知消息。当数字信号处理单元检测到软件错误后,进入不可屏蔽中断,不再发送处理器状态正常通知消息。

中央处理单元定时监控处理器状态正常通知消息,监控到消息异常后启动定时器,并通过异常数字信号处理单元的外设接口直接导出需要的内存数据,通过网络保存到服务器中。

中央处理单元在内存数据保存完毕或判断定时时间到时(此时可能因网络原因尚未保存到服务器或未保存完毕),均将软件复位处理器状态通知异常的数字信号处理单元。

数字信号处理单元和中央处理单元物理上对应嵌入式多处理器系统中的不同处理器。数字信号处理单元对应的处理器上通常负责复杂易出错的处理,软件质量相对较难保证,而中央处理单元通常负责简单不易出错的处理,软件质量基本得以保证,在软件质量基本稳定的中央处理单元上监控软件质量难保证的数字信号处理单元,系统会更稳定。

中央处理单元、数字信号处理单元和服务器之间消息(包括处理器状态正常通知消息)和/或数据交互可以通过tcp/ip(transmissioncontrolprotocol/internetprotocol,传输控制协议/互联网络协议)实现,报文携带每个处理器的编号和/或ip等特征信息。

一个中央处理单元负责多个数字信号处理单元的状态监控和业务指派,控制每次新发起的业务只在处理器状态监控正常的数字信号处理单元上执行。多个数字信号处理单元有编号和/或指定固定ip等能够区分。系统中可以包含多个中央处理单元,每个分别负责多个数字信号处理单元。

图4是本发明实施例提供的图3中的数字信号处理单元的流程图,如图4所示,包括:

步骤s401、软件错误检测。

系统上电初始化后,数字信号处理单元上进行软件错误检测。

检测内容可以是内存代码段改写,和/或堆栈溢出,和/或常量表改写等,判断是否有总线写这些地址的操作。如果检测到有写这些地址的操作,说明软件代码已经出错。

优选地,主动检测的软件错误包括:内存代码段改写,和/或堆栈溢出,和/或常量表改写等。

步骤s402、检测到软件错误,处理器进入不可屏蔽中断,停止发送处理器状态正常通知消息。

数字信号处理单元的处理器进入不可屏蔽中断,从而主动停止了处理器状态正常通知消息的发送。

优选地,处理器状态正常通知消息的具体格式不做限定,以双方约定为准。

步骤s403、未检测到软件错误,定时发送处理器状态正常通知消息。

能够定时向中央处理器发送处理器状态正常通知消息,说明程序也没有进入某个异常的死循环等,从而导致无法组建设和发送处理器状态正常通知消息到中央处理单元。

图5是本发明实施例提供的图3中的中央处理单元的流程图,如图5所示,包括:

步骤s501、定时监控处理器状态正常通知异常。

若接收到处理器状态正常通知消息,解析并校验正确,则确认发送处理器状态正常通知消息的数字信号处理单元还未发现软件错误。若接收到处理器状态正常通知消息但校验错误,或者定时时间到仍未收到某个数字信号处理单元发送的处理器状态正常通知消息,则确认该数字信号处理单元出现软件错误。

优选地,处理器状态正常通知异常可能是数字信号处理单元检测到软件错误主动停止处理器状态正常通知消息发送,也可能是数字信号处理单元自己没有检测到软件错误,但处理器状态正常通知异常等。

优选地,数字信号处理单元未自己检测到的软件错误包括:错误代码引起程序进入死循环,代码跑飞等。

优选地,可以在上电初始化后第一次收到处理器状态正常通知后一段时间启动定时监控。

步骤s502、定时监控检测到处理器状态正常通知异常,则控制不再向该处理器状态正常通知异常的数字信号处理单元指派业务,并向处理器状态正常通知正常的单元指派,使新发起的业务还是能够在正常处理器状态正常通知的信号处理单元上运行,不会引起新的使用异常。

步骤s503、将异常处理单元的内存保存到服务器,判断定时器时间到或者内存保存完毕。

将发生异常时的现场内存及时记录到服务器中,以便后续利用现有的技术分析错误原因。但是,为了保证整个系统的处理能力,发现异常后也不能无限延长异常数字信号处理单元的复位时间,需要设计一个合理的定时器值来控制保存数据时间。

优选地,预先设定导出内存数据的地址和长度,可以是部分或全部片内内存,和/或寄存器,和/或片外外存。

优选地,服务器中对应于每一次软件错误时保存的记录文件,都会有编号、日期、时间等信息能够区分。

优选地,定时器限制数据保存操作允许的最大时间。

步骤s504、软件复位通知异常的数字信号处理单元。

主动复位、重新启动和加载异常数字信号处理单元,能够暂时解决应用代码错误改写内存造成的异常,也能够解决因高能射线或者其它环境因素造成的内存某个bit或多个bit被改写的情况,因为不是处理器进行的改写操作,很难发现和定位这类问题。

步骤s505、处理器状态正常通知正常的数字信号处理单元,可以指派新业务。

处理器状态正常通知正常的数字信号处理单元,可以指派新业务。指派条件也可以根据一些其它的条件进行限制,比如处理器的处理能力以及新业务的开销等。

根据本发明实施例提供的方案,在处理器自检测软件错误的同时,借助系统中的其它处理器进行协同检测软件错误,提高了软件错误检出概率。同时,借助系统中软件相对稳定的处理器对软件相对容易出错的处理器进行检测,提高了检测的稳定性。系统检测到某个处理器发生软件错误后,立即进行软件错误现场内存数据保存,便于后续分析错误原因,同时自动复位能够使处理器及时恢复正常,同时系统能指定新发起的业务在运行正常的处理器上执行。

尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1