高压电容瞬时放电时单片机软件失效机理

2016-06-06 01:13孙国先戴黎红康兴国
探测与控制学报 2016年2期
关键词:单片机

孙国先,戴黎红,康兴国

(1.机电动态控制重点实验室,陕西 西安 710065;2.西安机电信息技术研究所,陕西 西安 710065)



高压电容瞬时放电时单片机软件失效机理

孙国先1,2,戴黎红2,康兴国2

(1.机电动态控制重点实验室,陕西 西安710065;2.西安机电信息技术研究所,陕西 西安710065)

摘要:针对引信电子安全系统在实际工作中存在强电磁干扰,可使单片机出现“复位”、“死机”、RAM数据被改写的软件失效现象,研究了高压电容瞬时放电时电子安全系统中单片机软件的失效机理。导致单片机软件失效的主要机理是运算或逻辑错误源于RAM数据寄存器内容发生变化。复位源于程序跳飞到非程序区,瞬时故障和死机或死循环源于程序跳飞到程序区。实验表明,高压电容瞬时放电时确实会造成数据寄存器内容被修改;复位现象是程序跳飞到非程序区引起的;死循环或死机是因为程序计数器PC跳飞到程序区改写了指令的执行序列;瞬时故障是程序跳飞到程序区跳过部分指令执行。实验结果与机理分析一致。

关键词:引信;电子安全系统;单片机;失效机理

0引言

引信电子安全系统需要瞬时大电流脉冲激发冲击片雷管,要求储能电容充电至电压约2 000 V,高压电容瞬时放电产生强电磁场[1]。但是,遥测弹飞行试验中要保证周期性返回遥测数据,在高压电容放电后若单片机失效将导致无法正常返回遥测数据;一种布撒器的多路定时抛撒装置电子安全系统在应用中要求工作时依次定时输出多路信号,任何一路输出都会对后续各路产生强电磁干扰,若单片机失效将导致之后的定时输出无法正常执行。因此,在高压电容瞬时放电后依然要保证单片机正常工作。

目前国内外对电磁环境下硬件失效及防护研究已取得显著成就,提出滤波退耦、硬件冗余、三模表决等防护措施[2]。但是硬件防护措施增加了硬件成本和硬件体积,并且电磁干扰具有随机性,因此需要采取适当的软件技术。采用单片机的电子安全系统中共采用三个单片机,其中两个解保单片机主要功能是接受环境传感器的输入信号及控制两个静态开关和一个动态开关的动作,另一个单片机完成起爆控制功能。实际使用中,单片机工作在瞬态电磁变化和静态电磁场干扰环境中,除了永久性硬件损伤外,单片机受干扰会出现“复位”、“死机”、RAM数据被改写等多种软件失效现象。本文针对此问题,提出了高压电容瞬时放电时电子安全系统中单片机软件的失效机理。

1单片机抗干扰性能及工作原理

1.1单片机抗干扰性能

电子安全系统高压电容放电时电流在150 ns内从0 A到3 000 A变化,瞬时电磁场峰值强度0.932×104kV/m,辐射源为瞬时大电流,电路阻抗较低,产生的电磁波为低阻抗波,对单片机构成了严重威胁[3]。金属封装的单片机在上升时间约为10 ns的电磁脉冲阈值达到1 kV/m时开始表现为受到干扰,当脉冲阈值达到45 kV/m时,单片机损坏。且当电流上升速度越快,干扰强度越大,干扰阈值相对较低。参考文献[4]中对单片机抗电磁干扰性能进行试验,实验结果如表1所示。

表1 单片机抗电磁脉冲性能试验结果

由实验结果可知峰值为每米千伏量级的脉冲电场足以使单片机工作状态发生改变,随着场强增加,单片机从显示格式出错直至死机,需要重新启动才能工作。电磁脉冲场对单片机干扰阈值Eptl>1.25 kV/m,损伤阈值Eptd>45 kV/m。

1.2单片机工作原理

单片机执行一条指令可分为三个阶段进行,即取指令—分析指令—执行指令[5]。取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址并将数据从寄存器取出送到CPU。单片机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令或循环等待指令。

1.3单片机失效机理

干扰信号对单片机的影响主要表现在以下3个方面[6]:

1)运算或逻辑出现错误。在单片机运行时,其输入/输出数据、微处理器计算的中间结果、控制程序流程的标志字等,都是存放在数据缓冲区的随机存贮器(RAM)中。由于RAM的抗干扰能力较差,在干扰信号作用下,有可能使存放在RAM中的数据发生变化。

2)程序跳飞。在干扰信号作用下,机器码改变时,将可能出现微处理器无法识别的机器码,致使微处理器无法工作。此外,如果干扰信号改变了控制程序流向的标志字时,也将改变运行程序的执行顺序,使单片机的运行程序跳飞,出现死机等问题。

3)损坏单片机芯片。在强电磁干扰作用下,单片机中的一些半导体芯片可能受到损坏,使单片机无法工作。

2电磁干扰导致的单片机失效

采用单片机的电子安全系统实际工作过程中出现“复位”、“死机”、RAM数据被改写等多种软件失效现象并未出现单片机芯片损坏现象,因此本文针对单片机软件失效进行分析。如前所述,单片机软件失效包括运算或逻辑出现错误和程序跳飞两种情况,现结合前电磁辐射下的环境做具体分析如下。

2.1运算或逻辑错误

在电子安全系统中需调用数据寄存器内容进行逻辑控制,并且自检完成,一级、二级解保完成,串口通信完成都会设置标志位。由于RAM的抗干扰能力较差,在强电磁干扰信号作用下,有可能使存放在RAM中的数据发生变化:一方面,电磁干扰可能直接破坏存储空间的数据,可能破坏数据的运行过程,最终造成输出数据错误;另一方面,电磁干扰也可能因为判断数据错误而破坏程序的执行序列,造成控制错误。若电磁干扰使寄存器内容被改写会造成数据误差、改变程序状态、改变定时器/计数器和串口的工作状态、控制失灵等。

在电子安全系统中,电磁干扰可能通过变压器和稳压电路进入单片机数据存储器,引起电平翻转造成数据冲毁。同时干扰可能使电源电压快速下降到工作电源以下,短暂干扰后,电源电压恢复,系统重启,但是RAM区掉电后数据遭到冲毁。此外,在进行读/写数据时,数据总线和地址总线也可能在干扰信号作用下发生读/写数据错误或将数据传送到错误的地址中。因此,运算或逻辑错误源于RAM数据寄存器内容发生变化。

2.2程序跳飞

电子安全系统各级解保信号时序要求严格,任何时序出错将导致不能正常解保。电磁干扰造成PC值的改变,将破坏程序的正常运行,改变电子安全系统中开关的动作时序,导致系统错误。由于被干扰后的PC值是随机的,在PC值错误引导下,程序跳飞或者进入死循环,系统失去控制。

程序计数器跳飞可能包括跳飞到程序区和FLASH非程序区,跳飞到程序区可能包括两个方面:一是跳过部分指令或程序段,造成瞬时故障,干扰消失后程序正常执行;二是拆分指令,将操作数当作操作码执行,造成输出故障或者死循环。具体分析如下:

1)程序计数器跳飞到程序区

①跳过部分指令或程序段的执行。跳过程序中任何一条有效指令都会危害系统的可靠性。在电子安全系统中解除三级解保需要三个环境信号输入,如果跳过环境信号输入采集指令将导致电子安全系统不能正常解保;碰合起爆信号采用外部中断,如果中断执行过程中跳过子程序或中断服务程序的返回指令,将造成堆栈操作错误,即没有完成RET、RETI指令所需要的正常出栈导致程序不能正确返回中断点,并且遗留在栈顶的两个字节必然破坏原来正常的出栈顺序。

②拆分指令。CPU受干扰后可能将操作数当操作码执行导致程序状态错误,进入死循环或可能使PC值不断增大,超出程序运行范围。在AVR系统中指令都是双字节和四字节指令,对于双字节指令或四字节指令,当程序执行完某条指令取操作码时程序计数器PC跑飞跳转到另一条指令的取操作数造成错误,也可能程序跳转到另一条指令的非首字节时,将这条指令的后半部分与下一条指令的前半部分作为一条指令来执行例如:ADIW Rd,K。

这条指令功能是将立即数K与Rd寄存器相加送到Rd中去,执行时假设K=03H,Rd为R0则其机器码为:

第一字节1 0 0 1 0 1 1 0操作码,第二字节0 0 0 0 0 0 1 1操作数(立即数03H)。

程序计数器PC跳飞到第二字节,直接跳过取操作码过程,将操作数03H当作操作码送到CPU译码,CPU默认为乘法指令(乘法指令FMULRd,Rr 机器码:00000011 0ddd1rrr),接下来将下一条程序操作码当乘法指令的操作数执行,造成死循环或死机。

2)程序计数器跳飞到非程序区

高压电容瞬时放电时电磁干扰致使机器码发生变化,导致程序计数器指向FLASH非程序区,无法执行正常的跳转、返回指令,程序计数器PC指向非程序FLASH地址后,因为没有返回指令会将整个FLASH非程序区执行结束,最后返回复位0000H处。

综上所述,复位源于程序跳飞到非程序区;瞬时故障和死机或死循环源于程序跳飞到程序区。

3实验验证

为验证采用单片机的电子安全系统在高压电容瞬时放电时单片机出现“复位”、“死机”、RAM数据被改写的软件失效现象是由数据寄存器内容被改写和程序计数器PC跳飞引起的,实验在高压电容瞬时放电时通过串口读取数据寄存器内容同时在非程序区开辟数据段输出高电平进行验证。具体验证过程如下。

3.1数据寄存器失效验证

验证数据寄存器内容是否被修改方法:试验中将高压电容置于距离单片机20~30 mm处,高压电源给高压电容充电到1 600 V,设置高压触发方式为单次下降沿触发。编写程序不间断地给数据寄存器R20写入数据11H,并通过串口从计算机COM3输出R20数据,串口初始化设置输出数据为2位停止位、8位数据位,无奇偶校验位。即单片机上电后将每间隔1 ms输出11H。采用高压电源给高压电容充电到1 600 V瞬时放电,通过串口数据判断数据寄存器内容是否被改写。如果没有电磁干扰,程序将始终读出R20寄存器内容,输出11H。如果输出数据不是11H说明数据寄存器R20内容被改写。在多次试验后,实验结果如图1所示。

图1 寄存器数据测试图Fig.1 Test pattern of register data

图1中,单片机上电后始终输出11H,但在高压电容瞬时放电时程序受到强电磁干扰,数据寄存器R20数据出现乱码,并且乱码是随机。在干扰消失后,寄存器R20继续输出11H,说明电磁干扰并未对数据寄存器造成永久性硬件损伤,而是数据寄存器数据遭到冲毁,在程序恢复正常执行时,数据寄存器可继续工作。表明高压电容瞬时放电时确实会造成数据寄存器内容被修改。

3.2程序计数器失效验证

从失效机理分析可知程序计数器跳飞包括跳飞到程序区和FLASH非程序区,跳飞到程序区可能包括两个方面:一是跳过部分指令或程序段,造成瞬时故障,干扰消失后程序正常执行;二是拆分指令,将操作数当作操作码执行,造成输出故障或者死循环或死机。

程序跳飞验证方法如下:试验中高压电容置于距离单片机20~30 mm处,高压电源给高压电容充电到1 600 V,设置高压触发方式为单次下降沿触发。给单片机烧写验证程序,验证程序为PA0端口循环输出1 ms方波且不对PB端口使能,而在非程序区开辟$1000、 $1F00、$1FF0 三个数据段(非程序区末地址$1FFF)填入程序使能PB端口使PB4输出高电平,即程序正常执行将循环输出1 ms方波并且PB4不会被使能输出高电平,如果跳飞到非程序区将执行非程序FLASH区并且使能PB4端口必然输出高电平。验证程序跳飞过程中不调用任何数据寄存器的数据,防止因为数据寄存器内容被改写而造成输出错误。验证结果如下:

1)PC跳飞到非程序区的验证

如图2所示,单片机上电后程序正常输出1 ms方波,在受到瞬时高压电磁干扰后,PB4端口出现毛刺干扰,产生毛刺是因为电磁在PB4端口产生耦合电压,耦合电压消失后,PB4恢复低电平。在恢复低电平680 μs后输出高电平,说明程序执行到在非程序区开辟$1000、 $1F00、$1FF0的三个数据段的其中一个,程序已经跳飞。但是PA0端口始终输出1 ms方波,方波并没有出现错误是因为跳到非程序区时间为680 μs(选用8 MHz时钟,程序运行8KFLASH只需1 ms),而方波输出时间为1 ms,即在下一个方波到来前单片机已经运行完非程序区并返回0000H实现复位,所以输出方波不受干扰,但程序确实跳飞到了非程序区,并且复位执行,因此复位现象是程序跳飞到非程序区引起的。

图2 程序跳飞到非程序区测试图Fig.2 Test pattern of program ricochet to the blank area

2)PC跳飞到程序区的验证

如图3所示,单片机上电后程序正常输出1 ms方波,在受到瞬时高压电磁干扰后,输出方波在高电平周期内跳到低电平,并始终输出低电平,直到重新上电复位后程序才恢复正常。单片机时钟设置为内部8 MHz晶振,内部晶振抗干扰性能强,并且重新上电复位后程序恢复正常说明硬件没有损伤。验证程序跳飞过程中不调用任何数据寄存器的数据,不会因数据寄存器内容被改写而造成死循环。非程序区PB4端口未输出高电平说明在电容放电瞬间程序未跳飞到非程序区。因此造成输出死循环或死机是因为程序计数器PC跳飞到程序区改写了指令的执行序列。

如图4所示,单片机上电后程序正常输出1 ms方波,在受到瞬时高压电磁干扰瞬间,输出方波跳为高电平,干扰消失后程序正常执行。PB4端口出现毛刺干扰,产生毛刺是因为电磁在PB4端口产生耦合电压,耦合电压消失后,PB4恢复低电平。验证程序跳飞过程中不调用任何数据寄存器的数据,即不会因数据寄存器内容被改写而造成输出错误。干扰到来产生瞬时故障,干扰消失后程序可以正常执行说明在电容放电瞬间程序跳飞到程序区跳过部分指令执行,干扰消失后,程序正常执行。

实验表明复位现象确实是程序跳飞到非程序区引起的;死循环或死机是因为程序计数器PC跳飞到程序区改写了指令的执行序列;瞬时故障是程序跳飞到程序区跳过部分指令执行。

图3 程序死循环输出测试图Fig.3 Test pattern of infinite loop program output

图4 程序跳飞到程序区测试图Fig.4 Test pattern of programricochet to the program area

4结论

本文分析了在高压电容瞬时放电时单片机软件的失效机理。导致单片机软件失效的主要机理是运算或逻辑错误源于RAM数据寄存器内容发生变化;复位源于程序跳飞到非程序区,瞬时故障和死机或死循环源于程序跳飞到程序区。实验表明,高压电容瞬时放电时确实会造成数据寄存器内容被修改;复位现象确实是程序跳飞到非程序区引起的;死循环或死机是因为程序计数器PC跳飞到程序区改写了指令的执行序列;瞬时故障是程序跳飞到程序区跳过部分指令执行。实验结果与机理分析一致。本文只分析在高压电容瞬时放电时单片机软件的失效机理,下一步拟对软件防护措施进行研究。

参考文献:

[1]张宝月.电子安全系统强静电干扰下的单片机防护方法[J].探测与控制学报,2015,37(4):28-31.

[2]潘峰.电磁脉冲对单片机系统的干扰与损伤效应研究[D]. 南京:工程兵工学院, 2001.

[3]任克强,刘晖.提高单片机应用系统可靠性的软件技术[J].计算机应用研究,2002(6):120-122.

[4]高星.基于虚拟寄存器的控制流错误检测算法[J].宇航学报,2007(1):183-187.

[5]廖清明,郑健.单片机测控系统电磁干扰及辐射的分析及抑制[J].2006(2):684-686.

[6]杨伟明.单片机软件抗干扰技术研究[J].科技资讯,2009(9):3-4.

MCU Software Failure Mechanism of High Voltage Capacitor Instantaneous Discharge

SUN Guoxian1,2,DAI Lihong2,KANG Xingguo2

(1. Science and Technology on Electromechanical Dynamic Control Laboratory, Xi’an 710065, China;2.Xi’an Institute of Electromechanical Information Technology, Xi’an 710065, China)

Abstract:Strong electromagnetic interference will cause MCU of ESA software failure, such as “reset”、 “crash”、 RAM data rewrite. An analysis of MCU software failure mechanism of high voltage capacitor instantaneous discharge was proposed. The main software failure mechanism was an arithmetic or logical error resulted from RAM data rewrite; reset result from the program jumped to the blank area, transient fault or infinite loop resulted from program jumping to program area. Experiments showed that the high voltage capacitor instantaneous discharge could indeed cause the data register modified; reset was the result of the program jump to the blank area; infinite loop or crash because of the program counter PC ricocheted to the execution of the program area changed the instruction sequence; transient fault was program ricocheted to skip part of the instruction execution. The experimental results were consistent with the mechanism analysis.

Key words:fuze;ESA;MCU;failure mechanism

中图分类号:TJ43

文献标志码:A

文章编号:1008-1194(2016)02-0023-05

作者简介:孙国先(1990—),男,山东青岛人,硕士研究生,研究方向:电子安全系统。E-mail:617418019@qq.com。

*收稿日期:2015-10-21

猜你喜欢
单片机
单片机在电子技术中的应用和开发
基于单片机的SPWM控制逆变器的设计与实现
基于51单片机控制花盆土壤湿度
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
MSP430单片机在仿真中要注意的几点问题
VC.NET下实现dsPIC单片机与PC机的通信
基于单片机的平衡控制系统设计