发明内容
本发明的目的,就是针对现有技术的不足,提供一种基于看门狗防范硬件内部流程跑飞的处理方法及装置,通过设置信号生成模块连接硬件模块,通过将信号生成模块连接至硬件模块从而使信号生成模块产生硬件喂狗信号,并将硬件喂狗信号发送至看门狗模块的输入端,使看门狗模块能够实时接收硬件模块通过信号生成模块产生的硬件喂狗信号,从而实现对硬件模块的实时监控。
为实现上述目的,本发明实施例第一方面提供了一种基于看门狗防范硬件内部流程跑飞的处理方法,所述方法包括:
通过看门狗配置代码段对看门狗模块进行初始化处理;
通过信号生成模块连接硬件模块,使所述硬件模块通过所述信号生成模块生成硬件喂狗信号;
将所述硬件喂狗信号发送至所述看门狗模块的输入端;
对所述看门狗模块是否输出复位信号进行识别,若是则确认所述硬件内部流程在运行过程中发生跑飞故障。
优选的,所述信号生成模块包括:第一信号生成模块、第二信号生成模块和第三信号生成模块。
进一步优选的,所述方法还包括:
通过所述第一信号生成模块接收第一硬件模块的写操作,并根据所述第一硬件电路的写操作生成硬件喂狗信号;
通过所述第二信号生成模块接收第二硬件模块的输入信号,并根据所述第二硬件电路的输入信号生成硬件喂狗信号;
通过所述第三信号生成模块以预设频率生成硬件喂狗信号。
优选的,所述看门狗配置代码段包括:
时钟配置代码行,所述时钟配置代码行的参数包括时钟编号和预分频系数;所述看门狗模块根据所述时钟编号选择时钟源,并根据所述预分频系数对所述时钟源进行分频处理;
工作模式配置代码行,所述工作模式配置代码行的参数包括工作模式参数;所述看门狗模块根据所述工作模式参数设置所述看门狗模块的工作模式;所述工作模式包括单线程模式和多线程模式;
捕捉方式配置代码行,所述捕捉方式配置代码行的参数包括捕捉方式参数;所述看门狗模块根据所述捕捉方式参数设置所述看门狗模块的信号捕捉方式;所述信号捕捉方式包括上升沿捕捉方式和高电平捕捉方式;
多个喂狗通道配置代码行,每个所述喂狗通道配置代码行的参数包括喂狗信号编号和喂狗通道编号,用于将所述喂狗信号编号对应的喂狗信号与所述喂狗通道编号对应的喂狗通道进行绑定;
多个喂狗时间窗口配置代码行,每个所述喂狗时间窗口配置代码行的参数包括喂狗通道编号、喂狗时间窗口上限值和喂狗时间窗口下限值,用于设置所述喂狗通道编号对应的喂狗通道的喂狗时间窗口上限值和喂狗时间窗口下限值;
多个喂狗时间片配置代码行,每个所述喂狗时间片配置代码行的参数包括喂狗通道编号和喂狗时间片值,用于设置所述喂狗通道编号对应的喂狗通道的喂狗时间片值。
进一步优选的,所述看门狗配置代码段还包括:
使能时钟代码行,用于使能所述时钟源;
使能喂狗信号代码行,所述使能喂狗信号代码行的参数包括喂狗通道编号,用于使能所述喂狗通道编号对应的喂狗通道;
使能捕捉输入信号代码行,用于使能所述看门狗模块的信号捕捉器的输入信号。
优选的,所述看门狗模块包括:
第一通道使能寄存器,用于设置多路软件喂狗信号对应的喂狗通道的使能控制位;
第二通道使能寄存器,用于设置多路硬件喂狗信号对应的喂狗通道的使能控制位;
工作模式寄存器,用于存储所述看门狗模块进行喂狗通道切换的工作模式;所述工作模式包括单线程模式和多线程模式;
喂狗信号选择寄存器,用于设置喂狗信号与喂狗通道的对应关系;
第一多路选择器,用于接收多路喂狗信号;所述第一多路选择器与所述喂狗信号选择寄存器相连接,所述第一多路选择器根据所述喂狗信号选择寄存器将所述喂狗信号输出为喂狗输入信号;
第二多路选择器,与所述第一多路选择器相连接,接收所述第一多路选择器输出的多路所述喂狗输入信号;
通道选择状态机,与所述第二多路选择器相连接,发送通道选择信号至所述第二多路选择器,用以所述第二多路选择器根据所述通道选择信号选择多路所述喂狗输入信号中的一路输出为通道喂狗信号;所述通道选择状态机分别与所述第一通道使能寄存器、第二通道使能寄存器和工作模式寄存器相连接,所述通道选择状态机从所述第一通道使能寄存器和第二通道使能寄存器中读取已使能的喂狗通道,从所述工作模式寄存器中读取喂狗通道切换的工作模式;
时间窗口上限寄存器,用于设置所述喂狗信号对应的喂狗时间窗口上限值;
时间窗口下限寄存器,用于设置所述喂狗信号对应的喂狗时间窗口下限值;
时间片寄存器,用于设置所述喂狗信号对应的喂狗时间片值;
信号捕捉器,与所述第二多路选择器相连接,根据预设捕捉模式捕捉所述第二多路选择器输出的所述通道喂狗信号;当所述工作模式为单线程模式并且所述信号捕捉器捕捉所述通道喂狗信号成功时,所述信号捕捉器输出捕捉成功信号;当所述工作模式为多线程模式并且所述信号捕捉器捕捉所述通道喂狗信号成功时,所述信号捕捉器根据所述通道喂狗信号的喂狗通道编号设置第一捕捉信号标志寄存器或者第二捕捉信号标志寄存器中相对应的控制位;所述第一捕捉信号标志寄存器与所述第一通道使能寄存器相对应;所述第二捕捉信号标志寄存器与所述第二通道使能寄存器相对应;
时钟模块,接收多路时钟源信号,并根据时钟选择信号选择所述多路时钟源信号中的一路作为时钟源,并根据预分频系数对所述时钟源进行分频处理输出分频时钟源信号,并根据时钟使能信号控制所述分频时钟源信号的输出;
定时器,与所述通道选择状态机相连接,接收所述通道选择状态机发送的启动信号,根据所述启动信号启动递增计数,并将计数结果值保存至自由计数值寄存器中;所述定时器还与所述信号捕捉器相连接,接收所述信号捕捉器输出的所述捕捉成功信号;当所述定时器接收到所述捕捉成功信号后,所述定时器将当前计数值作为捕捉计数值保存至捕捉寄存器中,同时输出比较使能信号;所述定时器还与所述时钟模块相连接,接收所述时钟模块输出的所述分频时钟源信号作为所述定时器的计数时钟;
比较器,与所述定时器相连接;所述比较器读取所述自由计数值寄存器中的计数结果值,判断所述计数结果值是否等于所述喂狗时间片值并生成监控完成信号;
控制逻辑模块,与所述比较器相连接,接收所述比较器输出的监控完成信号;当所述控制逻辑模块接收到所述监控完成信号时,所述控制逻辑模块比较所述第一捕捉信号标志寄存器和第一通道使能寄存器的值是否相等,若不相等则输出复位信号,同时比较所述第二捕捉信号标志寄存器和第二通道使能寄存器的值是否相等,若不相等则输出复位信号;
控制寄存器,用于设置所述时钟选择信号的控制位、预分频系数、时钟使能信号的控制位、输入使能信号的控制位和预设捕捉模式。
进一步优选的,所述通过看门狗配置代码段对看门狗模块进行初始化处理,具体包括:
通过所述看门狗配置代码段对所述看门狗模块的控制寄存器进行初始化,设置所述控制寄存器中的时钟选择信号的控制位、预分频系数和预设捕捉模式;通过所述看门狗配置代码段将所述控制寄存器中的时钟使能信号的控制位和输入使能信号的控制位设置为使能;
通过所述看门狗配置代码段将所述看门狗模块的工作模式配置为多线程模式;
通过所述看门狗配置代码段对所述看门狗模块的喂狗信号选择寄存器进行配置,设置所述喂狗信号与所述喂狗通道的对应关系;
通过所述看门狗配置代码段对所述看门狗模块的时间窗口上限寄存器和时间窗口下限寄存器进行配置,通过所述喂狗通道的喂狗通道编号将喂狗时间窗口上限值设置到所述喂狗通道编号对应的所述时间窗口上限寄存器中,通过所述喂狗通道的喂狗通道编号将喂狗时间窗口下限值设置到所述喂狗通道编号对应的所述时间窗口下限寄存器中;
通过所述看门狗配置代码段对所述看门狗模块的时间片寄存器进行配置,通过所述喂狗通道的喂狗通道编号将喂狗时间片值设置到所述喂狗通道编号对应的所述时间片寄存器中;
通过所述看门狗配置代码段对所述看门狗模块的第一通道使能寄存器和第二通道使能寄存器进行配置,将所述第一通道使能寄存器和第二通道使能寄存器中与所述喂狗通道相对应的控制位设置为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(0x00);
捕捉方式配置代码行,用于设置看门狗模块中捕捉喂狗输入信号的捕捉方式,其参数为捕捉方式参数,用于看门狗模块根据捕捉方式参数设置看门狗模块中的信号捕捉方式。
捕捉方式配置函数的伪代码如下:
其中,cp_mode表示信号捕捉方式,CTR.CP_MODE为控制寄存器CTR中的字段,用于存储具体的信号捕捉方式。信号捕捉方式cp_mode的具体取值包括:0x00:上升沿捕捉,0x01:下降沿捕捉,0x02:低电平捕捉,0x03:高电平捕捉。
例如:在看门狗模块的工作模式为多线程模式时,需要将信号捕捉方式设置为高电平捕捉,则调用捕捉方式配置函数的捕捉方式配置代码行的伪代码描述如下:
cp_mode_set(0x03);
喂狗通道配置代码行,用于将喂狗信号的喂狗信号编号与喂狗通道的喂狗通道编号进行绑定,实现为喂狗信号分配不同的喂狗通道,其参数包括喂狗信号编号和喂狗通道编号。
喂狗通道配置函数的伪代码如下:
其中,channel表示喂狗信号编号,S_IN表示喂狗通道编号,喂狗通道的设置存储于喂狗信号选择寄存器(SEL0~SEL63)中,共64个喂狗通道,寄存器SEL0~SEL63的地址依次排列,且每一个寄存器的地址偏移为0x04,因此,在设置时,选择SEL0寄存器地址作为基地址。通过喂狗通道配置函数可以选择哪一路喂狗信号作为S_INx通道信号。
例如:选择喂狗信号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_IN2的喂狗时间片的具体需求为240ms,则喂狗时间片值为:t_limit=240ms/16us=0x3A98,那么调用喂狗时间片配置函数配置喂狗通道S_IN2相对应的喂狗时间片值的喂狗时间片配置代码行的伪代码如下:
wdg_monitor_time(2,0x3A98);
多个喂狗时间片配置代码行可以针对每一个喂狗通道独立设置该喂狗通道相对应的喂狗时间片值。在单任务流程中,只有该喂狗通道的监控时间等于该喂狗通道设置的喂狗时间片值时,才能切换到下一路喂狗通道监控下一路喂狗信号。该喂狗时间片值是软件实际运行时间,例如软件流程中的要监控的步骤n的运行时间为Tn,则监控该步骤所对应的喂狗时间片值即为Tn,Tn是在软件调试过程中得出的,或者根据反汇编得出的指令数量计算得到的。在本实施例的对硬件内部流程的监控中,多个硬件模块的喂狗时间片值设置为相同的值,并且看门狗模块对于多个硬件模块的喂狗通道采用轮询监控的方式进行监控。
进一步的,看门狗配置代码段还包括:
使能时钟代码行,用于使能看门狗模块的定时器所使用的时钟源;通过配置控制寄存器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,通过信号生成模块连接硬件模块,使硬件模块通过信号生成模块生成硬件喂狗信号。
具体的,要实现看门狗模块对硬件内部流程的监控,需要硬件模块能够产生硬件喂狗信号,并将硬件喂狗信号发送至看门狗模块的硬件喂狗信号输入端,才能实现看门狗模块对硬件内部流程的监控。
因此,在硬件模块及看门狗模块之间设置信号生成模块,通过信号生成模块连接硬件模块,使硬件模块通过信号生成模块生成硬件喂狗信号。
进一步的,信号生成模块包括:第一信号生成模块、第二信号生成模块和第三信号生成模块。其中,第一信号生成模块可以为GPIO(General Purpose Input Output,通用输入/输出口)模块,该模块的一个管脚具有硬件喂狗功能,当该管脚的输入状态变化或者对其进行写操作时,该模块生成硬件喂狗信号并发出。因此,当第一硬件模块连接第一信号生成模块,并向其中的具有硬件喂狗功能的管脚进行写操作时,第一信号生成模块便会生成一个硬件喂狗信号,其中,第一硬件模块与第一信号生成模块相连接,第一硬件模块能够引起第一信号生成模块的具有硬件喂狗功能的管脚的状态变化,或者能够向该管脚进行写操作。
第二信号生成模块可以为SPI(Serial Peripheral Interface,串行外设接口)从模块,当相应的第二硬件模块中的SPI主模块访问该SPI从模块时,该SPI从模块就会发出硬件喂狗信号,其中,第二硬件模块为具有SPI主模块的硬件模块,其能够访问第二信号生成模块,并使其生成硬件喂狗信号。
第三信号生成模块可以为RTC(Real Time Clock,实时时钟)模块,当该模块计数达到一定时间时就会发出硬件喂狗信号。
步骤103,将硬件喂狗信号发送至看门狗模块的输入端。
具体的,将信号生成模块生成的硬件喂狗信号发送至看门狗模块的输入端,用以实现对看门狗模块的喂狗操作。输入端能够接收32路的硬件喂狗信号,并作为看门狗模块的输入信号。在系统集成时,将信号生成模块中的多个第一信号生成模块、多个第二信号生成模块及多个第三信号生成模块生成的硬件喂狗信号分别连接至看门狗的输入端。
进一步的,本实施例中的看门狗模块具体包括:
第一通道使能寄存器,用于设置多路软件喂狗信号的使能控制位,可用于设置32路软件喂狗信号的使能控制位,通过调用软件喂狗信号使能函数来将第一通道使能寄存器相对应的控制位置为1,来使能该控制位所对应的软件喂狗信号;当该控制位置为0时,则关断该控制位所对应的软件喂狗信号。
第二通道使能寄存器,用于设置多路硬件喂狗信号的使能控制位,在本实施例中用于保存32路硬件喂狗信号的使能控制位,通过调用硬件喂狗信号使能函数来将第二通道使能寄存器相对应的控制位置为1,来使能该控制位所对应的硬件喂狗信号;当该控制位置为0时,则关断该控制位所对应的硬件喂狗信号。
本实施例中的看门狗模块所能够接收64路的喂狗信号,包括32路的软件喂狗信号和32路的硬件喂狗信号。
在运行过程中,通过看门狗配置代码段对看门狗模块的第一通道使能寄存器和第二通道使能寄存器进行配置,将第一通道使能寄存器和第二通道使能寄存器中的存储位设置为1,以实现该存储位所对应的喂狗通道的使能;当该存储位置为0时,则关闭该存储位所对应的喂狗通道。其中,第一通道使能寄存器用于对32路的软件喂狗信号对应的喂狗通道进行使能,第二通道使能寄存器用于对32路的硬件喂狗信号对应的喂狗通道进行使能。
工作模式寄存器,用于存储看门狗模块进行喂狗通道切换的工作模式,看门狗模块的工作模式包括单线程模式和多线程模式,本实施例中的看门狗模块的喂狗通道切换的工作模式采用多线程模式。
在运行过程中,通过看门狗配置代码段对看门狗模块的工作模式寄存器进行配置,将看门狗模块进行通道切换的工作模式设置为多线程模式。
喂狗信号选择寄存器,用于存储喂狗信号与喂狗通道的对应关系,本实施例中通过给不同的喂狗信号分配不同的喂狗通道来实现对多个硬件内部流程的同时监控,通过位喂狗信号分配不同的喂狗通道,使看门狗模块通过比较捕捉到的喂狗信号的实际喂狗通道与已经使能的喂狗通道是否相同来判断是否有硬件内部流程存在异常。
在运行过程中,通过看门狗配置代码段对看门狗模块的喂狗信号选择寄存器进行配置,设置喂狗信号与喂狗通道的对应关系。
第一多路选择器,用于接收多路喂狗信号;第一多路选择器与喂狗信号选择寄存器相连接,第一多路选择器根据喂狗信号选择寄存器中存储的喂狗信号与喂狗通道之间的对应关系将喂狗信号按指定的喂狗通道输出为喂狗输入信号。
第二多路选择器,与第一多路选择器相连接,接收第一多路选择器输出的多路喂狗输入信号。
通道选择状态机,与第二多路选择器相连接,发送通道选择信号至第二多路选择器,用以第二多路选择器根据通道选择信号选择多路喂狗输入信号中的一路输出为通道喂狗信号;通道选择状态机分别与第一通道使能寄存器、第二通道使能寄存器和工作模式寄存器相连接,接收使能的软件喂狗通道、使能的硬件喂狗通道和喂狗通道切换的工作模式;本实施例中的工作模式为多线程模式,通道选择状态机在多线程模式时,对已经使能的多个喂狗通道进行轮询监控。同时,在每个喂狗通道监控完成时对第一捕捉信号标志寄存器和第一通道使能寄存器进行比较,以及对第二捕捉信号标志寄存器和第二通道使能寄存器进行比较,以确定已使能的喂狗信号是否被捕捉到。其中,第一捕捉信号标志寄存器存储有已捕捉到的软件喂狗信号对应的喂狗通道,第一通道使能寄存器存储有已使能的软件喂狗通道;第二捕捉信号标志寄存器存储有已捕捉到的硬件喂狗信号对应的喂狗通道,第二通道使能寄存器存储有已使能的硬件喂狗通道。
时间窗口上限寄存器,用于设置喂狗信号对应的喂狗时间窗口上限值。
时间窗口下限寄存器,用于设置喂狗信号对应的喂狗时间窗口下限值。
在运行过程中,通过看门狗配置代码段对看门狗模块的时间窗口上限寄存器和时间窗口下限寄存器进行配置,将喂狗通道编号和喂狗时间窗口上限值设置到时间窗口上限寄存器中,将喂狗通道编号和喂狗时间窗口下限值设置到时间窗口下限寄存器中。
时间片寄存器,用于设置喂狗信号对应的喂狗时间片值。
在运行过程中,通过看门狗配置代码段对看门狗模块的时间片寄存器进行配置,将喂狗通道编号和喂狗时间片值设置到时间片寄存器中。
信号捕捉器,与第二多路选择器相连接,根据预设捕捉模式捕捉第二多路选择器输出的通道喂狗信号。
具体的,信号捕捉器读取控制寄存器CTR中的CP_MODE位,并根据CP_MODE位设置的预设捕捉模式来捕捉通道喂狗信号,本实施例中采用的预设捕捉模式为高电平捕捉,当信号捕捉器捕捉到通道喂狗信号的高电平时,视为捕捉成功;当信号捕捉器捕捉通道喂狗信号成功时,根据通道喂狗信号所对应的喂狗通道编号设置第二捕捉信号标志寄存器中相应的数据位。在单线程模式中,信号捕捉器采用的预设捕捉模式为上升沿捕捉,当信号捕捉器捕捉到通道喂狗信号的上升沿时,视为捕捉成功,输出捕捉成功信号。
时钟模块,接收多路时钟源信号,并根据时钟选择信号选择多路时钟源信号中的一路作为时钟源,并根据预分频系数对时钟源进行分频处理输出分频时钟源信号,并根据时钟使能信号控制分频时钟源信号的输出。
具体的,看门狗模块的定时器具有四种时钟输入,分别为:系统时钟、慢速时钟及两路预留的时钟源。时钟模块读取控制寄存器CTR中的CLK_SEL位,根据CLK_SEL位设置的时钟编号选择多路时钟源信号的一路作为时钟源。然后再读取控制寄存器CTR中的预分频系数PS_CFG位,根据PS_CFG位设置的预分频系数对时钟源进行分频处理并输出分频时钟源信号,并将分频时钟源信号输出至定时器,供定时器使用。同时,时钟模块还读取控制寄存器CTR中的CLK_EN位,并根据CLK_EN位的设置控制分频时钟源信号的使能或者关闭。
定时器,与通道选择状态机相连接,接收通道选择状态机发送的启动信号。通道选择状态机在开始每个喂狗通道的监控时,会发送启动信号至定时器,定时器在接收到启动信号时,根据启动信号启动递增计数,并将计数结果值实时保存至自由计数值寄存器中备用。定时器还与信号捕捉器相连接,接收信号捕捉器输出的捕捉成功信号;当定时器接收到捕捉成功信号后,说明当前喂狗通道的喂狗信号已到达,此时,定时器将当前计数值作为捕捉计数值保存至捕捉寄存器中,即捕捉计数值表示从定时器开始计时到捕捉到当前喂狗信号的时间。同时定时器输出比较使能信号,用于比较器对喂狗信号到达的时间进行比较判断以确定喂狗信号到达的时机是否正确,是否需要输出复位信号。定时器还与时钟模块相连接,接收时钟模块输出的时钟源信号作为定时器的计数时钟。
比较器,与定时器相连接,用于判断当前喂狗信号到达时机是否正确并以此来判断硬件内部流程是否跑飞。当比较器接收到定时器输出的比较使能信号后,比较器读取捕捉寄存器中的捕捉计数值,同时读取该喂狗信号对应的时间窗口上限寄存器中保存的喂狗时间窗口上限值,以及读取该喂狗信号对应的时间窗口下限寄存器中保存的喂狗时间窗口下限值,然后判断捕捉计数值是否在喂狗时间窗口上限值和喂狗时间窗口下限值之间并生成喂狗结果;喂狗结果包括:当捕捉计数值在喂狗时间窗口上限值和喂狗时间窗口下限值之间时,说明程序执行正常,喂狗结果记录为正确;或者当捕捉计数值大于喂狗时间窗口上限值或者小于喂狗时间窗口下限值时,说明程序执行异常,未能在时间窗口内捕获喂狗信号,喂狗结果记录为错误;比较器还读取自由计数值寄存器中的计数结果值,以及时间片寄存器中保存的该喂狗信号对应的喂狗时间片值,并判断计数结果值是否等于喂狗时间片值,当计数结果值等于喂狗时间片值时生成监控完成信号,其中,监控完成信号为高电平信号。
控制逻辑模块,与比较器相连接,接收比较器输出的监控完成信号;当接收到监控完成信号时,比较所述第一捕捉信号标志寄存器和第一通道使能寄存器,比较所述第二捕捉信号标志寄存器和第二通道使能寄存器,若所述第一捕捉信号标志寄存器的控制位和所述第一通道使能寄存器的控制位不相同或者所述第二捕捉信号标志寄存器的控制位和所述第二通道使能寄存器的控制位不相同,则输出复位信号。
具体的,控制逻辑模块用于对比较器生成的喂狗结果和监控完成信号进行判断。当工作模式为单线程模式时,如果喂狗结果错误,控制逻辑模块输出复位信号;如果喂狗结果正确时,此时不做操作,需继续等待监控完成信号;当工作模式为多线程模式时,控制逻辑模块接收到监控完成信号后,比较第一捕捉信号标志寄存器和第一通道使能寄存器,以及比较第二捕捉信号标志寄存器和第二通道使能寄存器,如果第一捕捉信号标志寄存器的控制位和第一通道使能寄存器的控制位不相同或者第二捕捉信号标志寄存器的控制位和第二通道使能寄存器的控制位不相同,说明多个硬件模块的喂狗信号中至少有一路喂狗信号未能正确到达,该硬件模块的内部流程存在执行跑飞情况,此时输出复位信号。
控制寄存器,用于设置时钟选择信号的控制位、预分频系数、时钟使能信号的控制位、输入使能信号的控制位和预设捕捉模式。
在运行过程中,通过看门狗配置代码段对看门狗模块的控制寄存器进行初始化,设置控制寄存器中的时钟选择信号的控制位、预分频系数和预设捕捉模式;同时对控制寄存器中的时钟使能信号的控制位和输入使能信号的控制位进行使能操作,即将它们设置为1。
在运行过程中,各个喂狗代码段根据喂狗信号的喂狗信号编号向看门狗模块的第一多路选择器发送相对应的喂狗信号。
看门狗模块在接收到喂狗代码段发送的喂狗信号时,在单线程模式下,判断定时器的当前计数值是否在喂狗时间窗口上限值和喂狗时间窗口下限值之间,若不在,则输出复位信号。
看门狗模块比较自由计数值寄存器中的计数结果值与时间片寄存器中的喂狗时间片值,当计数结果值不小于喂狗时间片值并且尚未接收到喂狗信号时,输出复位信号。
在多线程模式下,看门狗模块对多个硬件模块对应的多个喂狗通道进行轮询监控。同时,在每一个喂狗通道监控结束时,比较第一捕捉信号标志寄存器和第一通道使能寄存器,以及比较第二捕捉信号标志寄存器和第二通道使能寄存器,如果第一捕捉信号标志寄存器的控制位和第一通道使能寄存器的控制位不相同或者第二捕捉信号标志寄存器的控制位和第二通道使能寄存器的控制位不相同,说明多个硬件模块的内部流程中至少有一路喂狗信号未能正确到达,该硬件内部流程存在执行跑飞情况,此时输出复位信号。
步骤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、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。