snifer

[原创]Blackfin BF542 处理器中看门狗初始化问题

0
阅读(3264)

在Blackfin ADSP Bf542、544、548、549处理器中都有一个非常重要的部件,叫watch dog定时器,这个部件的作用非常巨大, 当系统运行时受到外部干扰或者系统错误,程序有时会出现"跑飞",导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(WATCHDOG)电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。

 其基本原理为:设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序运行一周期后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的计数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。

 在一个完整的嵌入式系统或单片机小系统中通常都有看门狗定时器,且一般集成在处理器芯片中,看门狗实际上就是一个定时器,只是它在期满后将自动引起系统复位。

输入时钟为MCLK(该时钟频率等于系统的主频),它经过两级分频,最后将分频后的时钟作为该定时器的输入时钟,当计数器期满后可以产生中断或者复位信号。

在Blackfin ADSP Bf542中,看门狗主要起到如下作用:

作为常规定时器使用,并且可以产生中断

作为看门狗定时器使用,期满时,它可以产生128个时钟周期的复位信号
 
输入到计数器的时钟周期
t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor )
 
  看门狗的定时周期
T =  WTCNT * t_watchdog
 理论性还是比较强,针对这个问题。我讲一下如何编写程序实现看门狗程序。