一种基于多核系统的硬件看门狗控制方法及系统与流程

文档序号:11133762阅读:891来源:国知局
一种基于多核系统的硬件看门狗控制方法及系统与制造工艺

本发明涉及嵌入式系统技术领域,尤其涉及一种基于多核系统的硬件看门狗控制方法及系统。



背景技术:

在嵌入式应用领域,为了防止系统死机,或者保证系统实时性防止某任务超长运行,采用硬件看门狗机制很普遍。硬件看门狗由硬件电路或相关芯片实现,在特定时间内(一般1.6秒钟)没有对其清狗(reset),看门狗会自动拉低CPU的#RESET信号,让CPU硬复位。这样看来,既要看门狗能发挥作用,又不能让其错误的复位系统。一般的做法是应用程序定时的去清狗,方法包括:在tick中断清狗、在任务切换的钩子函数中清狗、专门创建清狗任务。

对于单核系统,以上的三种方法都能很好的实现看门狗功能。但是在多核AMP系统下,其中AMP 为Asymmetric Multi-Processing的缩写,其中AMP系统为非对称多处理系统。是因为整个系统的初始化流程是不可逆的,那么系统内的其它核必须复位才行。现有技术中使用硬件内核提供的WATCHDOG_TIMER,它只能复位其所在的核,不能复位CPU芯片内所有的核。因此现有技术中多核在正常运行时,一旦核间通讯中断或者一个或以上的核死机异常等发生,不能复位整个系统。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于现有技术的不足,本发明目的在于提供一种基于多核系统的硬件看门狗控制方法及系统,旨在解决现有技术中使用硬件内核提供的WATCHDOG_TIMER,它只能复位其所在的核,不能复位CPU芯片内所有的核。因此多核在正常运行时,一旦核间通讯中断或者一个或以上的核死机异常等发生,不能复位整个系统的技术问题。

本发明的技术方案如下:

一种基于多核系统的硬件看门狗控制方法,其中,方法包括:

A、主核处理器内核启动后,启动多任务模式,主核处理器每隔第一预定时间向从核处理器发送主核处理器心跳消息;

B、从核处理器接收主核处理器发送的主核处理器心跳消息,并在接收到主核处理器心跳消息后向主核处理器发送从核处理器心跳信息;

C、当检测主核处理器收到从核处理器发送的从核处理器心跳信息,且主核处理器切换任务时,清理看门狗。

所述的基于多核系统的硬件看门狗控制方法,其中,所述A之前还包括:

S、预先在主核处理器中定义一个心跳次数统计变量,当收到从核处理器心跳信息时,心跳次数统计变量加1。

所述的基于多核系统的硬件看门狗控制方法,其中,所述C具体包括:

C1、当检测主核处理器收到从核处理器发送的从核处理器心跳信息后,控制心跳次数统计变量加1;

C2、主核处理器切换任务时,调用任务切换函数,任务切换函数判断心跳次数统计变量是否大于0;

C3、若心跳次数统计变量大于0,则主核处理器调用看门狗清理函数对看门狗进行清理后,控制心跳次数统计变量设置为0。

所述的基于多核系统的硬件看门狗控制方法,其中,所述C还包括:

C11、当检测到主核处理器在第二预定时间内未收到从核处理器心跳信息,则控制看门狗重启系统。

所述的基于多核系统的硬件看门狗控制方法,其中,所述C11之前包括:

C0、若检测到主核处理器在第三预定时间内未收到从核处理器心跳信息,则主核处理器在系统中发送从核处理器故障告警信息。

一种基于多核系统的硬件看门狗控制系统,其中,系统包括:

主核处理器心跳发送模块,用于主核处理器内核启动后,启动多任务模式,主核处理器每隔第一预定时间向从核处理器发送主核处理器心跳消息;

心跳信息接收模块,用于从核处理器接收主核处理器发送的主核处理器心跳消息,并在接收到主核处理器心跳消息后向主核处理器发送从核处理器心跳信息;

看门狗控制模块,用于当检测主核处理器收到从核处理器发送的从核处理器心跳信息,且主核处理器切换任务时,清理看门狗。

所述的基于多核系统的硬件看门狗控制系统,其中,所述系统还包括:

预先定义模块,用于预先在主核处理器中定义一个心跳次数统计变量,当收到从核处理器心跳信息时,心跳次数统计变量加1。

所述的基于多核系统的硬件看门狗控制系统,其中,所述看门狗控制模块具体包括:

第一控制单元,用于当检测主核处理器收到从核处理器发送的从核处理器心跳信息后,控制心跳次数统计变量加1;

判断单元,用于主核处理器切换任务时,调用任务切换函数,任务切换函数判断心跳次数统计变量是否大于0;

清理单元,用于若心跳次数统计变量大于0,则主核处理器调用看门狗清理函数对看门狗进行清理后,控制心跳次数统计变量设置为0。

所述的基于多核系统的硬件看门狗控制系统,其中,所述看门狗控制模块还包括:

第二控制单元,用于当检测到主核处理器在第二预定时间内未收到从核处理器心跳信息,则控制看门狗重启系统。

所述的基于多核系统的硬件看门狗控制系统,其中,所述看门狗控制模块还包括:

告警信息发送单元,用于若检测到主核处理器在第三预定时间内未收到从核处理器心跳信息,则主核处理器在系统中发送从核处理器故障告警信息。

本发明提供了一种基于多核系统的硬件看门狗控制方法及系统,本发明中主核处理器负责清狗,同时主从之间建立心跳机制,主核处理器只有检查到从核处理器的心跳,并且本身有任务切换时,才进行清狗操作,从而使多核在正常运行时,不会被看门狗复位,一旦核间通讯中断或者一个或以上的核死机异常等发生,能复位整个系统。

附图说明

图1为本发明的一种基于多核系统的硬件看门狗控制方法的较佳实施例的流程图。

图2为图1中步骤S300的细化步骤流程图。

图3为本发明的一种基于多核系统的硬件看门狗控制方法的的具体实施例的流程图。

图4为本发明的一种基于多核系统的硬件看门狗控制系统的较佳实施例的功能原理框图。

图5为本发明的一种基于多核系统的硬件看门狗控制系统的具体应用实施例的看门狗控制模块的功能原理框图。

具体实施方式

为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供了一种基于多核系统的硬件看门狗控制方法的较佳实施例的流程图,如图1所示,其中,方法包括:

步骤S100、主核处理器内核启动后,启动多任务模式,主核处理器每隔第一预定时间向从核处理器发送主核处理器心跳消息。

具体实施时,LINUX SMP系统一般采用守护进程负责清狗。主核处理器操作系统内核启动后,多任务模式启动,必然启动任务调度,操作系统调度不同任务执行。同时主核处理器定时发送一个消息给对方证明自己还活着,第一预定时间可根据需要进行设置。

进一步的实施例中,步骤S100之前还包括:

步骤S1、预先在主核处理器中定义一个心跳次数统计变量,当收到从核处理器心跳信息时,心跳次数统计变量加1。

具体实施时,预先主核处理器定义一个心跳次数统计HeartBeatCount,每次心跳定时消息到达时,该计数增加一次,如此累加。

步骤S200、从核处理器接收主核处理器发送的主核处理器心跳消息,并在接收到主核处理器心跳消息后向主核处理器发送从核处理器心跳信息。

具体实施时,从核处理器启动一个心跳任务,任务每隔0.5秒钟调度一次。该任务就负责接收主核处理器发来的心跳,并将自己的心跳发送给主核处理器。

步骤S300、当检测主核处理器收到从核处理器发送的从核处理器心跳信息,且主核处理器切换任务时,清理看门狗。

具体实施时,主核处理器从主从通信接口读取从核处理器发过来的心跳消息,如果收到,将HartBeatCount加1,同时发送心跳给从核处理器。如果没有收到心跳消息,只发送心跳包给从核处理器。在主核处理器的任务切换钩子函数中,判断心跳统计是否大于0,如果大于0,则对看门狗进行清理并且清零心跳统计,否则不清狗。其中看门狗就是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号的电路。看门狗命令在程序的中断中拥有最高的优先级。

如图2所示,步骤S300具体包括:

步骤S301、当检测主核处理器收到从核处理器发送的从核处理器心跳信息后,控制心跳次数统计变量加1;

步骤S302、主核处理器切换任务时,调用任务切换函数,任务切换函数判断心跳次数统计变量是否大于0;

步骤S303、若心跳次数统计变量大于0,则主核处理器调用看门狗清理函数对看门狗进行清理后,控制心跳次数统计变量设置为0后,控制心跳次数统计变量设置为0。

具体实施时,在操作系统调度任务时,会触发任务切换钩子函数。在钩子函数中,判断HartBeatCount是否大于0。如果HartBeatCount大于0,则调用看门狗驱动函数清狗,同时设置HartBeatCount = 0。其中钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。

进一步地,步骤S300还包括:

步骤S311、当检测到主核处理器在第二预定时间内未收到从核处理器心跳信息,则控制看门狗重启系统。

具体实施时,如果主核处理器在第二预定时间内无触发任务切换钩子,那么看门狗自动复位整个系统,此时是主核处理器自己死机或者某任务超长运行了。主核处理器的发送心跳的第一预定时间为0.5s,第二预定时间优先为1.6s。

进一步的实施例中,步骤S311之前包括:

步骤S30、若检测到主核处理器在第三预定时间内未收到从核处理器心跳信息,则主核处理器在系统中发送从核处理器故障告警信息。

具体实施时,当主核处理器在第三预定时间内检测不到心跳,看门狗即将复位系统之前给出告警,提示主从核处理器心跳丢失,从核处理器已经死机。如果没有告警也被看门狗复位了,必然是主核处理器自己死机了。

例如,第三预定时间为3次心跳,即主核处理器心跳任务连续3次收不到从核处理器心跳消息,那么主核处理器已经有1.5秒钟未清狗,还剩余0.1秒钟看门狗就要复位整个系统,主核处理器发送告警系统,提示从核处理器已经不在线可能已经死机。

本发明的实施例中,主核处理器要复位整个系统,只需杀死心跳任务并且设置HartBeatCount = 0。从核处理器要复位整个系统,只需杀死心跳任务,这样主核处理器永远都收不到从核处理器心跳,没有地方可以清狗,看门狗复位整个系统。

以上说明举例是以双核为基础,本专利同样适应双核(4核,8核等等)以上的AMP系统。

本发明还提供了一种基于多核系统的硬件看门狗控制方法的的具体实施例的流程图,如图3所示,具体包括以下流程:

在主核处理器执行的操作为:

步骤S10、多任务启动;

步骤S11、任务切换;

步骤S12、判断HeartBeatCount是否大于0,若大于 ,则执行步骤S13,若小于,则执行步骤S15;

步骤S13、清理硬件看门狗,并设置HeartBeatCount=0,;

步骤S14、重启硬件看门狗;

步骤S15、主核处理器的心跳任务启动;

步骤S16、判断是否收到心跳,若是,则执行步骤S17,若否,则执行步骤S18;这里是指是否收到从核处理器发送的从核处理器心跳;

步骤S17、HeartBeatCount+1;

步骤S18、发送心跳;向从核处理器发送自己的主核处理器心跳;

步骤S19、不作处理;

在从核处理器执行的操作为:

步骤S21、从核处理器心跳任务启动;

步骤S22、发送心跳;是向主核处理器发送从核处理器心跳;

步骤S23、接收心跳,接收主核处理器发送的从核处理器心跳。

由以上方法实施例可知,本发明提出一种基于多核系统的硬件看门狗控制方法:由主核处理器负责清狗,同时主从之间建立心跳机制,主核处理器只有检查到从核的心跳,并且本身有任务切换时,才进行清狗操作。本发明可实现多核在正常运行时,不会被看门狗复位,一旦核间通讯中断或者一个或以上的核死机异常等发生,能复位整个系统。

在示例性实施例中,装置可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

本发明还提供了一种基于多核系统的硬件看门狗控制系统的较佳实施例的功能原理框图,如图4所示,系统包括:

主核处理器心跳发送模块100,用于主核处理器内核启动后,启动多任务模式,主核处理器每隔第一预定时间向从核处理器发送主核处理器心跳消息;具体如方法实施例所示。

心跳信息接收模块200,用于从核处理器接收主核处理器发送的主核处理器心跳消息,并在接收到主核处理器心跳消息后向主核处理器发送从核处理器心跳信息;具体如方法实施例所示。

看门狗控制模块300,用于当检测主核处理器收到从核处理器发送的从核处理器心跳信息,且主核处理器切换任务时,清理看门狗;具体如方法实施例所示。

所述的基于多核系统的硬件看门狗控制系统,其中,所述系统还包括:

预先定义模块,用于预先在主核处理器中定义一个心跳次数统计变量,当收到从核处理器心跳信息时,心跳次数统计变量加1;具体如方法实施例所示。

进一步的实施例中,如图5所示,看门狗控制模块300具体包括:

第一控制单元301,用于当检测主核处理器收到从核处理器发送的从核处理器心跳信息后,控制心跳次数统计变量加1;具体如方法实施例所示。

判断单元302,用于主核处理器切换任务时,调用任务切换函数,任务切换函数判断心跳次数统计变量是否大于0;具体如方法实施例所示。

清理单元303,用于若心跳次数统计变量大于0,则主核处理器调用看门狗清理函数对看门狗进行清理后,控制心跳次数统计变量设置为0;具体如方法实施例所示。

所述的基于多核系统的硬件看门狗控制系统,其中,所述看门狗控制模块还包括:

第二控制单元,用于当检测到主核处理器在第二预定时间内未收到从核处理器心跳信息,则控制看门狗重启系统;具体如方法实施例所示。

所述的基于多核系统的硬件看门狗控制系统,其中,所述看门狗控制模块还包括:

告警信息发送单元,用于若检测到主核处理器在第三预定时间内未收到从核处理器心跳信息,则主核处理器在系统中发送从核处理器故障告警信息;具体如方法实施例所示。

综上所述,本发明提供了一种基于多核系统的硬件看门狗控制方法及系统,方法包括:主核处理器内核启动后,启动多任务模式,主核处理器每隔第一预定时间向从核处理器发送主核处理器心跳消息;从核处理器接收主核处理器发送的主核处理器心跳消息,并在接收到主核处理器心跳消息后向主核处理器发送从核处理器心跳信息;当检测主核处理器收到从核处理器发送的从核处理器心跳信息,且主核处理器切换任务时,清理看门狗。本发明中主核处理器负责清狗,同时主从之间建立心跳机制,主核处理器只有检查到从核处理器的心跳,并且本身有任务切换时,才进行清狗操作,从而使多核在正常运行时,不会被看门狗复位,一旦核间通讯中断或者一个或以上的核死机异常等发生,能复位整个系统。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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