摘 要:针对现有技术对于处理器的监控仅支持在处理器运行之后的自检,而在处理器启动过程中无法针对启动过程中的故障进行定位的问题,本文设计了一种基于MCU的X86系统监控方法,MCU不依赖于X86处理器,与之并行运行,实时对X86系统进行监控,并且MCU运行之后不需要任何人工干预,可对X86运行过程中出现的问题进行声光报警,并指示出出错位置,易于工程维护。
关键词:处理器监控;故障定位;MCU;X86;声光报警;工程维护
中图分类号:TP277 文献标识码:A 文章编号:2096-4706(2019)19-0012-04
Abstract:To the question which current technology only support processor monitoring in POST but don’t support error positioning during processor booting,a new approach of monitoring X86 system based on MCU is designed in this paper. Keep parallel operation with CPU but not relying on it,MCU is able to monitor X86 system in real time and totally unmanned after booting. The MCU also provides sound-light alarm and error positioning for easy to maintain.
Keywords:processor monitoring;error positioning;MCU(microcontroller unit);X86;sound-light alarm;engineering maintenance
0 引 言
目前市面上各种计算机已经广泛地应用于各个领域,例如工业控制、军工、轨道交通等。其中一些领域对计算机系统的可靠性和稳定性具有很高的要求,一旦出现故障则要求迅速定位。而在现有技术中,一般只能在处理器运行起来后才能通过软件进行自检[1],而在启动过程中若处理器发生故障,则无法对故障进行定位。
为此,本文提出一种可在X86系统启动过程中迅速定位X86系统故障的处理器监控方法,方案采用在X86系统内嵌的MCU(Microcontroller Unit,微控制单元,本文中泛指包括各种单片机、ARM、MIPS等架构的处理器),其独立于X86运行,同时对X86整个运行过程进行监控,并且给出相应的处理和反馈,从而保证X86平台的可靠运行。此外,在X86的运行过程中,MCU也会对X86运行的软硬件环境进行监测,如果有异常产生就会对X86进行通知、中断、甚至断电等处理。
1 系统结构设计
本文提出的一种基于MCU的监控X86系统的方法,其系统结构[2]如图1所示:将MCU集成于X86的系统中,包括集成于主板上,或者以扩展插卡等形式存在,MCU通过UART、USB等通讯口与X86的CPU进行通讯[3],并通过各种IO对X86系统工作状态进行监控,对硬件的上电时序进行控制,对异常进行处理。
2 系统监控方法
系统监控处理过程包括以下几点:
(1)X86的上电启动过程监控,如图2所示,MCU在获得供电后首先启动,MCU控制X86系统中的各个电路按照预设的上电时序依次上电启动,在控制各个电路上电启动过程中,监测前一个电路上电启动是否正常,在监测到前一个电路上电启动正常后,再控制后一个电路进行上电启动,若监测到任意一个电路上电启动异常,则向报警电路发送与该电路对应的上电异常信号;报警电路根据上电异常信号进行声、光、电或图形的指示。
MCU是指将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上而形成的芯片级的计算机。X86是由Intel推出的一种复杂指令集,用于控制芯片的运行,X86处理器可认为是基于X86运行的中央处理器(CPU)。
上电启动过程:向電路的电压芯片输入使能信号,使能信号为指示电压芯片向电路输出运行时所需的正常电压的信号;
监测一个电路上电启动是否正常的依据为监测电路的电压芯片是否返回表示运行状态的信号,并判断该电路的电压芯片返回的表示运行状态的信号的电平是否对应正常运行状态。电路的电压芯片返回的表示运行状态的信号通常称为PowerGood信号,PowerGood信号的电压为3V则表示电路正常运行,PowerGood信号为0V则表示电路完全断电。
若监测到一个电路上电启动异常,则再一次控制该电路进行上电启动,直到对该电路已经进行了预设次数的上电启动,该电路还是不能正常地上电启动后,则向报警电路发送与该电路对应的上电异常信号。
报警电路可以根据不同的上电异常信号发出不同强度的声音和光线,也可以根据不同的上电异常信号控制数码管显示不同的数字,从而指示出发生故障的具体电路。
(2)MCU监测处理器运行过程中的运行温度,当运行温度处于预设的高温范围时,向处理器发送降频信号;当运行温度处于预设的危险范围时,向处理器发送正常关机信号,并监测处理器在预设时间段内是否关机成功,若否,则向处理器发送强制关机信号。处理器运行过程中的运行温度监测过程如图3所示。
与处理器集成于同一主板上的温度传感器感应处理器的温度,温度传感器与MCU通信连接,并向MCU发送表示处理器的温度的信号。MCU根据从温度传感器接收的信号判断处理器的运行温度所处的范围。若处理器的运行温度大于等于第一阈值而小于第二阈值,则MCU判定处理器的运行温度处于高温范围,其中第一阈值小于第二阈值。处理器在接收到降频信号后进行降频运行。处理器降频运行后一般可降低自身的运行温度。若处理器的运行温度大于第二阈值,则MCU判定处理器的运行温度处于危险范围。处理器在接收到正常关机信号后,按照正常关闭程序的逻辑关闭所有正在运行的程序;处理器在接收到强制关机信号后,强制退出所有正在运行的程序。
基于MCU的X86系统监控方法,MCU先于处理器启动,并控制处理器的上电启动:MCU控制处理器中的各个电路按照预设的上电时序依次上电启动,并控制前一个电路正常上电启动后,再控制后一个电路进行上电启动,若监测到任意一个电路上电启动异常,则发出与该电路对应的异常报警;因此上述处理器监控方法可在处理器启动过程中迅速定位出处理器中发生异常的电路,从而找出故障发生的原因。通过独立于处理器的MCU监控处理器的运行温度,且当处理器的运行温度处于高温范围时,控制处理器进行降频,可避免处理器的运行温度进一步升高,而当处理器的运行温度处于危险范围时,控制处理器进行关机,可避免处理器损坏。
3 可配置看门狗电路
MCU中内置可配置看门狗定时器(Watch Dog Timer,简称WDT)电路[4,5],如图4所示,其实现包括以下步骤。
(1)MCU接收X86处理器传送的喂狗时间间隔参数以及看门狗启动命令。
处理器根据应用程序指令向MCU发送喂狗时间间隔参数以及看门狗启动命令。具体的喂狗时间间隔参数的值由各个具体的应用程序而决定。
(2)MCU根据喂狗时间间隔参数配置可配置看门狗电路的计数器溢出参数,并启动可配置看门狗电路。
可配置看门狗启动后,计数器开始计数,当累计值达到计数器溢出参数的值时,向MCU发送复位信号并将计数器清零,而当接收到MCU的喂狗信号时也将计数器清零,并启动计数器重新计数。
(3)MCU每当接收到处理器的喂狗信号时,向可配置看门狗电路传送喂狗信号。
处理器根据应用程序指令向MCU发送喂狗信号,在应用程序指令所属的应用程序正常运行的情况下,应用程序指令每隔预设时长被执行一次,即处理器每隔预设时长向MCU发送喂狗信号,预设时长小于喂狗时间间隔参数的值。
(4)MCU接收到可配置看门狗电路的复位信号后,向处理器传送复位信号。
复位过程还包括带电重启和断电重启两种方式;MCU判断带电重启和断电重启条件是否成立,当带电重启条件成立时,控制处理器带电重启,当断电重启条件成立时,控制处理器断电重启。
断电重启过程:MCU向处理器发送正常关机信号;处理器在接收到正常关机信号后,按照正常关闭程序的逻辑关闭所有正在运行的程序;MCU监测处理器是否已经完全关闭所有程序,当处理器完全关闭所有程序时,MCU控制处理器中的各个电路按照预设的断电时序依次断电;在各个电路全部断电完毕后,MCU进一步控制处理器中的各个电路按照预设的上电时序依次上电启动,在各个电路全部上电启动完毕后,MCU向处理器发送启动系统信号,处理器在接收到启动系统信号后,启动系统程序。
MCU通过其内置的可配置看门狗监测处理器执行的应用程序是否正常运行,若因应用程序陷入死循环而导致处理器超时未向MCU发送喂狗信号,则MCU向处理器传送复位信号,可避免处理器所执行的应用程序长时间陷入死循环。
4 应用案例
本文提出一种可在X86系统启动过程中迅速定位X86系统故障的处理器监控方法,在一款轨道交通整机上进行应用。轨道交通整机的功能框图如图5所示。
在本文提出的系统中,MCU芯片使用NXP的LPC1823,其先于X86处理器N2600运行,其主要功能如下:通过A/D获取环境温度,当按电源开关开机时,如果温度过低,则通过DIO控制加热模块按预设的策略进行加热,到达设定温度时,停止加热,从而实现了低温扩展;会对上电时序和掉电时序进行控制,并且在出错时,会尝试对整个X86系统进行断电重启,如果还是出错,则给出对应的报警提示。
MCU通过光感应器件读取环境的亮度,然后按预设策略对LVDS屏的亮度进行自动或手动的调节;与X86上扩出的串口COM4进行通信连接,X86通过串口对MCU进行控制策略的設置和更新。
5 结 论
在本文设计的监控系统中,MCU先于X86系统启动,并控制X86系统的上电启动,MCU控制X86系统中的各个电路严格按照预设的上电和掉电时序进行上电开机和关机掉电动作,并控制前一个电路正常后,再控制后一个电路,若监测到任意一个电路异常,则向报警电路发送与该电路对应的异常信号,使得报警电路可发出与该电路对应的异常报警,因此可在X86处理器启动过程中迅速定位出发生异常的电路,从而找出故障发生的原因,同时还可以启动基于MCU的看门狗对整个X86系统进行完整的复位,然后在X86系统的运行中对运行的环境进行检测,并给出反馈,进而保证了X86系统的可靠运行,降低了X86的开销。
参考文献:
[1] 王录恩.多处理器系统监控的研究与设计 [D].合肥:中国科学技术大学,2011.
[2] 陈客松,庞晓凤,张徐亮,等.《微处理器系统结构与嵌入式系统设计》课程的教学设计研究 [J].实验科学与技术,2013,11(4):214-216.
[3] 刘强,高振海,赵齐,等.海量分布式微处理器监控系统可靠性研究 [J].电子世界,2013(11):88-90.
[4] 王彬,李文新,李得天,等.通过看门狗软件设计提高抗干扰能力的方法 [J].计算机技术与发展,2012,22(10):188-190.
[5] 胡屏,柏军.单片机应用系统中的看门狗技术 [J].吉林大学学报(信息科学版),2003(2):205-208.
作者简介:李杨(1987.02-),女,汉族,广东深圳人,工程师,研究生,研究方向:电子信息。