paper @https://www.wendangku.net/doc/c47596934.html, (投稿专用)
2006年第1期
Microcontrollers &Embedded Systems
69
M S P430单片机中的WD T 研究
■上海电机学院 章锐
引 言
软件的可靠性一直是一个关键问题。任何使用软件
的人都可能会经历计算机死机或程序跑飞的问题,这种情况在嵌入式系统中也同样存在。由于单片机的抗干扰能力有限,在工业现场的仪器仪表中,常会由于电压不稳、电弧干扰等造成死机。在水表、电表等无人看守的情况下,也会因系统遭受干扰而无法重启。为了保证系统在干扰后能自动恢复正常,看门狗定时器(Watchdog Timer )的利用是很有价值的。
1 看门狗的作用
看门狗定时器是一个计数器,基本功能是在发生软件
问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。
2 看门狗问题及相关实验
现今市面上流行的一些单片机,多嵌有内部WD T ,如TI 的MSP430系列,Philips 的P87xxx 和P89xxx 系列,Microchip 的PIC 系列,At mel 的A T89SXX 系列和Holtek 公司的Htxxx 系列。但是这些内部看门狗在工作时,多存在一定的误差。一些工程师在设计的过程中,由于忽略了这一点,导致系统出现异常。MSP430系列单片机是美国德州仪器公司(TI )近几年开发的新一代单片机,该系列是一款16位、具有精简指令集、超低功耗的全新概念混合型单片机。在众多单片机系列中,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为一颗耀眼的新星。其内部自带看门狗及复位电路,理论上如果程序跑飞,可用看门狗将其复位。但在实际使用过程中,发现看门狗的作用并非万无一失,以下实验证明了这一点。
实验电路如图1所示。 实验程序清单:
#include
void main (void ){
P1DIR |=0x0f ; //设置P1.2~P1.0为输出
for (;;){
volatile unsigned int i ;WD TCTL =WD TPW +WD TCN TCL ;//复位WD T 计数器P1OU T ^=0x0f ;//P1.0~P1.2相互异或i =5000;//延时
do (i --);while (i !=0);}
}
上述实验启动后,如果程序正常运行,L ED 会闪烁。缺省时,MSP430的看门狗是允许状态,所运行的程序会不断地访问看门狗。理论上,这个系统是不会发生启动失败的,因为即使启动失败,看门狗也应该在数百毫秒内启动,复位整个系统。基于这种思想,对单片机的复位进行测试。K2断开,用K1连续产生Reset 信号,测试看门狗使系统重启的成功率。K2闭合,则reset 端高电平,理论上K1不能有效产生复位脉冲,
观察看门狗是否起作用。
图1
70
2006年第1期
adv @https://www.wendangku.net/doc/c47596934.html, (广告专用)
3 实验结果与分析
实验结果如下:K2断开,连续开关K1,上电重启系统,平均155次失败1次(L ED 不闪),即看门狗失效概率0.6%;K2闭合,连续开关K1,平均18次失败1次(L ED 不闪),且一旦失败,将连续失败下去,看门狗无效率占到了约5.5%。
另外,当采用同样具有内置看门狗的其他系列单片机替代实验中的MSP430,启动程序段作相应修改时,实验结果仍大致相同,这说明具有内置看门狗的单片机面临的问题是相同的。经分析可能有如下原因:
①由于看门狗的时钟不独立,计数时钟与系统为同一分频链路,因此看门狗不能在系统出现问题时有效运作。
②由于时钟可用软件设置,启动失败时,开机时钟可能处于空档,没有时钟看门狗不能生效。
③有些看门狗需要用软件设置或启动,因此启动失败后,初始化程序没有激活,CPU 可能跳转到随机代码,使看门狗被禁止。这样的看门狗是需要有可靠的上电复位作保证的,因此,从理论上讲,原设计存在着不合理性。
基于上述分析,采用片外看门狗专用芯片TPS3823由独立的分频振荡电路提供计数脉冲。实验电路如图2所示。
上述电路中,TPS3823输出定时溢出信号给Reset 端。程序段中,CPU 要不断地通过I/O 口输出喂狗信号
,
图2
使看门狗计数器清零。在此电路中重复上述试验中K1、K2的相同动作,系统重启成功率达到100%。
结 语
未来的内置看门狗必须有独立可靠的时钟。系统上电后,看门狗即为允许状态,无需软件设置,它只能被外部硬件跳线或内部熔丝(fuse )所禁止。目前,如果要求设计可靠性较高的嵌入式系统,外置看门狗是必须考虑的。
内置看门狗的另一问题是系统复位后,程序应判断是由Reset 端正常上电复位,还是程序跑飞看门狗所致,由此确定现场数据是否应该保留。这也是在看门狗应用中所应考虑的。
章锐:高级讲师,主要研究方向为实时控制与程序设计。
(收稿日期:2005\|09\|14)
68
SF TL B ,-8
AND #0FF H ,B ADD B ,A STL M A ,AR4;地址低位+数据字节
LDM ADDRESS ,A ADD #1,A STL M A ,ADDRESS ;E 2
PROM 地址+1CALL WRITE ;写E 2PROM 子程序
LDM ADDRESS ,A SF TL A ,-8AND #00FF H ,A OR #0200H ,A STL M A ,AR3;写指令+地址高位LDM ADDRESS ,A SF TL A ,8
AND #0FF00H ,A
LD 3AR2+,B
;程序代码地址+1
AND #0FF H ,B ADD B ,A STL M
A ,AR4
;地址低位+数据字节LDM ADDRESS ,A ADD #1,A STL M A ,ADDRESS ;E 2
PROM 地址+1CALL
WRITE
;写E 2PROM 子程序
LOOP :NOP
.end
结 语
本文介绍的DSP 现场可编程方法,经实际应用效果
良好,其方便灵活的特点增强了现场处理问题的能力。由于其完全由软件实现,因此这种方法同样也适用于其他品牌的DSP 产品。
参考文献
1 Application Report —TMS320VC5416Bootloader.Texas In 2
strument s Incorporated ,2001
2 TMS320C54x Assembly Language Tools User πs Guide ,Texas
Instrument s Incorporated ,2001
3 TMS320C54x DSP Reference Set (volume 1、volume2、volume3、
volume4、volume5),T exas Instruments Incorporated ,2001
(收稿日期:2005\|09\|05)