用AT91 RM9200构建高可*嵌入式系统
用AT91 [url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]构建高可*嵌入式系统摘要 提出一种基于AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]处理器的高可*双机温备解决方案。利用EPlC6、MAX6374设计两个冗余的外部Watchdog监控处理器系统的工作状态,利用AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]自带的Watchdog作为内部监测机制监控处理器本身的故障;设计并给出了以AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]为核心的监控机制的具体实现,包括心跳信号的发送和中断服务程序的设计。
关键词 AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url] Watchdog双机客错系统 温备 高可*系统
本文设计了一种以AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]处理器为核心的高可*嵌入式系统。系统具有两台机组,当一台机组发生故障后,另一台机组接管工作并继续运行。系统提供外部和内部Watchdog(看门狗)监控机制构成一级冗余、两级监控的可*性设计方案。其中外部Watchdog分别采用MAX6374和以EPlC6 FPGA构建的监控电路,而内部Watchdog则利用AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]自带的Watchdog模块实现。本文分别从硬件和软件两个角度阐述系统的实现。
1 系统总体结构设计
1.1 AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]处理器
AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]是Atrnel公司生产的一款工业级ARM9处理器,内嵌ARM920T ARM Thumb处理器核,主频为180 MHz时性能可达200 MIPS,并内置16 KB SRAM和128 KB ROM。外部总线接口(EBI)支持SDRAM等存储器,带有7个外部巾断源,1个快速中断源和4个32位PIO控制器,最多支持122个可编程I/O端口。同时该芯片还内嵌Ethemet MAClO/100M接口,并提供USB 2.0全速主机端口与设备接口,以及其他常用的外部接口。
1.2 系统结构设计
为了提高可*性,本系统采用基于温备的系统级可*性设计方案。温备是在热备和冷备的基础上发展起来的一种双机容错技术,它是指两台机组同时加电,但只有主机处于工作状态,备机处于“温态”(空转等待接管主机工作的状态)。当主机发生故障时,由备机接替主机继续工作。故障机修复完毕后成为新的备机。与热备相比,温备方案具有实现简单、性能稳定等优点;相对于冷备方案,温备方案中的备机能够在主机故障后快速重启系统,从而最小化系统短时故障造成的损失。
系统具有两个处理器模块,每个处理器模块都以AT9l[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]作为计算核心,称为“机组”。每台机组可以单独成为一个独立的子系统完成各项任务。系统还具有一块仲裁板,用于仲裁数据信号以及控制双机的工作方式。系统结构框图如图l所示。
screen.width-500)this.style.width=screen.width-500;">
利用AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]自带的多种外设接口,每台机组中除了具备处理器模块之外,还带有以太网接口、USB接口(用于连接USB接口无线网卡)和RS232串行接口。利用网络通信的特有工作方式,每台机组上的有线网络接口连接到一个集线器,USB接几无线网卡工作于managed模式,因此网络接口信号不需要集中的仲裁输入/输出,系统只需仲裁板提供对串口输入/输出信号的仲裁。这种方式也为双机之间传递同步信息提供一种有效途径:运行于双机中的应用程序可以利用有线网络或无线网络传递同步信息,当主机发生故障后,备机中的用户程序可以从最近的同步点开始工作,从而最小化主机故障造成的损失。
仲裁板上的控制逻辑通过两台机组的控制信号接口获取各机组当前工作状态,从而判断当前系统的工作模式,并据此控制机组与外部设备的连接。控制逻辑还负责向两台机组提供当前系统的工作状况,以便为运行于机组中的应用程序提供决策参考。
1.3 系统可*性方案设计
为了提高整个系统的可*性,须根据温备的特点设计各种监控机制。本系统针对每一台机组均设有Watchdog电路用于监控机组运行。一旦某台机组发牛故障,经过一定时间后,故障机相应的Watchdog会检测到故障的出现,并通过向故障机组发送nReset信号复位故障机组,同时向另一台机组发送IRQ信号以通知接管工作。控制逻辑保持主机与外部设备的连接,一旦主机发生故障,控制逻辑将更改工作状态,接通新主机与外部设备的连接。
在系统中,采用内部和外部两级监控策略。内部监控方案利用AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]处理器内部Watchdog模块实现;外部监控方案则利用仲裁板中的EPlC6 FPGA和专用Watchdog芯片MAX6374实现。其中,MAX6374芯片是实现外部监控功能的主体。当MAX6374损坏时,则采用位于EP1C6内部利用硬件描述语言实现的Watchdog接管外部监控工作,从而构成冗余的外部监控机制。内部监控机制的优先级低于仲裁板上外部监控机制的优先级。如果仲裁板上的两个Watchdog均发生失效,因而不能重启CPU板时,AT9l[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]的内部Watchdog将会发生作用,重启CPU。这是通过控制内外两种Watchdog计数时间的长短来实现的。将MAX6374的定时时间设置为3s,EPlC6的定时时间设置为4s,而AT9l[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]内部Watchdog定时时间设置为5 s。因此AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]内部软件Watchdog和仲裁板上的硬件Watchdog构成了系统中的两级监控、一级冗余的监控机制。系统的可*性设计方案示意图如图2所示。
screen.width-500)this.style.width=screen.width-500;">
2 基于AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]的多级监控机制的实现
2.1 利用MAX6374设计外部监控器
在仲裁板上利用MAX6374芯片实现了专用的Watchdog电路。MAX6374足Maxim公司的一款低功耗Watchdog芯片,耗电仪5μA,封装为8引脚SOT23。其定时周期可通过对引脚SET2、SETl和SETO进行编程,从而获得不同的定时时间。MAX6374的定时周期如表1所列,电路原理图如图3所示。
screen.width-500)this.style.width=screen.width-500;">
screen.width-500)this.style.width=screen.width-500;">
MAX6374的输入端WDI与AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]的PIO端口直接连接,而输出端WD0则与AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]的nReset引脚相连。在实际使用中,将SETO、SETl和SET2分别设置为l、0和O。如果AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]在3 s内没有发出心跳信号,那么MAX6374将会在WDO端发出一个低电平脉冲,对AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]进行复位。此外,也可以通过FPGA对3个SET端口进行编程,以满足不同定时间隔的需要。
2.2 利用EPlC6设计外部监视器
除了使用MAX6374专用Watchdog电路之外,还可以利用FPGA设计另一个监控模块作为MAX6374电路的冗余。采用Altera公司的EPlC6 FPGA设计另一个外部Watchdog。AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]发出的心跳信号经过机组上的控制信号接口输入到EPlC6中,对EPlC6内部自定义的Watchdog进行周期性的硬件复位;此外,EPlC6还负责仲裁两台机组各自的串口信号。具有Watchdog功能和仲裁功能的FPAG模块称为“仲裁器”。图4是仲裁器的结构功能图。
图4中各个关键信号说明如下:
screen.width-500)this这种方法为提高系统的可*性,防止软件死锁,或者强电磁干扰导致的处理器失效提供了一种有效的保护手段。
2.4 AT91[url=http://www.ic37.com/RM9200-p.htm][color=#0000ff]RM9200[/color][/url]心跳信号的发送
系统中的两个外部监控电路均领域对嵌入式系统的需求。经实践证明,该系统能够应对发生于板级和处理器级的故障,延长了系统的平均故障间隔时间,应用效果较好
本文可能所用到的IC型号: [url=http://www.ic37.com/N82C0816-p.htm][b][color=#0000ff]N82C0816[/color][/b][/url] [url=http://www.ic37.com/N82S181CN3-p.htm][b][color=#0000ff]N82S181CN3[/color][/b][/url] [url=http://www.ic37.com/MT58LC32K32D7LG-7-p.htm][b][color=#0000ff]MT58LC32K32D7LG-7[/color][/b][/url] [url=http://www.ic37.com/TAJA105K025RNJ-p.htm][b][color=#0000ff]TAJA105K025RNJ[/color][/b][/url] [url=http://www.ic37.com/MC74HCT08AD-p.htm][b][color=#0000ff]MC74HCT08AD[/color][/b][/url] [url=http://www.ic37.com/TMS5220NL-p.htm][b][color=#0000ff]TMS5220NL[/color][/b][/url]
页:
[1]