RSS

AT91 RM9200构建嵌入式系统的介绍02

来源:网络 作者:佚名 时间:2008-04-20 Tag:AT91   RM9200   嵌入式系统   点击:

2 基于AT91RM9200的多级监控机制的实现

  2.1 利用MAX6374设计外部监控器

  在仲裁板上利用MAX6374芯片实现了专用的Watchdog电路。MAX6374足Maxim公司的一款低功耗Watchdog芯片,耗电仪5μA,封装为8引脚SOT23。其定时周期可通过对引脚SET2、SETl和SETO进行编程,从而获得不同的定时时间。MAX6374的定时周期如表1所列,电路原理图如图3所示。

 

 

 

 

 

 

 

 

 

 

MAX6374的定时周期

电路原理图

  MAX6374的输入端WDI与AT91RM9200的PIO端口直接连接,而输出端WD0则与AT91RM9200的nReset引脚相连。在实际使用中,将SETO、SETl和SET2分别设置为l、0和O。如果AT91RM9200在3 s内没有发出心跳信号,那么MAX6374将会在WDO端发出一个低电平脉冲,对AT91RM9200进行复位。此外,也可以通过FPGA对3个SET端口进行编程,以满足不同定时间隔的需要。

  2.2 利用EPlC6设计外部监视器

  除了使用MAX6374专用Watchdog电路之外,还可以利用FPGA设计另一个监控模块作为MAX6374电路的冗余。采用Altera公司的EPlC6 FPGA设计另一个外部Watchdog。A

T91RM9200发出的心跳信号经过机组上的控制信号接口输入到EPlC6中,对EPlC6内部自定义的Watchdog进行周期性的硬件复位;此外,EPlC6还负责仲裁两台机组各自的串口信号。具有Watchdog功能和仲裁功能的FPAG模块称为“仲裁器”。图4是仲裁器的结构功能图。

仲裁器的结构功能图

  图4中各个关键信号说明如下:

  (1)模块符号

  cpu0和cpul为双机容错系统中的两台机组符号;ARBITER为仲裁器的仲裁模块,完成主机标志的判断;DBOUT为仲裁器的数据通信模块,将各数据信号仲裁后与外界进行通信;WDT0和WDT1为Watchdog模块,分别监视相应的机组工作情况。

  (2)输入/输出信号

  wdiO和wdil为CPU发往各Watchdog的周期性心跳信号,用于标志CPU是否正常工作;IRQ0和IRQ1为中断请求信号,请求启动对应的CPU机组接管故障机组;nRESET0和nRESETl为CPU的复位信号;clk为ARBITER模块的同步信号。

  外部Watchdog的主要Verilog代码结构如下:

程序

  可以看出,该模块的计数时间由时钟信号clk确定。本系统使用了40 MHz的时钟晶振,因此如果需要长为4 s的定时时间,则为计数器设置的计数值应当是40 000 000×4=160 000 000。经过4 s之后,如果该Watthdog没有收到处理器发来的心跳信号,则将通过FPGA的端口向AT9lRM9200的复位引脚发送低电平的复位信号。

  wdi0和wdi1对仲裁器来说是异步输入的信号。这样很容易使得信号在FPGA中传输时,所需的时间不能精确估计,当两个信号同时发生跳变的瞬间,就产生了“竞争与冒险”。这在时序仿真后的波形中往往就会产生一些不正确的尖峰毛刺信号。另外,由于FPGA以及其他CPLD器件内部的分布电容和电感对电路中的毛刺基本没有过滤作用,因此这些毛刺信号会被“保留”并传递到后一级,从而使得毛刺问题更加突出。为此在设计中增加了图4中的clk信号作为全局的时钟同步信号。它也是FPGA的时钟信号,其作用是使由Watchdog发出的信号“同步”地输入到仲裁器中,这样可以消除毛刺信号。

  clk同步化wd0和wdl的代码如下:

程序

  2.3 利用内部Watchdog模块设计内部监控器

  AT9lRM9200内嵌Watchdog模块,用于在软件陷入死锁时防止系统锁定。其结构基于一个16位递减计数器,计数器值从AT91RM9200的寄存器ST_WDMR中载入,如图5所示。

AT9lRM9200内嵌Watchdog模块

  当Watchdog复位时,ST_WDMR的值为0x00020000,对应于计数器的最大值;当Wathdog溢出时,在NWDOCF引脚上会出现一个宽度为8个慢时钟周期的Watchdog溢出低电平信号。在典型慢时钟频率为32.768kHz的情况下,使用慢时钟信号的128倍分频信号可确定最大Watchdog周期为256 s。在正常操作下,Watchdog定时器溢出发生前,可以通过设置ST_CR(控制寄存器)的WDRST位,定期重载Watchdog值。

  若出现溢出,Watchdog定时器将会:①设置中断产生的ST_SR(状态寄存器)的WDOVF位;②若ST_WD-MR中的EXTEN位置位,则在Watchdog溢出信号中产生一个8周期的慢时钟低电平脉冲;③若ST_WDMR中RSTEN位置位,则会产生一个内部中断复位;④重载并重启递减计数器


1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
教程下载