|
本文设计了一种以AT91RM9200处理器为核心的高可靠嵌入式系统。系统具有两台机组,当一台机组发生故障后,另一台机组接管工作并继续运行。系统提供外部和内部Watchdog(看门狗)监控机制构成一级冗余、两级监控的可靠性设计方案。其中外部Watchdog分别采用MAX6374和以EPlC6 FPGA构建的监控电路,而内部Watchdog则利用AT91RM9200自带的Watchdog模块实现。本文分别从硬件和软件两个角度阐述系统的实现。 1 系统总体结构设计 1.1 AT91RM9200处理器 AT91RM9200是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 系统结构设计 为了提高可靠性,本系统采用基于温备的系统级可靠性设计方案。温备是在热备和冷备的基础上发展起来的一种双机容错技术,它是指两台机组同时加电,但只有主机处于工作状态,备机处于“温态”(空转等待接管主机工作的状态)。当主机发生故障时,由备机接替主机继续工作。故障机修复完毕后成为新的备机。与热备相比,温备方案具有实现简单、性能稳定等优点;相对于冷备方案,温备方案中的备机能够在主机故障后快速重启系统,从而最小化系统短时故障造成的损失。 系统具有两个处理器模块,每个处理器模块都以AT9lRM9200作为计算核心,称为“机组”。每台机组可以单独成为一个独立的子系统完成各项任务。系统还具有一块仲裁板,用于仲裁数据信号以及控制双机的工作方式。系统结构框图如图l所示。

利用AT91RM9200自带的多种外设接口,每台机组中除了具备处理器模块之外,还带有以太网接口、USB接口(用于连接USB接口无线网卡)和RS232串行接口。利用网络通信的特有工作方式,每台机组上的有线网络接口连接到一个集线器,USB接几无线网卡工作于managed模式,因此网络接口信号不需要集中的仲裁输入/输出,系统只需仲裁板提供对串口输入/输出信号的仲裁。这种方式也为双机之间传递同步信息提供一种有效途径:运行于双机中的应用程序可以利用有线网络或无线网络传递同步信息,当主机发生故障后,备机中的用户程序可以从最近的同步点开始工作,从而最小化主机故障造成的损失。 仲裁板上的控制逻辑通过两台机组的控制信号接口获取各机组当前工作状态,从而判断当前系统的工作模式,并据此控制机组与外部设备的连接。控制逻辑还负责向两台机组提供当前系统的工作状况,以便为运行于机组中的应用程序提供决策参考。 1.3 系统可靠性方案设计 为了提高整个系统的可靠性,须根据温备的特点设计各种监控机制。本系统针对每一台机组均设有Watchdog电路用于监控机组运行。一旦某台机组发牛故障,经过一定时间后,故障机相应的Watchdog会检测到故障的出现,并通过向故障机组发送nReset信号复位故障机组,同时向另一台机组发送IRQ信号以通知接管工作。控制逻辑保持主机与外部设备的连接,一旦主机发生故障,控制逻辑将更改工作状态,接通新主机与外部设备的连接。 在系统中,采用内部和外部两级监控策略。内部监控方案利用AT91RM9200处理器内部Watchdog模块实现;外部监控方案则利用仲裁板中的EPlC6 FPGA和专用Watchdog芯片MAX6374实现。其中,MAX6374芯片是实现外部监控功能的主体。当MAX6374损坏时,则采用位于EP1C6内部利用硬件描述语言实现的Watchdog接管外部监控工作,从而构成冗余的外部监控机制。内部监控机制的优先级低于仲裁板上外部监控机制的优先级。如果仲裁板上的两个Watchdog均发生失效,因而不能重启CPU板时,AT9lRM9200的内部Watchdog将会发生作用,重启CPU。这是通过控制内外两种Watchdog计数时间的长短来实现的。将MAX6374的定时时间设置为3s,EPlC6的定时时间设置为4s,而AT9lRM9200内部Watchdog定时时间设置为5 s。因此AT91RM9200内部软件Watchdog和仲裁板上的硬件Watchdog构成了系统中的两级监控、一级冗余的监控机制。系统的可靠性设计方案示意图如图2所示。 
2 基于AT91RM9200的多级监控机制的实现 2.1 利用MAX6374设计外部监控器 在仲裁板上利用MAX6374芯片实现了专用的Watchdog电路。MAX6374足Maxim公司的一款低功耗Watchdog芯片,耗电仪5μA,封装为8引脚SOT23。其定时周期可通过对引脚SET2、SETl和SETO进行编程,从而获得不同的定时时间。MAX6374的定时周期如表1所列,电路原理图如图3所示。 

MAX6374的输入端WDI与AT91RM9200的PIO端口直接连接,而输出端WD0则与AT91RM9200的nReset引脚相连。在实际使用中,将SETO、
下一篇链接:可解决嵌入式Linux系统中数据同步读写冲突的问题的方法
上一篇链接:关于在“和欣”嵌入式系统上部署与提供WEB SERVICE的组件方法 |