计算机系统意外停机的检测与处理的方法及装置 本发明涉及一种计算机系统意外停机的检测与处理的方法及装置,特别涉及一种利用BIOS与微控制器配合检测是否意外停机并由微控制器控制系统芯片组开/关机的方法及装置。
公知的一种检测计算机系统意外停机的方法是采用一个具有监视计时器功能的微控制器,该微控制器外加连接在微计算机上。监视计时器上安装的一个计数器根据微计算机的程序的指示,对应于复位或累加计数器的计数。当程序处于不正常的重复执行的情况下,计数器的计数会超出设定值,因此输出一个错误的信号。此错误信号可作为一个复位信号或作为一个中断信号或复位微计算机重新开机,或重新实行一连串的程序改用备用的微计算机操作。用这种监视计时器的方式来检测计算机是否意外停机,不权能检测硬件原因导致的意外停机,同时也能测得是否为软件的程序错误、电路设计或存储器与门/或门内的软件错误。不过这种方式的监视计时器额外加在微计算机外部,监视计时器制作费用需包含在微控制器上,即含有监视计时器的微控制器成本会较高。而且,此种检测方式需要一个接口让微计算机能与微控制器连通,用于复位监视计时器,因此线路设计较复杂。
另一方面,当检测到意外停机的信息后,系统一般的处理方式便是重新开机一个途径。传统地关机开机方式是直接关掉电源而后再开启电源,这种方式对于新的计算机系统具有ACPI(Advanced Configuration PowerInterface)规格的芯片组将产生问题。由于直接对电源的强制开关方式会使这种系统无法让BIOS程序装入CPU中执行(码提取),系统将会瘫痪。
因此,本发明的目的在于提供一种计算机系统意外停机的检测与处理的方法及装置,一方面让用于检测是否意外停机的微控制器内不再含有监视计时器,而改用使BIOS程序码与微控制器之间互相配合的软件检测方式,可以节省成本;另一方面意外停机处理不再是强制关机再开机,而是使微控器产生模拟电源按键,按下模拟电源按键产生一个脉冲信号,并通过控制芯片组使系统开机关机,如此便不会有无法提取代码的问题。
根据上述本发明的目的,所提供的计算机系统意外停机的检测与处理的装置包含依次连接的一个BIOS存储器、一个微控制器、一个芯片组、与一个电源,和电源与微控制器连接的电路。所说的方法包括:a)检查电源正常的信号由电源传回微控制器;b)在一第一预定时间内由BIOS存储器产生第一脉冲信号,由微控制器通过它的一个输入脚接收第一脉冲信号;c)当微控制器在第一预定时间内未收到第一脉冲信号,产生一模拟电源键按下的第二脉冲信号,由芯片组接收控制电源关机,经第二预定时间后微控制器再产生模拟电源键按下的第二脉冲信号,由芯片组接收,控制电源开机;d)微控制器未测得电源传回的电源正常的信号;e)重复上述的用第二脉冲信号输出控制电源关机开机的动作预定次数;f)当微控制器仍未测得电源传回的电源正常信号,微控制器输出一个意外停机信号以显示错误信息;以及,g)当微控制器测得电源传回电源正常信号,但在第一预定时间内未收到该第一脉冲信号,微控制器也输出意外停机信号以显示错误信息。
为让本发明的上述和其他目的、特徵、和优点明显易懂,下文特举一个优选实施例,并结合下面所附附图,作详细说明如下。这些附图为:
图1表示本发明的计算机系统意外停机的检测与处理的装置的连接示意图;
图2表示本发明计算机系统意外停机的检测与处理的流程图;
图3表示本发明计算机系统意外停机的检测与处理时微控制器所接收与输出的信号;以及
图4A~4C表示本发明计算机系统意外停机的检测与处理的详细流程图。
请参照图1的本发明电路的连接方式,将含有BIOS程序码的存储器(通常是快擦写存储器)10连在一个微控制器12上,微控制器12连接一个芯片组14,由芯片组14来控制电源16的开关,同时电源16通过与微控制器12的连接,让微控制器12随时能检查系统电源是否有供应,即是否处于开机的状态,另外,微控制器12也接至一个LED灯20以显示异常状态。此外,微控制器12并不能直接开关电源16,所以不会有强制关机再开机的情形发生,也就不会使具有ACPI芯片组的系统无法进行码提取。
接着请参照图2的本发明方法的流程图。在开始检测计算机系统是否意外停机与后续的处理步骤之前,微控制器12会先借助于电源16传来的电源状态信号决定系统是否处于开机(步骤21);若是,则进行下一步的意外停机检测步骤(步骤23),若否,则是重新开机。在系统为开机的状态下,微控制器12将借由BIOS存储器10在固定时间内使一个输入端子,如为GPIO(通用型输入/输出)的接脚产生一个脉冲。当微控制器12检测到此脉冲即知系统未意外停机,以此种判断方式作为检测是否意外停机。若微控制器12在固定时间(如10秒钟)内未检测到此脉冲,代表系统出现的问题是意外停机,此时如步骤25,微控制器12将产生一个模拟电源键按下的电源键脉冲,并通过控制芯片组14将系统关机,经过数秒(如3秒钟)后,微控制器12再次产生电源键脉冲,使系统开机,完成重新开机的程序。在重新开机之后,若微控制器12仍检测到系统未开机,即未获得由电源16传回的供电正常的信号,会重复步骤25的重新开机程序,当重新开机次数超过设定值(如设定为3次)(步骤27),并且3次均未开机成功,则显示意外停机信息(步骤29),由微控制器12输出一个意外停机信号传至一LED灯20,使双重错误LED点亮。另一种情形下,虽然微控制器12检测到系统已开机,但还是没有检测到由BIOS传来的脉冲,也要点亮双重错误LED,代表系统仍为异常。
再请参照图3,图3详细地绘出微控制器12接收与发出的脉冲信号,以进一步在图4A~4C中说明本发明计算机系统意外停机的检测与处理的方法的一个优选实施例的流程。
如图3所示,微控制器12接收的脉冲信号除上述图2的方法流程所提及的由电源16传来的供电正常信号PWRGD和由BIOS 10传来的脉冲信号(WDTPULSE_L)之外,另有一个ALTRST_L与WDTDIS两种脉冲信号。前者是当使用者按下计算机系统的复位键所产生的结果,后者则是使用者在计算机开机后在BIOS测试时选择不采用本发明检测意外停机与处理方法时所得的结果。也就是说,本发明的方法可根据使用者的要求将其功能关闭或打开,选择权在使用者手中,以符合人性化设计。至于微控制器12输出的信号部分,分别是输出一个电源键脉冲(UPPW_BN),经由一个缓行器将信号缓行为PW_BN传入芯片组14,由芯片组控制对电源16的开与关,另一输出的信号为双重错误LED(DBFLTLED_L),这是重新开机后仍失败的意外停机信号。
根据上述图3所列输入微控制器12及由微控制器12输出的信号解释,下面在图4A~4C的流程图中便直接以信号来表达,再加上简单的说明,便可了解本发明的优选实施例对计算机系统意外停机的检测与处理的方法。
如步骤41,计算机开后先初始化一些设定,将LED灯20设为暗,电源键脉冲为未按下电源键的状态;在步骤42中检查电源是否供电正常,若是则进行下一步骤,若否,则回到电源检查。在步骤42之后等待BIOS10传来脉冲信号的延迟时间(步骤43),又再一次检查电源是否供电正常(步骤44),以避免在此延迟时间有人按下复位键或计算机系统出现供电不正常的情况。如步骤45,检查是否有BIOS传来的脉冲信号;若否,则进行下一步骤46,决定是否BIOS未传来脉冲信号的时间已超过10秒;若是,则送出电源键脉冲模拟按下电源键(步骤48),若否则继续等待。,当如步骤45中等待到BIOS传来的脉冲信号,则将等待的计时器归零(步骤47),重复前述电源与脉冲信号的检查。
步骤48中送出电源键脉冲之后,检查电源是否正常(步骤49)。若否。则回到步骤48;若是,则进行步骤50中送出电源键脉冲,模拟放开电源键,并将计数器设为0,计算机系统关机。经过3秒的延迟(步骤51),又送出电源键脉冲,模拟按下电源键、经延迟及送出电源键脉冲模拟放开电源键,计算机系统再开机。
在下一步骤53中再次检查电源状态。若开机不成功,则进行下一步骤54将计数加1,在下一步骤55中判断计数是否超过3次,如是,则代表3次重新开机全部失败,即点亮双重错误LED(步骤64)。而当重新开机过程后,在步骤53中确认电源供应正常,则重复上述步骤43~47的程序,如步骤56~60。不过在步骤59中,若重新开机后检测到系统开机了,但还是没有检测到BIOS传来的脉冲信号,也要点亮双重错误LED(步骤61)。此外,不论是步骤61或64中点亮双重错误LED后,都要再一次检查电源是否供应正常(分别为步骤62与63),在步骤62中若显示的是开机状态,代表开机正常但仍无BIOS传来的脉冲信号,因此回到步骤61,否则便回到重新开机的原始状态。至于在步骤63中则相反,若显示的是开机状态,代表重新开机3次后仍无法开机成功,因此回到步骤64,否则便回到重新开机的原始状态。
虽然本发明已以一个优选实施例公开如上,但这并非用于限定本发明,本领域的普遍技术人员在不脱离本发明的精神和范围的条件下可作许多的改变与改进,因此本发明的保护范围由后附的权利要求书确定。