在启动过程中监控计算机操作系统的方法
【专利摘要】一种不增加硬件成本、不影响系统启动时间的可在系统启动过程中监控计算机操作系统的方法。包括如下步骤:1)在系统上电启动后,打开实时中断,将系统的中断模块代码和系统启动过程中“喂狗”方案代码作为紧急加载部分预先加载到系统中;2)执行紧急加载部分中的“喂狗”方案代码,依靠打开的实时中断,利用指定的定时器周期性的触发实时中断来完成“喂狗”;3)在“喂狗”函数中指定一个技术器来判断该系统启动是否超时,如果超时则不“喂狗”,由该硬件看门狗复位系统重新加载;4)启动完成后,在系统任务中解除所述的指定的定时器,将该硬件看门狗交于系统的软件管理。其可解决系统启动过程中因为无法喂看门狗导致的系统启动失败。
【专利说明】在启动过程中监控计算机操作系统的方法
【技术领域】
[0001]本发明涉及一种计算机操作系统的监控方法,特别涉及一种嵌入式计算机操作系统在启动过程中的监控方法。
【背景技术】
[0002]通常,在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称〃看门狗〃(英文称watchdog)。
[0003]看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出(以下称定时器溢出为“狗叫”),也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗(即对定时器清零),就使得看门狗定时器溢出产生复位信号并重启系统。软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计。
[0004]在现有技术的嵌入式计算机操作系统中,通常在系统上电启动时,看门狗也就被启动,而在系统启动加载过程中如何“喂狗”,有如下几种方法:
[0005]1)在启动过程中“喂狗”:即在系统启动过程的加载代码中添加“喂狗”代码,该方法虽然可以避免在系统启动过程中因为看门狗“狗叫”导致系统复位引起系统加载不成功,但是在加载代码中插入较多的“喂狗”代码会使系统加载代码繁多杂乱,由此,会导致启动速度缓慢。当操作系统为不开源加载代码的操作系统时,该方法不可使用。
[0006]2)推迟启动看门狗:即在系统的启动过程中,关闭看门狗,当系统启动完成后再启动看门狗,再由软件来管理看门狗。该方法对于启动加载时间较短的系统而言确实有一定效果,但是当操作系统在加载的过程中出错(即操作系统加载失败)时,由于看门狗处于关闭状态而无法对该操作系统进行监控复位,导致系统死机。另外,使所设的看门狗资源派不上用场,导致浪费。
[0007]3)启动过程中硬件“喂狗”:在系统启动的过程中使用另外设置的硬件看门狗,将“喂狗”任务交由该硬件看门狗完成。若系统启动完成,则通知该硬件看门狗不要“喂狗”,对操作系统的监控交由系统中设置的软件看门狗管理,此时,硬件“喂狗”保持一定时限,到达预定时限。若系统还未启动成功就认为系统启动失败,由该硬件看门狗复位系统。该方法既可以解决系统在启动过程中“喂狗”的问题,又能使该看门狗起到对系统启动的监视功能,但是其必须增加一个外设(即所述的硬件看门狗),这无疑会增加系统的成本;同时,对于系统的软复位而言,复位的可能仅仅是CPU而非外设,导致系统的软重启又会进入到原来的问题上:启动过程中无法“喂狗”导致启动失败。
【发明内容】
[0008]本发明要解决的技术问题是提供一种不增加硬件成本、不影响系统启动时间的可在系统启动过程中监控计算机操作系统的方法。
[0009]为了解决上述技术问题,本发明采用的技术方案为:
[0010]本发明的在启动过程中监控计算机操作系统的方法,包括如下步骤:
[0011]1)在系统上电启动后,打开实时中断,将系统的中断模块代码和系统启动过程中“喂狗”方案代码作为紧急加载部分预先加载到系统中;
[0012]2)在系统启动过程中执行所述紧急加载部分中的“喂狗”方案代码,依靠打开的实时中断,利用指定的定时器周期性的触发实时中断来完成“喂狗”;
[0013]3)在“喂狗”函数中指定一个技术器来判断该系统启动是否超时,如果超时则不“喂狗”,由该硬件看门狗复位系统重新加载;
[0014]4)系统正常启动完成后,在系统任务中解除所述的指定的定时器,将该硬件看门狗交于系统的软件管理。
[0015]所述中断模块代码由编译器的编译和链接器的链接并经操作系统引导程序加载到链接指定的运行地址,该运行地址存储在记忆性的存储介质中。
[0016]在操作系统引导程序的引导过程中,优先加载中断管理和需要提前执行的代码,然后进行中断管理模块的初始化以及硬件定时器初始化,并将硬件定时器的中断服务函数设置为复位硬件看门狗。
[0017]与现有技术相比,解决系统启动过程中因为无法喂看门狗导致的因为看门狗的狗叫导致系统启动失败,同时避免更改系统的加载代码,实现简单。该方法实现简单,看门狗的模块代码可以单独作为一个模块编译,简化了代码布局的难度,对源代码依赖性小,可以单独编译;该方案在没有增加硬件的前提下,实现了看门狗对系统启动的整个过程的监视,在一定程度上节约了成本。
【专利附图】
【附图说明】
[0018]图1为本发明方法的流程图。
[0019]图2为本发明方法中普通中断和实时中断关系示意图。
【具体实施方式】
[0020]如图1所示,本发明的在启动过程中监控计算机操作系统的方法是采用在启动过程中启动硬件定时器,在硬件定时器的中断服务函数中实现我们的硬件看门狗的复位(读写某个硬件寄存器或者10端口),而传统OS启动过程中一般都是禁止中断发生。因此实现的难点和关键就在于:如何在系统启动过程中实现硬件定时器启动而又不破坏系统的整个OS的启动过程。首先我们重新构造我们的中断管理模块,中断分为实时中断和普通中断(如图2所示),普通中断即为传统OS的中断模块,而实时中断则为紧急处理中断,是可以打断普通中断的。整个中断管理模块如图2所示。因此配置硬件定时器为实时中断,在启动过程中关闭普通中断总开关而打开中断总开关,可以让硬件定时器中断可以产生定时中断,从而实现在定时器中断呢函数中复位看门狗,避免启动过程中看门狗复位系统导致不断的系统重启。其次,在硬件看门狗的中断服务函数中,记录复位硬件看门狗的次数,超过指定次数就不再复位硬件看门狗,该指定次数根据系统正常加载和启动时间来决定,当系统在加载和启动过程中出现意外导致不能正常启动时,由于超过指定的复位看门狗次数导致不再复位看门狗,从而由硬件看门狗进行复位系统并重新启动。再次,关于中断管理我们使用实时中断这段代码必须提前加载到指定的运行时地址并执行。代码在经过编译器的编译和链接器的链接之后才成为真正的可执行代码,但是这部分可执行代码一般的存储在记忆性的存储介质中,必须加载到链接指定的运行时地址上才可以正确运行,而这部分工作通常由引导程序完成。为了保证中断管理模块以及使用实时中断的硬件定时器代码能够提前加载并运行,必须在链接的时候通过脚本文件配置该部分代码到指定的位置。最后,在引导程序中,优先加载中断管理和需要提前执行的代码(硬件定时器的初始化和中断服务函数),然后进行中断管理模块的初始化以及硬件定时器初始化,并将硬件定时器的中断服务函数设置为复位硬件看门狗,完成之后再继续进行系统的加载和系统的启动。当系统正常启动后,则由需要监视的任务来接管看门狗的复位工作。上述方法能够在系统启动过程中,不需要专门的硬件来复位看门狗,也不需要再系统代码中等时间间隔的插入复位看门狗的代码,就可以实现硬件看门狗对系统启动过程的监视。
[0021]本发明的方法采用在系统启动过程中,打开实时中断(一种高优先级中断),通过将中断等部分代码[(包括系统启动过程中“喂狗”代码,该处的“喂狗”代码指的是实时中断(定时器触发)中的喂狗,该喂狗方案就是我们要提出的一种针对OS启动过程中缺少监控提出的一种方案,现有技术是直接关闭看门狗,该处我们采用打开看门狗,采用一个实时中断来控制喂狗)]提前加载进去,这样完成了基本的紧急加载(完成系统运行的基本硬件环境的初始化以及系统运行前所必须进行的操作,这部分程序掌控着系统启动前硬件的状态)以后,就可以使用系统的实时中断了。启动过程中“喂狗”的代码即依靠打开的实时中断,利用特定定时器的固定间隔触发的实时中断来完成“喂狗”,这样就可以实现在启动过程中的“喂狗”,由于紧急加载的代码也属于系统一部分,因此系统重启时必然会执行这一部分,因此系统的启动不论是软重启还是硬重启都可以完全实现喂看门狗;同时在定时器的中断服务函数中可以设定一个看门狗“喂狗”计数器,通过计数来判断系统启动是否超时来决定是否继续“喂狗”,这样就可以监视系统的启动是否正常,发挥看门狗的功效。当系统成功启动后,解除指定的定时器“喂狗”动作即可。
[0022]在系统上电启动后,将系统的中断模块代码和系统启动过程中“喂狗”方案代码作为预加载部分率先加载到系统中,然后执行启动过程中“喂狗”方案代码,使用指定的定时器周期性的触发中断来“喂狗”,在此“喂狗”函数中通过一个技术器来判断该系统启动是否超时,如果超时则不“喂狗”,则导致硬件看门狗复位系统重新加载,以监视系统启动正常与否。同时,正常启动的系统能够在启动过程中周期的“喂狗”,避免硬件狗复位引起的系统启动失败。在系统正常启动后,在系统任务中解除指定的定时器“喂狗”,将硬件看门狗移交给系统的软件来管理,以保证不会影响系统的任何运行。当系统重启时,相当于从头到尾的再次执行,因此可以保证能够在看门狗的监视下正常启动。
【权利要求】
1.一种在启动过程中监控计算机操作系统的方法,其特征在于:包括如下步骤: 1)在系统上电启动后,打开实时中断,将系统的中断模块代码和系统启动过程中“喂狗”方案代码作为紧急加载部分预先加载到系统中; 2)在系统启动过程中执行所述紧急加载部分中的“喂狗”方案代码,依靠打开的实时中断,利用指定的定时器周期性的触发实时中断来完成“喂狗”; 3)在“喂狗”函数中指定一个技术器来判断该系统启动是否超时,如果超时则不“喂狗”,由该硬件看门狗复位系统重新加载; 4)系统正常启动完成后,在系统任务中解除所述的指定的定时器,将该硬件看门狗交于系统的软件管理。
2.根据权利要求1所述的方法,其特征在于:所述中断模块代码由编译器的编译和链接器的链接并经操作系统引导程序加载到链接指定的运行地址,该运行地址存储在记忆性的存储介质中。
3.根据权利要求2所述的方法,其特征在于:在操作系统引导程序的引导过程中,优先加载中断管理和需要提前执行的代码,然后进行中断管理模块的初始化以及硬件定时器初始化,并将硬件定时器的中断服务函数设置为复位硬件看门狗。
【文档编号】G06F11/07GK104503859SQ201410834749
【公开日】2015年4月8日 申请日期:2014年12月29日 优先权日:2014年12月29日
【发明者】陈远生, 罗侍田, 罗来峰, 张前福, 孔德深, 林超, 范东凯, 朱海兵 申请人:长园深瑞继保自动化有限公司