一种中断定位的方法、处理器及终端设备与流程

文档序号:16608173发布日期:2019-01-14 21:19阅读:198来源:国知局
一种中断定位的方法、处理器及终端设备与流程

本发明属于嵌入式系统技术领域,尤其涉及一种中断定位的方法、处理器及终端设备。



背景技术:

arm是advancedriscmachine的简称,指代arm公司以及其cpu产品。arm平台是指采用arm体系的cpu(处理器)作为主cpu的嵌入式系统。irq是interruptrequest的简称,是arm体系cpu的所有外设模块对应的中断的总称。在arm体系cpu上,所有外设模块的中断共用同一个irq中断服务程序的总入口。

在嵌入式系统底层软件的开发调试或运行中,可能出现中断被不停歇地触发而引起的死机问题。因irq中断被不停歇地触发而导致的系统死机问题是嵌入式系统软件中可能出现的故障,只有对此故障进行验证确认、并定位出被触发的中断号以及对应的中断事件,才能彻底解决该问题。

通常的定位该类问题的方法,是采用外接的仿真器,例如,jtag仿真器(jointtestactiongroup,联合测试工作组),来运行问题软件,并通过人工检查等方法来一步一步地验证和定位问题。这种定位方法存在的问题是:需要改造原有设备,从cpu上引出jtag接口规定的所有口线,该操作较为麻烦;并且,若系统所使用的cpu不具备jtag接口,则此方法不可行;若系统所使用的cpu虽具备jtag接口但电路板上未预先引出jtag口线而致jtag接口无法连接,则此方法仍不可行。总之,通过常规的jtag仿真方法来定位所述问题有一定的局限性。

综上,现有技术中存在对中断定位困难、操作复杂以及耗时较长的问题。



技术实现要素:

有鉴于此,本发明实施例提供了一种中断定位的方法、处理器及终端设备,以解决现有技术中存在对中断定位困难、操作复杂以及耗时较长的问题。

本发明实施例的第一方面提供了一种中断定位的方法,包括:

在每次执行irq中断服务程序时,调用周期采样输出函数,其中,所述周期采样输出函数用于周期性地采样并输出irq中断信息。

通过调用所述周期采样输出函数,获取处理器的irq中断信息。

根据所述irq中断信息,确定异常的中断事件。

本发明实施例的第二方面提供了一种处理器,包括:

函数调用模块,用于在每次执行irq中断服务程序时,调用周期采样输出函数,其中,所述周期采样输出函数用于周期性地采样同时输出irq中断信息。

函数执行模块,用于通过调用所述周期采样输出函数,获取处理器的irq中断信息。

中断定位模块,用于根据所述irq中断信息,确定异常的中断事件。

本发明实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述中断定位的方法的步骤。

本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述中断定位的方法的步骤。

本发明实施例与现有技术相比存在的有益效果是:通过在每次执行irq中断服务程序时,调用周期采样输出函数,从而周期性地采样并输出irq中断信息,然后根据所述irq中断信息,确定异常的中断事件。可快捷且有效地定位发生异常的中断。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明的一个实施例提供的中断定位的方法的流程示意图;

图2是本发明的一个实施例提供的图1中步骤s103的实现流程示意图;

图3是本发明的一个实施例提供的处理器的结构示意图;

图4是本发明的一个实施例提供的图3中中断定位模块的结构示意图;

图5是本发明的一个实施例提供的终端设备的示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例1:

图1示出了本发明的一个实施例提供的一种中断定位的方法的实现流程,本实施例的流程执行主体可以是处理器,其过程详述如下:

步骤s101,在每次执行irq中断服务程序时,调用周期采样输出函数,其中,所述周期采样输出函数用于周期性地采样并输出irq中断信息。

步骤s102,通过调用所述周期采样输出函数,获取处理器的irq中断信息。

步骤s103,根据所述irq中断信息,确定异常的中断事件。

在处理器中,每次执行irq中断服务程序,都会产生irq中断信息,但是,本实施例中并不是在每一次中断时都采集irq中断信息,而是间隔预设时长或者预设中断次数,从而周期性地采集irq中断信息。可选地,前后两次采样的时间间隔设定为预设时长,例如,第1秒采样一次、第2秒采样一次、第3秒采样一次……以此类推。

在一个实施例中,将所述异常的中断事件通知用户。

本实施例中,异常的中断事件可以是由于中断被不停歇地触发而引起的死机故障,还可以是未按照预设关联顺序出现的非正常的中断事件。

本实施例中,通过在irq中断服务程序中插入运行一个周期采样输出函数来实现对中断异常的定位,适用于arm平台,可快捷有效地定位发生异常的中断,特别是对于中断被不停歇地触发而引起的死机现象,可实现迅速反馈问题给用户,以便于用户进行维护。

在本发明的一个实施例中,在步骤s101之前,所述中断定位的方法还包括:在irq中断服务程序的入口处,插入对所述周期采样输出函数的调用接口。

可选地,在irq中断服务程序的头部的压栈代码之后,插入对所述周期采样输出函数的调用代码。

需要说明的是,在arm体系的cpu中,所有外设模块的中断共用同一个irq中断服务程序的入口,irq中断服务程序的入口用于进行断点地址和通用寄存器的压栈处理。irq中断服务程序通常采用汇编语言来实现。

本实施例中,在irq中断服务程序的入口处,增加对周期采样输出函数的调用。在irq中断服务程序中插入并运行一个周期采样输出函数。

在处理器中,每发生一次由外设模块触发的中断,便会执行一次irq中断服务程序,执行一次irq中断服务程序就会调用一次周期采样输出函数。虽然每次中断都会调用周期采样输出函数,但是,周期采样输出函数并不是每一次调用都会进行采样,而是间隔预设时长或者预设中断次数才会采样一次。

本实施例中,在irq中断服务程序的入口处,插入对周期采样输出函数的调用。采用周期性采样输出而不是每次调用均输出的方式,是为了精简输出信息,以及尽可能地减小调试输出代码对程序正常流程的影响。

在本发明的一个实施例中,irq中断信息包括当前中断服务对应的中断号和/或中断事件,其中,中断号为中断号寄存器中的数据,中断事件为中断事件寄存器中的数据。

需要说明的是,在arm体系的cpu中包含中断号寄存器,中断号寄存器为具有中断指示功能的寄存器,用于指示当前正接受中断服务的外设模块所对应的中断号。

在本发明的一个实施例中,所述周期采样输出函数用于:

读取当前中断服务对应的中断号和/或中断事件,将其作为所述irq中断信息。

采用轮询的方式,通过具有对外传输功能的外设模块,输出所述irq中断信息。

在一个实施例中,周期采样输出函数首先周期性地采样中断号,通过输出的中断号可以确定发生异常的中断号,从而确定触发此异常中断的外设模块。如果触发此异常中断的外设模块具备较复杂的中断源,则需要增加更为详细的输出信息,于是在周期采样输出函数中增加输出中断事件的代码,从而可以进一步确定具体的发生异常的中断事件。

在一个实施例中,周期采样输出函数通过具有对外传输功能的外设模块,输出irq中断信息,可以供人工分析和确认。其中,具有对外传输功能的外设模块可以是通讯口、显示设备或打印机等其中的一种或几种。

另外,由于周期采样输出函数输出的是中断信息,所以输出不应以中断的方式来实现,以免打乱当前中断服务,导致中断信息不能成功输出。基于此原因,本方案采用轮询的方式进行输出。

在一个实施例中,在周期采样输出函数中插入底层基本输出函数,用于实现不同对外传输的外设模块的输出功能。

以一个具体应用场景为例,当周期采样输出函数通过串口输出中断信息时,周期采样输出函数中写入串口基本输出函数。

串口基本输出函数的实现过程包括:

1)将串口基本输出函数中的入口可变参数转换为目标输出字符串。

2)以轮询方式发送所述目标输出字符串,包括:持续等候,直到串口发送缓冲队列变为不满状态,则逐字节地发送所述目标输出字符串至串口发送缓冲队列。

周期采样输出函数在调用串口基本输出函数前,设定采集到的irq中断信息为所述入口可变参数,然后调用。

本实施例中,周期采样输出函数用于周期性地采样同时输出irq中断信息,此函数在周期性地采样到irq中断信息后便将其输出。

在本发明的一个实施例中,所述周期采样输出函数通过变量计数、时钟走时或者定时器走时的方式实现周期性采样并输出所述irq中断信息。

在一个实施例中,所述周期采样输出函数通过变量计数的方式实现周期性采样并输出所述irq中断信息,包括:

1)定义一个静态变量,并将其值初始化为0。

2)在每次调用所述周期采样输出函数时,将所述静态变量的值加1。

3)若所述静态变量的值模除预设的采样周期数后的值为0,则采样并输出所述irq中断信息。

4)否则,不对所述irq中断信息进行采样,直接跳出所述周期采样输出函数。

本实施例中,预设的采样周期数可以根据处理器的主频速度来设定,例如1000、10000等。

其中,模除是一种不具交换性的二元运算。例如,当a=bq+r,q是整数,并使其达到最大,此时我们说a模除b等于r。

在一个实施例中,所述周期采样输出函数通过时钟走时的方式实现周期性采样并输出所述irq中断信息,包括:

1)在每次调用所述周期采样输出函数时,从系统时钟读取当前时间。

2)若所述当前时间的值模除预设的时间周期数后的值为0,则采样并输出所述irq中断信息。

3)否则,不对所述irq中断信息进行采样,直接跳出所述周期采样输出函数。

本实施例中,预设的时间周期数可以是3、5或10等,分别对应3秒、5秒、10秒的采样周期。

在一个实施例中,所述周期采样输出函数通过定时器走时的方式实现周期性采样并输出所述irq中断信息,包括:

1)首次调用所述周期采样输出函数时,启动定时器进行计时,并将计时时间初始化为0。

2)在之后每次调用所述周期采样输出函数时,检查所述计时时间是否到达预设时长。

3)若所述计时时间到达预设时长,则采样并输出所述irq中断信息,并重启所述定时器以使计时时间重设为0。

4)若所述计时时间未到达预设时限,则不对所述irq中断信息进行采样,继续计时,并直接跳出所述周期采样输出函数。

本实施例中,预设时长可以为3秒、5秒、10秒等。

如图2所示,在本发明的一个实施例中,图1所对应的实施例中的步骤s103包括:

步骤s201,通过所述irq中断信息,确定发生异常的中断号。

可选地,通过读取中断号寄存器中的数据获取中断号。

步骤s202,根据所述发生异常的中断号,确定外设模块,其中,所述外设模块为触发该中断号的外部设备。

可选地,基于处理器的技术手册可以获得中断号与外设模块的具体对应关系,利用该对应关系可以实现步骤s202。

步骤s203,根据所述外设模块的中断源,确定触发中断的中断事件,并将该中断事件作为所述异常的中断事件。

在本发明的一个实施例中,步骤s201包括:

1)获取所述irq中断信息中的中断号。

2)若所述中断号符合预设异常条件,则将其作为所述发生异常的中断号。

其中,中断号符合预设异常条件包括:中断号在预设时长内反复多次出现,或者在具有预设关联顺序的中断号中被打断或插入其他非正常的中断号。

在具体应用中,中断在预设时长内反复多次出现,可以表现为,某一个中断被不停歇地触发导致死机。

在具体应用中,未按照预设关联顺序出现的非正常的中断,以一个场景为例,在打印过程中,正常顺序是先串口通讯后打印,中断的顺序应为:先有串口模块对应的中断,后面紧接打印模块的中断,如果在这两个中断中出现了其他外设模块触发的中断,可能就是不正常的中断。

在本发明的一个实施例中,步骤s203包括:

1)若所述外设模块具有一个中断源,则根据该中断源确定一个中断事件,作为所述异常的中断事件。

2)若所述外设模块具有至少两个中断源,则通过所述周期采样输出函数读取所述外设模块对应的中断事件寄存器中的数据,并根据读取到的中断事件寄存器中的数据确定所述异常的中断事件。

在一个实施例中,中断事件包括中断状态和中断原因。

需要说明的是,中断号与外设模块的具体对应关系,不同的处理器各不相同,可参见对应处理器的技术手册。

对于中断源较简单的外设模块,如:定时器、通用输入输出模块等,其具体中断原因就是设定的中断条件达到了,系统一般不再额外提供专用的寄存器来指示这些外设模块的中断状态或具体中断原因。

对于中断源较复杂的外设模块,如:以太网模块、串口、usb模块等,其具体中断原因较多,系统一般提供专用的寄存器来指示这些外设模块的具体中断原因。

因此,对于具有至少两个中断源的外设模块,本实施例通过所述周期采样输出函数读取所述外设模块对应的中断事件寄存器中的数据。

不同中断号所对应外设模块的中断事件寄存器是不同的,本实施例仅针对发生异常的中断号的外设模块。可以更加节省总体定位耗时、提高定位效率。

以一个具体应用场景为例,假设在步骤s202中定位出异常的外设模块是以太网模块,以太网模块的中断源可能包括:链路状态的改变、接收器溢出、发送器欠载、接收帧中断、发送帧中断等,这些中断源通过系统提供的以太网模块对应的中断事件寄存器中的不同位来分别指示。那么,在步骤s203中,读取以太网模块对应的中断事件寄存器中的数据,从而确定异常的中断事件。

本发明实施例具有以下技术效果:

1、周期采样输出函数采用周期性采样输出的策略,精简了输出信息,并尽可能地减小了调试输出代码对程序正常流程的影响,以免问题无法复现。

2、底层基本输出函数采用轮询方式来实现,避免了采样输出信息可能无法成功输出的问题。

3、本方案实施较简单,对中断问题的定位效率高。

4、本方案能适用于所有arm平台上的中断异常问题的定位。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

实施例2:

如图3所示,本发明的一个实施例提供的处理器100,用于执行图1所对应的实施例中的方法步骤,其包括:

函数调用模块110,用于在每次执行irq中断服务程序时,调用周期采样输出函数,其中,所述周期采样输出函数用于周期性地采样同时输出irq中断信息。

函数执行模块120,用于通过调用所述周期采样输出函数,获取处理器的irq中断信息。

中断定位模块130,用于根据所述irq中断信息,确定异常的中断事件。

在本发明的一个实施例中,处理器100还包括:

接口调用模块,用于在irq中断服务程序的入口处,插入对所述周期采样输出函数的调用接口。

如图4所示,在本发明的一个实施例中,图3所对应的实施例中的中断定位模块130还包括用于执行图2所对应的实施例中的方法步骤的结构,其包括:

中断号确定单元131,用于通过所述irq中断信息,确定发生异常的中断号。

外设确定单元132,用于根据所述发生异常的中断号,确定外设模块,其中,所述外设模块为触发该中断号的外部设备。

中断事件确定单元133,用于根据所述外设模块的中断源,确定触发中断的中断事件,并将该中断事件作为所述异常的中断事件。

在本发明的一个实施例中,中断号确定单元131包括:

中断号获取子单元,用于获取所述irq中断信息中的中断号。

异常判断子单元,用于若所述中断号符合预设异常条件,则将其作为所述发生异常的中断号。

在本发明的一个实施例中,中断事件确定单元133包括:

第一中断判断子单元,用于若所述外设模块具有一个中断源,则根据该中断源确定一个中断事件,作为所述异常的中断事件。

第二中断判断子单元,用于若所述外设模块具有至少两个中断源,则通过所述周期采样输出函数读取所述外设模块对应的中断事件寄存器中的数据,并根据读取到的中断事件寄存器中的数据确定所述异常的中断事件。

在一个实施例中,处理器100还包括其他功能模块/单元,用于实现实施例1中各实施例中的方法步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即处理器100的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述处理器100中模块的具体工作过程,可以参考实施例1中的对应过程,在此不再赘述。

实施例3:

图5是本发明一实施例提供的终端设备的示意图。如图5所示,该实施例的终端设备包括:处理器100、存储器200以及存储在所述存储器200中并可在所述处理器100上运行的计算机程序300。所述处理器100执行所述计算机程序300时实现如实施例1中所述的各实施例中的步骤,例如图1所示的步骤s101至s103。或者,所述处理器100执行所述计算机程序300时实现如实施例2中所述的各系统实施例中的各模块/单元的功能,例如图3所示模块110至130的功能。

所述终端设备是指具有数据处理能力的终端,包括但不限于计算机、工作站、服务器,甚至是一些性能优异的智能手机、掌上电脑、平板电脑、个人数字助理(pda)、智能电视(smarttv)等。以上详细罗列了终端设备的具体实例,本领域技术人员可以意识到,智能终端并不限于上述罗列实例。

所述终端设备可包括,但不仅限于,处理器100、存储器200。本领域技术人员可以理解,图5仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。

所称处理器100可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器200可以是所述终端设备的内部存储单元,例如终端设备的硬盘或内存。所述存储器200也可以是所述终端设备的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器200还可以既包括所述终端设备的内部存储单元也包括外部存储设备。所述存储器200用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器200还可以用于暂时地存储已经输出或者将要输出的数据。

实施例4:

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如实施例1中所述的各实施例中的步骤,例如图1所示的步骤s101至步骤s103。或者,所述计算机程序被处理器执行时实现如实施例2中所述的各系统实施例中的各模块/单元的功能,例如图3所示的模块110至130的功能。

所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

在上述实施例中,对各个实施例的描述都各有侧重,实施例1至4可以任意组合,组合后形成的新的实施例也在本申请的保护范围之内。某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的系统/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

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