发明内容
本发明的目的,就是针对现有技术的不足,提供一种任务超时处理方法及装置,通过在软件流程中的第一代码段之前设置看门狗配置代码段,对看门狗模块进行初始化处理;在第一代码段之后设置喂狗代码段,对看门狗模块进行喂狗信号发送处理;并在软件流程运行过程中对看门狗模块是否输出复位信号进行识别,若是则确认该第一代码段在运行过程中执行超时。本发明通过在软件流程中为不同的第一代码段进行单独的看门狗配置,实现对软件流程中不同的第一代码段进行精准监控。
为实现上述目的,本发明实施例第一方面提供了一种任务超时处理方法,所述方法包括:
在第一代码段之前设置看门狗配置代码段;
在所述第一代码段之后设置喂狗代码段;
运行软件流程,所述软件流程包括多个所述第一代码段;并在运行过程中通过所述看门狗配置代码段对看门狗模块进行初始化处理;并在运行过程中通过所述喂狗代码段对所述看门狗模块进行喂狗信号发送处理;
在运行过程中对所述看门狗模块是否输出复位信号进行识别,若是则确认所述第一代码段在运行过程中执行超时。
优选的,所述看门狗配置代码段包括:
时钟配置代码行,所述时钟配置代码行的参数包括时钟编号和预分频系数;所述看门狗模块根据所述时钟编号选择时钟源,并根据所述预分频系数对所述时钟源进行分频处理;
工作模式配置代码行,所述工作模式配置代码行的参数包括工作模式参数;所述看门狗模块根据所述工作模式参数设置所述看门狗模块的工作模式;所述工作模式包括单线程模式和多线程模式;
捕捉方式配置代码行,所述捕捉方式配置代码行的参数包括捕捉方式参数;所述看门狗模块根据所述捕捉方式参数设置所述看门狗模块的信号捕捉方式;所述信号捕捉方式包括上升沿捕捉方式和高电平捕捉方式;
多个喂狗通道配置代码行,每个所述喂狗通道配置代码行的参数包括喂狗信号编号和喂狗通道编号,用于将所述喂狗信号编号对应的喂狗信号与所述喂狗通道编号对应的喂狗通道进行绑定;
多个喂狗时间窗口配置代码行,每个所述喂狗时间窗口配置代码行的参数包括喂狗通道编号、喂狗时间窗口上限值和喂狗时间窗口下限值,用于设置所述喂狗通道编号对应的喂狗通道的喂狗时间窗口上限值和喂狗时间窗口下限值;
多个喂狗时间片配置代码行,每个所述喂狗时间片配置代码行的参数包括喂狗通道编号和喂狗时间片值,用于设置所述喂狗通道编号对应的喂狗通道的喂狗时间片值;
所述喂狗代码段为单行代码行,所述喂狗代码段的参数包括喂狗通道编号,用于执行所述喂狗通道编号对应的喂狗通道的喂狗操作。
进一步优选的,所述看门狗配置代码段还包括:
使能时钟代码行,用于使能所述时钟源;
使能喂狗信号代码行,所述使能喂狗信号代码行的参数包括喂狗通道编号,用于使能所述喂狗通道编号对应的喂狗通道;
使能捕捉输入信号代码行,用于使能所述看门狗模块的信号捕捉器的输入信号。
优选的,所述看门狗模块包括:
第一通道使能寄存器,用于设置多路软件喂狗信号的使能控制位;
第二通道使能寄存器,用于设置多路硬件喂狗信号的使能控制位;
工作模式寄存器,用于设置所述看门狗模块进行喂狗通道切换的工作模式;
喂狗信号选择寄存器,用于设置所述喂狗信号与所述喂狗通道的对应关系;
第一多路选择器,用于接收多路喂狗信号;所述第一多路选择器与所述喂狗信号选择寄存器相连接,所述第一多路选择器根据所述喂狗信号选择寄存器将所述喂狗信号输出为喂狗输入信号;
第二多路选择器,与所述第一多路选择器相连接,接收所述第一多路选择器输出的多路所述喂狗输入信号;
通道选择状态机,与所述第二多路选择器相连接,发送通道选择信号至所述第二多路选择器,用以所述第二多路选择器根据所述通道选择信号选择多路所述喂狗输入信号中的一路输出为通道喂狗信号;所述通道选择状态机分别与所述第一通道使能寄存器、第二通道使能寄存器和工作模式寄存器相连接,接收使能的软件喂狗信号、使能的硬件喂狗信号和喂狗通道切换的工作模式;
时间窗口上限寄存器,用于设置所述喂狗信号对应的喂狗时间窗口上限值;
时间窗口下限寄存器,用于设置所述喂狗信号对应的喂狗时间窗口下限值;
时间片寄存器,用于设置所述喂狗信号对应的喂狗时间片值;
信号捕捉器,与所述第二多路选择器相连接,根据预设捕捉模式捕捉所述第二多路选择器输出的所述通道喂狗信号;所述信号捕捉器捕捉所述通道喂狗信号成功时,输出捕捉成功信号;
时钟模块,接收多路时钟源信号,并根据时钟选择信号选择所述多路时钟源信号中的一路作为时钟源,并根据预分频系数对所述时钟源进行分频处理输出分频时钟源信号,并根据时钟使能信号控制所述分频时钟源信号的输出;
定时器,与所述通道选择状态机相连接,接收所述通道选择状态机发送的启动信号,根据所述启动信号启动递增计数,并将计数结果值保存至自由计数值寄存器中;所述定时器还与所述信号捕捉器相连接,接收所述信号捕捉器输出的所述捕捉成功信号;当所述定时器接收到所述捕捉成功信号后,所述定时器将当前计数值作为捕捉计数值保存至捕捉寄存器中,同时输出比较使能信号;所述定时器还与所述时钟模块相连接,接收所述时钟模块输出的所述分频时钟源信号作为所述定时器的计数时钟;
比较器,与所述定时器相连接,接收所述定时器输出的所述比较使能信号;所述比较器接收到所述比较使能信号后,读取所述捕捉寄存器中的捕捉计数值,判断所述捕捉计数值是否在所述喂狗时间窗口上限值和喂狗时间窗口下限值之间并生成喂狗结果;所述比较器读取所述自由计数值寄存器中的计数结果值,判断所述计数结果值是否等于所述喂狗时间片值并生成监控完成信号;
控制逻辑模块,与所述比较器相连接,接收所述比较器输出的所述喂狗结果和监控完成信号;当所述喂狗结果错误时,输出复位信号;当所述喂狗结果正确并且接收到所述监控完成信号时,输出状态切换信号至所述通道选择状态机;
控制寄存器,用于设置所述时钟选择信号的控制位、预分频系数、时钟使能信号的控制位、输入使能信号的控制位和预设捕捉模式。
进一步优选的,所述在运行过程中通过所述看门狗配置代码段对看门狗模块进行初始化处理,具体包括:
在运行过程中,通过所述看门狗配置代码段对所述看门狗模块的控制寄存器进行初始化,设置所述控制寄存器中的时钟选择信号的控制位、预分频系数和预设捕捉模式;通过所述看门狗配置代码段将所述控制寄存器中的时钟使能信号的控制位和输入使能信号的控制位设置为使能;
在运行过程中,通过所述看门狗配置代码段对所述看门狗模块的工作模式寄存器进行配置,设置所述看门狗模块进行通道切换的工作模式为单线程模式;
在运行过程中,通过所述看门狗配置代码段对所述看门狗模块的喂狗信号选择寄存器进行配置,设置所述喂狗信号与所述喂狗通道的对应关系;
在运行过程中,通过所述看门狗配置代码段对所述看门狗模块的时间窗口上限寄存器和时间窗口下限寄存器进行配置,通过所述喂狗通道的喂狗通道编号将喂狗时间窗口上限值设置到所述喂狗通道编号对应的所述时间窗口上限寄存器中,通过所述喂狗通道的喂狗通道编号将喂狗时间窗口下限值设置到所述喂狗通道编号对应的所述时间窗口下限寄存器中;
在运行过程中,通过所述看门狗配置代码段对所述看门狗模块的时间片寄存器进行配置,通过所述喂狗通道的喂狗通道编号将喂狗时间片值设置到所述喂狗通道编号对应的所述时间片寄存器中;
在运行过程中,通过所述看门狗配置代码段对所述看门狗模块的第一通道使能寄存器和第二通道使能寄存器进行配置,将所述第一通道使能寄存器和第二通道使能寄存器中与所述喂狗信号相对应的控制位设置为1。
进一步优选的,所述运行过程中通过所述喂狗代码段对所述看门狗模块进行喂狗信号发送处理,具体包括:
在运行过程中,所述喂狗代码段根据所述喂狗信号的喂狗信号编号激活所述看门狗模块的第一多路选择器中相对应的喂狗信号。
进一步优选的,所述方法还包括:
所述看门狗模块比较所述自由计数值寄存器中的计数结果值与所述时间片寄存器中的喂狗时间片值,当所述计数结果值等于所述喂狗时间片值并且尚未接收到所述喂狗信号时,输出复位信号。
本发明实施例第二方面提供了一种任务超时处理装置,所述装置包括:
配置模块,用于在第一代码段之前设置看门狗配置代码段;
喂狗模块,用于在所述第一代码段之后设置喂狗代码段;
运行模块,用于运行软件流程,所述软件流程包括多个所述第一代码段;并在运行过程中通过所述看门狗配置代码段对看门狗模块进行初始化处理;并在运行过程中通过所述喂狗代码段对所述看门狗模块进行喂狗信号发送处理;
判断模块,用于在运行过程中对所述看门狗模块是否输出复位信号进行识别,若是则确认所述第一代码段在运行过程中执行超时。
本发明实施例提供的一种任务超时处理方法及装置,通过在软件流程中的第一代码段之前设置看门狗配置代码段,对看门狗模块进行初始化处理;在第一代码段之后设置喂狗代码段,对看门狗模块进行喂狗信号发送处理;并在软件流程运行过程中对看门狗模块是否输出复位信号进行识别,若是则确认第一代码段在运行过程中执行超时。本发明通过在软件流程中为不同的代码段进行单独的看门狗配置,实现对软件流程中不同的代码段进行精准监控。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例一提供了一种任务超时处理方法,图1为本发明实施例一提供的一种任务超时处理方法的流程示意图,如图1所示,本方法主要包括如下步骤:
步骤101,在第一代码段之前设置看门狗配置代码段。
具体的,软件流程中包括多个第一代码段,为了在软件流程中通过看门狗来监测第一代码段执行过程中是否出现超时的情况,需要在第一代码段之前设置看门狗配置代码段,即在第一代码段开始之前,需要先通过看门狗配置代码段对要使用的看门狗模块进行一些设置。因此,将看门狗配置代码段设置于第一代码段之前,以确保在第一代码段执行之前能够完成对看门狗模块的基本配置。
进一步的,看门狗配置代码段包括多个配置代码行,具体如下:
时钟配置代码行,用于设置看门狗中定时器所使用的时钟信号,其参数包括时钟编号和预分频系数,用于看门狗模块根据时钟编号选择时钟源,并根据预分频系数对时钟源进行分频处理。
时钟配置函数的伪代码如下:
其中,sel表示时钟编号,ps表示预分频系数,CTR表示控制寄存器,CLK_SEL为控制寄存器CTR中的字段,用于设置已配置的时钟编号sel,PS_CFG也是控制寄存器CTR中的字段,用于设置已配置的预分频系数ps。时钟编号sel的取值包括:0x00:系统时钟,0x01:慢速时钟;预分频系数ps的取值包括:0x00:2分频,0x01:4分频,0x02:8分频,0x03:16分频,0x04:32分频,0x05:64分频,0x06:128分频,0x07:256分频。
例如:当需要选择慢速时钟作为看门狗模块的定时器的时钟,且预分频系数设定为128分频时,调用时钟配置函数的时钟配置代码行的伪代码描述如下:
wdg_clock_set(0x01,0x06);
工作模式配置代码行,用于设置看门狗模块中喂狗通道切换的工作模式,其参数包括工作模式参数,用于看门狗模块根据工作模式参数设置看门狗模块中喂狗通道切换的工作模式。
工作模式配置函数的伪代码如下:
其中,mode表示工作模式,MODE_CFG为看门狗模块中的工作模式寄存器,用于设置工作模式的具体值。工作模式mode的具体取值包括:0x00:多线程模式,0x01:单线程模式。
例如:本实施例中对软件流程中第一代码段进行监控使用单线程模式,则调用工作模式配置函数的工作模式配置代码行的伪代码描述如下:
wdg_mode_set(0x01);
捕捉方式配置代码行,用于设置看门狗模块中捕捉喂狗输入信号的捕捉方式,其参数为捕捉方式参数,用于看门狗模块根据捕捉方式参数设置看门狗模块中的信号捕捉方式。
捕捉方式配置函数的伪代码如下:
其中,cp_mode表示信号捕捉方式,CTR.CP_MODE为控制寄存器CTR中的字段,用于设置具体的信号捕捉方式。信号捕捉方式cp_mode的具体取值包括:0x00:上升沿捕捉,0x01:下降沿捕捉,0x02:低电平捕捉,0x03:高电平捕捉。
例如:在看门狗模块的工作模式为单线程模式时,需要将信号捕捉方式设置为上升沿捕捉,则调用捕捉方式配置函数的捕捉方式配置代码行的伪代码描述如下:
cp_mode_set(0x00);
喂狗通道配置代码行,用于将喂狗信号的喂狗信号编号与喂狗通道的喂狗通道编号进行绑定,实现为喂狗信号分配不同的喂狗通道,其参数包括喂狗信号编号和喂狗通道编号。
喂狗通道配置函数的伪代码如下:
其中,channel表示喂狗信号编号,S_IN表示喂狗通道编号,喂狗通道的设置存储于喂狗信号选择寄存器(SEL0~SEL63)中,共64个喂狗通道,寄存器SEL0~SEL63的地址依次排列,且每一个寄存器的地址偏移为0x04,因此,在设置时,选择SEL0寄存器地址作为基地址。通过喂狗通道配置函数可以选择哪一路喂狗信号作为S_INx(x=0~63)通道信号。
例如:选择喂狗信号10作为S_IN2通道的通道信号,则调用喂狗通道配置函数的喂狗通道配置代码行的伪代码描述如下:
wdg_signal_sel(0x0A,0x02);
本发明实施例中不仅能够监控第一代码段,同样能够同时监控多个代码段,可同时设置多个喂狗通道配置代码行,能够实现为不同的代码段中的喂狗信号分配不同的喂狗通道,实现对不同的代码段的个性化监控。
喂狗时间窗口配置代码行,用于配置喂狗信号对应的监测时间窗口的上下限值,其参数包括喂狗通道编号、喂狗时间窗口上限值和喂狗时间窗口下限值,用于看门狗模块比较该喂狗信号到达的时间是否位于喂狗时间窗口内,过早或过晚到达的喂狗信号都是错误的,说明程序执行出现异常。
喂狗时间窗口配置函数的伪代码如下:
其中,channel表示喂狗通道编号,w_high_limit表示喂狗时间窗口上限值,配置结果存储在时间窗口上限寄存器CHTHHn(n=0~63)中,共64个寄存器,用于对应设置64路喂狗信号的时间窗口上限值;w_low_limit表示喂狗时间窗口下限值,配置结果存储在时间窗口下限寄存器CHTHLn(n=0~63)中,共64个寄存器,用于对应设置64路喂狗信号的时间窗口下限值;由于CHTHLn、CHTHHn寄存器的地址依次排列,且每一个寄存器的地址偏移为0x04,因此,选用CHTHL0和CHTHH0寄存器地址作为基地址来进行设置。
喂狗时间窗口的上下限值的具体取值是根据具体需求、定时器时钟及预分频系数计算得出,例如:看门狗模块的定时器时钟为8Mhz,预分频系数为128,则定时器的计数时钟频率为8Mhz/128=62.5Khz,一次计数的时间为16us,如果通道S_IN8的喂狗时间窗口的具体需求为80ms~160ms,则相对应的喂狗时间窗口的上下限值分别为:w_high_limit=160ms/16us=0x2710,w_low_limit=80ms/16us=0x1388,那么调用喂狗时间窗口配置函数配置喂狗通道S_IN8相对应的喂狗时间窗口的上下限值的喂狗时间窗口配置代码行的伪代码描述如下:
wdg_feed_window(8,0x1388,0x2710);
本实施例中包括有多个喂狗时间窗口配置代码行,针对每一个喂狗通道均可独立设置该喂狗通道相对应的喂狗时间窗口的上下限值。
喂狗时间片配置代码行,用于配置喂狗信号对应的喂狗时间片值,喂狗时间片值即为监控该喂狗信号的时间片长度,也是指该喂狗操作的超时时间,其参数包括喂狗通道编号和喂狗时间片值,用于设置看门狗模块监控该喂狗信号的喂狗时间片值,在该喂狗时间片监控完成后,将切换至下一喂狗通道。
喂狗时间片配置函数的伪代码如下:
其中,channel表示喂狗通道编号,t_limit表示喂狗时间片值,喂狗时间片的配置结果存储在时间片寄存器CHTn(n=0~63)中,共64个时间片寄存器,用于设置对应的64路喂狗信号的喂狗时间片值,喂狗时间片值为监控喂狗信号的时间长度,即监控该喂狗信号的超时时间;由于CHTn(n=0~63)寄存器的地址依次排列,且每一个时间片寄存器的地址偏移为0x04,因此选用CHT0作为基地址,可以依次对CHTn进行设置。
与喂狗时间窗口上下限值相同的是,喂狗时间片值也是根据具体需求、定时器时钟及预分频系数计算得出,例如:看门狗模块的定时器时钟为8Mhz,预分频系数为128,则定时器的计数时钟频率为8Mhz/128=62.5Khz,一次计数的时间为16us,若喂狗通道S_I N2的喂狗时间片的具体需求为240ms,则喂狗时间片值为:t_l imi t=240ms/16us=0x3A98,那么调用喂狗时间片配置函数配置喂狗通道S_I N2相对应的喂狗时间片值的喂狗时间片配置代码行的伪代码如下:
wdg_mon itor_t ime(2,0x3A98);
本实施例中包含有多个喂狗时间片配置代码行,针对每一个喂狗通道均可独立设置该喂狗通道相对应的喂狗时间片值。在本实施例的软件流程中,只有该喂狗通道的监控时间等于该喂狗通道设置的喂狗时间片值时,才算监控完成。该喂狗时间片值是第一代码段的实际运行时间,该运行时间是在软件调试过程中得出的,或者根据反汇编得出的指令数量计算得到的。如果第一代码段对应的监控完成时,仍未接收到喂狗信号,说明第一代码段的执行时间超过了预定时间,即第一代码段执行超时。
进一步的,看门狗配置代码段还包括:
使能时钟代码行,用于使能看门狗模块的定时器所使用的时钟源;通过设置控制寄存器CTR中的CLK_EN位来实现时钟模块的分频时钟源信号输出的开启和关闭,CLK_EN位即为分频时钟源信号的控制位;当CLK_EN位置为1时,使能时钟模块对分频时钟源信号的输出,当CLK_EN位置为0时,关闭时钟模块对分频时钟源信号的输出。
使能时钟函数的伪代码如下:
其中,enable为1时,使能分频时钟源信号输出,enable为0时,关闭分频时钟源信号输出。
例如:当需要使能时钟时,调用使能时钟函数的使能时钟代码行的伪代码描述如下:
timer_clock_enable(0x01);
使能喂狗信号代码行,用于使能喂狗信号对应的喂狗通道,其参数包括喂狗通道编号,用于看门狗模块根据喂狗通道编号使能对应的喂狗通道;通过配置看门狗模块的第一通道使能寄存器CHEN_CFG0和第二通道使能寄存器CHEN_CFG1来实现喂狗信号的使能操作,其中,第一通道使能寄存器CHEN_CFG0用于设置32路软件喂狗信号的使能控制位,第二通道使能寄存器CHEN_CFG1用于设置32路硬件喂狗信号的使能控制位;
软件喂狗信号使能函数的伪代码如下:
例如:当需要对软件喂狗信号0-3进行使能操作,则调用软件喂狗信号使能函数的使能喂狗信号代码行的伪代码描述如下:
wdg_soft_signal_enable(0x0000000F);
其中,0x0000000F转换为二进制为1111,对应软件喂狗信号0-3的使能。
硬件喂狗信号使能函数的伪代码如下:
例如:当需要对硬件喂狗信号0、4进行使能操作时,则调用硬件喂狗信号使能函数的使能喂狗信号代码行的伪代码描述如下:
wdg_hard_signal_enable(0x00000011);
其中,0x00000011转换为二进制为10001,对应硬件喂狗信号0、4的使能。
使能捕捉输入信号代码行,用于使能看门狗模块的信号捕捉器的输入信号;通过控制寄存器CTR的CP_EN位来实现信号捕捉器的输入信号的使能,CP_EN位即为信号捕捉器的输入使能信号的控制位。
捕捉输入信号使能函数的伪代码如下:
例如:当需要使能捕捉输入信号时,则调用捕捉输入信号使能函数的使能捕捉输入信号代码行的伪代码描述如下:
input_capsignal_enable(0x01);
步骤102,在第一代码段之后设置喂狗代码段。
本实施例中的喂狗代码段为单行代码行,调用喂狗操作函数进行喂狗信号的发送处理,其参数包括喂狗信号编号,用于执行该喂狗信号编号对应的喂狗操作。
喂狗操作函数的伪代码如下:
其中,channe l为喂狗信号编号,喂狗操作是通过设置软件喂狗信号寄存器SFS来实现的。其中,SFS寄存器与软件喂狗信号相对应,SFS寄存器默认值为0,只需将SFS寄存器中与喂狗信号相对应的数据位设置为1即可实现喂狗操作,然后再将该位恢复为默认的0即可。
例如,喂狗信号2的喂狗操作,其调用喂狗操作函数的代码行的伪代码描述如下:
wdg_soft_feed(0x02);
在软件流程中的第一代码段之后设置该代码行,即可实现该喂狗信号的喂狗操作。
步骤103,运行软件流程;并在运行过程中通过看门狗配置代码段对看门狗模块进行初始化处理;并在运行过程中通过喂狗代码段对看门狗模块进行喂狗信号发送处理。
具体的,本实施例中的看门狗模块具体包括:
第一通道使能寄存器,用于设置多路软件喂狗信号的使能控制位,在本实施例中用于设置32路软件喂狗信号的使能控制位,通过调用软件喂狗信号使能函数来将第一通道使能寄存器相对应的控制位置为1,来使能该控制位所对应的软件喂狗信号;当该控制位置为0时,则关断该控制位所对应的软件喂狗信号。
第二通道使能寄存器,用于设置多路硬件喂狗信号的使能控制位,可用于设置32路硬件喂狗信号的使能控制位,通过调用硬件喂狗信号使能函数来将第二通道使能寄存器相对应的控制位置为1,来使能该控制位所对应的硬件喂狗信号;当该控制位置为0时,则关断该控制位所对应的硬件喂狗信号。
在运行过程中,通过看门狗配置代码段对看门狗模块的第一通道使能寄存器和第二通道使能寄存器进行配置,将第一通道使能寄存器和第二通道使能寄存器中的存储位设置为1,以实现该存储位所对应的喂狗通道的使能;当该存储位设置为0时,则关闭该存储位所对应的喂狗通道。
工作模式寄存器,用于设置看门狗模块进行喂狗通道切换的工作模式,看门狗模块的工作模式包括单线程模式和多线程模式,本实施例中的看门狗模块的喂狗通道切换的工作模式设置为单线程模式。
在运行过程中,通过看门狗配置代码段对看门狗模块的工作模式寄存器进行配置,将看门狗模块进行通道切换的工作模式设置为单线程模式。
喂狗信号选择寄存器,用于设置喂狗信号与喂狗通道的对应关系,本实施例中通过给不同的喂狗信号分配不同的喂狗通道来解决程序跑飞又回到正常流程而监测不到的情况,通过为喂狗信号分配不同的喂狗通道,在捕捉到喂狗操作的产生的喂狗信号时,可用于验证相应的喂狗通道上是否捕捉到了喂狗信号。
在运行过程中,通过看门狗配置代码段对看门狗模块的喂狗信号选择寄存器进行配置,设置喂狗信号与喂狗通道的对应关系。
第一多路选择器,用于接收多路喂狗信号;第一多路选择器与喂狗信号选择寄存器相连接,第一多路选择器根据喂狗信号选择寄存器中设置的喂狗信号与喂狗通道之间的对应关系将喂狗信号按指定的喂狗通道输出为喂狗输入信号。
第二多路选择器,与第一多路选择器相连接,接收第一多路选择器输出的多路喂狗输入信号。
通道选择状态机,与第二多路选择器相连接,发送通道选择信号至第二多路选择器,用以第二多路选择器根据通道选择信号选择多路喂狗输入信号中的一路输出为通道喂狗信号;通道选择状态机分别与第一通道使能寄存器、第二通道使能寄存器和工作模式寄存器相连接,接收使能的软件喂狗信号、使能的硬件喂狗信号和喂狗通道切换的工作模式;本实施例中的工作模式为单线程模式,通道选择状态机在单线程模式时,当喂狗通道的监控时间完成时,会切换到下一通道进行监控。具体要监控的喂狗通道已通过使能喂狗信号代码行设置在第一通道使能寄存器和第二通道使能寄存器中,通道选择状态机读取第一通道使能寄存器和第二通道使能寄存器中的已使能的喂狗通道进行依次监控。
时间窗口上限寄存器,用于设置喂狗信号对应的喂狗时间窗口上限值。
时间窗口下限寄存器,用于设置喂狗信号对应的喂狗时间窗口下限值。
在运行过程中,通过看门狗配置代码段对看门狗模块的时间窗口上限寄存器和时间窗口下限寄存器进行设置,将喂狗通道编号和喂狗时间窗口上限值设置到时间窗口上限寄存器中,将喂狗通道编号和喂狗时间窗口下限值设置到时间窗口下限寄存器中。
时间片寄存器,用于设置喂狗信号对应的喂狗时间片值。
在运行过程中,通过看门狗配置代码段对看门狗模块的时间片寄存器进行设置,将喂狗通道编号和喂狗时间片值设置到时间片寄存器中。
信号捕捉器,与第二多路选择器相连接,根据预设捕捉模式捕捉第二多路选择器输出的通道喂狗信号。
具体的,信号捕捉器读取控制寄存器CTR中的CP_MODE位,并根据CP_MODE位设置的预设捕捉模式来捕捉通道喂狗信号,本实施例中采用的预设捕捉模式为上升沿捕捉,当信号捕捉器捕捉到通道喂狗信号的上升沿时,视为捕捉成功;当信号捕捉器捕捉通道喂狗信号成功时,输出捕捉成功信号;
时钟模块,接收多路时钟源信号,并根据时钟选择信号选择多路时钟源信号中的一路作为时钟源,并根据预分频系数对时钟源进行分频处理输出分频时钟源信号,并根据时钟使能信号控制分频时钟源信号的输出。
具体的,看门狗模块的定时器具有四种时钟输入,分别为:系统时钟、慢速时钟及两路预留的时钟源。时钟模块读取控制寄存器CTR中的CLK_SEL位,根据CLK_SEL位设置的时钟编号选择多路时钟源信号的一路作为时钟源。然后再读取控制寄存器CTR中的预分频系数PS_CFG位,根据PS_CFG位设置的预分频系数对时钟源进行分频处理并输出分频时钟源信号,并将分频时钟源信号输出至定时器,供定时器使用。同时,时钟模块还读取控制寄存器CTR中的CLK_EN位,并根据CLK_EN位的设置控制分频时钟源信号的使能或者关闭。
定时器,与通道选择状态机相连接,接收通道选择状态机发送的启动信号。通道选择状态机在开始每个喂狗通道的监控时,会发送启动信号至定时器,定时器在接收到启动信号时,根据启动信号启动递增计数,并将计数结果值实时保存至自由计数值寄存器中备用。定时器还与信号捕捉器相连接,接收信号捕捉器输出的捕捉成功信号;当定时器接收到捕捉成功信号后,说明当前喂狗通道的喂狗信号已到达,此时,定时器将当前计数值作为捕捉计数值保存至捕捉寄存器中,即捕捉计数值表示从定时器开始计时到捕捉到当前喂狗信号的时间。同时定时器输出比较使能信号,用于比较器对喂狗信号到达的时间进行比较判断以确定喂狗信号到达的时机是否正确,是否需要输出复位信号。定时器还与时钟模块相连接,接收时钟模块输出的分频时钟源信号作为定时器的计数时钟。
比较器,与定时器相连接,用于判断当前喂狗信号到达时机是否正确并以此来判断单任务流程是否跑飞。当比较器接收到定时器输出的比较使能信号后,比较器读取捕捉寄存器中的捕捉计数值,同时读取该喂狗信号对应的时间窗口上限寄存器中保存的喂狗时间窗口上限值,以及读取该喂狗信号对应的时间窗口下限寄存器中保存的喂狗时间窗口下限值,然后判断捕捉计数值是否在喂狗时间窗口上限值和喂狗时间窗口下限值之间并生成喂狗结果;喂狗结果包括:当捕捉计数值在喂狗时间窗口上限值和喂狗时间窗口下限值之间时,说明程序执行正常,喂狗结果记录为正确;或者当捕捉计数值大于喂狗时间窗口上限值或者小于喂狗时间窗口下限值时,说明程序执行异常,未能在时间窗口内捕获喂狗信号,喂狗结果记录为错误;比较器还读取自由计数值寄存器中的计数结果值,以及时间片寄存器中保存的该喂狗信号对应的喂狗时间片值,并判断计数结果值是否等于喂狗时间片值,当计数结果值等于喂狗时间片值时生成监控完成信号。
控制逻辑模块,与比较器相连接,接收比较器输出的喂狗结果和监控完成信号;当喂狗结果错误时,输出复位信号;当喂狗结果正确并且接收到监控完成信号时,输出状态切换信号至通道选择状态机。
具体的,控制逻辑模块用于对比较器生成的喂狗结果和监控完成信号进行判断。如果喂狗结果错误时,控制逻辑模块输出复位信号;如果喂狗结果正确时,此时不做操作,需继续等待监控完成信号,当接收到监控完成信号后,说明当前喂狗信号的监控时间已到,此时,输出状态切换信号给通道选择状态机,同时发送停止计数信号和计数清零信号至定时器。定时器根据计数清零信号和停止计数信号对当前计数值进行清零并停止计数。通道选择状态机在接收到状态切换信号后进行喂狗通道切换,切换至下一路喂狗通道进行监测,具体切换操作包括:将下一路通道选择信号发送至第二多路选择器,同时将启动信号发送至定时器,同时将状态切换完成信号返回至控制逻辑模块。控制逻辑模块在接收到状态切换完成信号后对自身进行复位等待下一次的逻辑判断。如果控制逻辑模块在接收到监控完成信号时,仍没有接收到正确的喂狗结果,说明第一代码段执行超时,输出复位信号。
控制寄存器,用于设置时钟选择信号的控制位、预分频系数、时钟使能信号的控制位、输入使能信号的控制位和预设捕捉模式。
在运行过程中,通过看门狗配置代码段对看门狗模块的控制寄存器进行初始化,设置控制寄存器中的时钟选择信号的控制位、预分频系数和预设捕捉模式;同时对控制寄存器中的时钟使能信号的控制位和输入使能信号的控制位进行使能操作。
在运行过程中,各个喂狗代码段根据喂狗信号的喂狗信号编号向看门狗模块的第一多路选择器发送相对应的喂狗信号。
看门狗模块在接收到喂狗代码段发送的喂狗信号时,判断定时器的当前计数值是否在喂狗时间窗口上限值和喂狗时间窗口下限值之间,若不在,则输出复位信号。
看门狗模块比较自由计数值寄存器中的计数结果值与时间片寄存器中的喂狗时间片值,当计数结果值等于喂狗时间片值并且尚未接收到喂狗信号时,即该喂狗信号的监控时间已到,但仍未接收到相应的喂狗信号,说明第一代码段执行超时,则输出复位信号。
步骤104,在运行过程中对看门狗模块是否输出复位信号进行识别,若是则确认第一代码段在运行过程中执行超时。
具体的,在运行过程中,对看门狗模块是否输出复位信号进行识别,如果监控到看门狗模块的控制逻辑模块输出了复位信号,则确认第一代码段在运行过程中出现执行超时的情况。
本发明实施例二提供了一种任务超时处理装置,图2为本发明实施例二提供的一种任务超时处理装置的模块结构图,如图2所示,该装置包括:
配置模块201,用于在第一代码段之前设置看门狗配置代码段;
喂狗模块202,用于在第一代码段之后设置喂狗代码段;
运行模块203,用于运行软件流程;并在运行过程中通过看门狗配置代码段对看门狗模块进行初始化处理;并在运行过程中通过各个喂狗代码段对看门狗模块进行喂狗信号发送处理;
判断模块204,用于在运行过程中对看门狗模块是否输出复位信号进行识别,若是则确认第一代码段在运行过程中执行超时。
本发明实施例二提供的一种任务超时处理装置,用以执行本发明实施例一提供的方法的步骤,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,获取模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上获取模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所描述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,本发明实施例提供的方法的各步骤或本发明实施例提供的装置的各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,本发明实施例提供的装置的模块可以是被配置成本发明实施例提供的方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application SpecificIntegrated Circuit,ASIC),或,一个或多个数字信号处理器(Digital SignalProcessor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。再如,当本发明实施例提供的装置的某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,CPU)或其它可以调用程序代码的处理器。再如,本发明实施例提供的装置的这些模块可以集成在一起,以片上系统(System On Chip,SOC)的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本发明实施例提供的方法所描述的流程或功能。上述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线路((Digital Subscriber Line,DSL))或无线(例如红外、无线、蓝牙、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本发明实施例提供的一种任务超时处理方法及装置,通过在软件流程中的第一代码段之前设置看门狗配置代码段,对看门狗模块进行初始化处理;在第一代码段之后设置喂狗代码段,对看门狗模块进行喂狗信号发送处理;并在软件流程运行过程中对看门狗模块是否输出复位信号进行识别,若是则确认第一代码段在运行过程中执行超时。本发明通过在软件流程中为不同的代码段进行单独的看门狗配置,实现对软件流程中不同的代码段进行精准监控。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。