基于BF537的双冗余以太网的设计与实现

时间:2022-09-27 08:33:05

基于BF537的双冗余以太网的设计与实现

摘 要:首先对计算机通信中以太网控制器的双冗余备份技术进行阐述,然后简述了BF537及其结构特点,提出了两种基于Blackfin系列处理器bf537的双冗余以太网实现方案,并分别介绍了其设计原理、关键技术及实现技术,实现了以太网的实时在线检测和切换,并对切换速度进行了测试。

关键词:以太网; BF537; 冗余; 实时切换

中图分类号:TN919 文献标识码:A

文章编号:1004-373X(2010)11-0111-03

Design and Implementation of Dual-redundant Ethernet Based on BF537

BAO Jing-yuan

(PLA Naval Military Representative Office Stationed in the 701 Institute, Wuhan 430064, China)

Abstract: The dual-redundant backup technology of the Ethernet controller in the computer communication is described, and the BF537 and its structural characteristics is outlined. Two kinds of realization programs based on Blackfin family of processors BF537 are proposed, and its design principle, key technology and implementation techniques are introduced respectively. The real-time online detection and switch of Ethernet are achieved, and the switching speed is tested.

Keywords: Ethernet; BF537; redundancy; real-time switch

0 引 言

随着信息技术的高速发展,网络通信也显得越发重要,以太网也成为了各种控制系统接口互联的主要媒介。在金融机构、政府部门、军事应用等特殊应用场合对网络系统的稳定性要求非常高,为了提高系统的可靠性和抗毁性,常常采用双冗余的设计方式。双冗余网络的实现是以故障检测为基础,通过软件检查、交换机及网络节点的网卡协同处理共同完成的。冗余网络的构建方式通常是在每个网络节点采用双网卡,中间用两个HUB或交换机相连。这样当某个节点的一块网卡、网线或者HUB出现故障时,系统会马上启用另一块冗余网卡使得系统仍能够正常运行。本文基于BF537提出了两种冗余网络的构建方案和实现方法。

1 BF537结构特点

BF537是Blackfin家族的升级产品,其在标准Blackfin内核的基础上拥有更加丰富的接口,并在内部集成了一个以太网MAC控制器。BF537的内部结构如图1所示。

Blackfin内核包含2 个乘/累加器(MAC),2 个40 位的ALU,4 个视频专用8位ALU 和1个40 位移位器。运算单元处理来自寄存器组的8 位、16位或者32 位数据。每个MAC 每周期可完成一个16位乘16位的乘法运算,并把结果累加到40位的累加器中,提供8位的精度扩展。ALU单元执行标准的算术和逻辑运算,由于2个ALU具备对16位或32位数据操作的能力,因此运算单元具备的灵活性可以满足各种应用中信号处理的要求。每个32位的输入寄存器可以作为2个16位的寄存器,因此每个ALU可以完成非常灵活的单16位算术运算。通过把寄存器当作2个16 位的操作数使用,双16位或单32位操作可以在1个周期中完成。更好地利用第二个ALU,四个16位操作可以简单地完成,加速了每个周期的吞吐量。强大的40位移位器功能丰富,可以对数据进行移位、循环移位、归一化、提取和存储等操作。运算单元所使用的数据来自具有16个16位操作数或8个32位操作数的寄存器组。

同时BF537把存储器视为一个统一的4 GB的地址空间,使用32位地址并采用分级的存储器结构。Level 1(L1)存储器一般以全速运行,没有或只有很少的延迟。Level 2(L2)/Level 3(L3)分布在片内或片外,对它的访问会耗费多个处理器周期。在L1级,指令存储器只存放指令,2个数据存储器存放数据,一个专用的临时数据存储器存放堆栈和局部变量信息。在L2/L3级可以存放指令和数据。

图1 BF537内部结构示意图

2 双冗余以太网构建方案

从硬件角度看,以太网接口电路主要由MAC控制器和物理层接口(PHY)两大部分构成,本文从是否具备独立的MAC控制器出发提出了两种不同的构建双冗余以太网的方案。

2.1 基于独立MAC控制器的设计方案

上文中提到,BF537在内部集成了一个支持IEEE 802.3 MAC控制层协议的MAC控制器,只需要在外部外接一个以太网接口芯片,便可以形成一个完整的以太网通道。因此本文选择了SMSC公司的LAN8187,它提供了标准的MII总线接口,可以方便地与BF537相连接,连接方式如图2所示。其中在MII总线上进行数据的收发,MDC和MDIO则用来完成对接口芯片LAN8187寄存器的读写。本文在下面称由BF537的MAC控制器与物理层接口芯片LAN8187构成的以太网通道为主网络通道。

图2 冗余网络构建方案1

如果要求双冗余网络通道拥有独立的MAC控制器,则需在BF537外部扩展一个以太网控制器,见图2,选择同样来自于SMSC公司的LAN91C111,通过BF537的外部总线与之相连。选择LAN91C111的16位总线工作方式,其A0~A15与BF537的地址总线相连,D0~D15与BF537的数据总线相连,并由BF537的AMS信号控制LAN91C111的片选,外部PF管脚来响应来自LAN91C111的中断请求。

具有独立MAC控制器的双冗余以太网的设计方案如图2所示。

2.2 基于共用MAC控制器的设计方案

从应用角度分析,即使系统拥有独立的MAC控制器,在实际应用中也需要要求两个MAC控制器拥有相同的物理地址,因为若MAC地址不同,冗余切换将引起协议层中ARP绑定表的变化,重新映射ARP表中物理地址和IP地址之间的关系将增加冗余切换的时间,影响到网络通信实时性。

因此本文提出了一套MAC控制器,两个以太网接口芯片的方案。该设计方案通过一片CPLD将BF537的MII总线分别转接到两片LAN8187上,并由BF537来控制转接的时机,如图3所示。这样形成了两个以太网通信通道,大大简化了设计,提高了冗余切换的实时性。

图3 冗余网络构建方案2

3 冗余切换软件设计

3.1 网络状态监测

冗余切换的实现首先在于对网络实时在线监测,本文中检测的方法基于LAN8187的寄存器。LAN8187寄存器定义如表1所示。其中,Basic Control Register为基本控制寄存器,通过配置其各位,可以完成芯片软复位、10/100 MHz选择、全双工/半双工选择、LookBack模式选择、自协商等功能。Basic Status Register为基本状态寄存器,对其查询可以得到自协商结果、网络物理连接状态等网络基本状态。PHY Identifier 1/ PHY Identifier 2两个寄存器标识了芯片的Chip ID。因此,对网络状态的实时监测实际上就是实时读取Basic Status Register,并对结果做出判断。

3.2 程序设计

可以通过操作BF537的寄存器EMAC_STAADD完成其对LAN8187寄存器的读写。

表1 LAN8187寄存器定义

REGISTER#REGISTERNAMEGroup

0Basic Control RegisterBasic

1Basic Status RegisterBasic

2PHY Identifier 1Extended

3PHY Identifier 2Extended

4Auto-Negotiation Advertisement RegisterExtended

5Auto-Negotiation Link Partner Ability RegisterExtended

6Auto-Negotiation Expansion RegisterExtended

16Silicon Revision RegisterVendor-specific

17Mode Control/Status RegisterVendor-specific

18Special ModesVendor-specific

20~23ReservedVendor-specific

26Symbol Error Counter RegisterVendor-specific

27Comtrol/Status Indication RegisterVendor-specific

28ReservedVendor-specific

29Interrupt Source RegisterVendor-specific

30Interrupt Mask RegisterVendor-specific

31PHY Special Control/Status RegisterVendor-specific

对LAN8187寄存器读写的函数定义为:

u16 RdPHYReg(u16 PHYAddr, u16 RegAddr);

void WrPHYReg(u16 PHYAddr, u16 RegAddr, u32 Data);

其中PHYAddr为芯片的物理地址,RegAddr为寄存器地址。

对Basic Status Register的监测采用轮询的机制,即设定一个信号量Link_status,其周期为2 ms,因此每隔2 ms,Ether_moniter线程被触发一次。在Ether_moniter中通过调用RdPHYReg()函数,读取Basic Status Register的值,并判断Link位。Ether_moniter线程流程图如图4所示。

对于设计方案1来讲,当检测到需要进行网络切换时,需要停用当前网卡初始化备用网络LAN91C111并设定相同的IP地址以及MAC地址。对于方案2,则只需要通知CPLD将通道切换至备用的LAN8187接口。

4 冗余切换测试

用Visual C++6.0开发简单的上位机测试程序,每隔1 ms发送一个UDP数据报,并给每个数据报编写不同的序号。在BF537中编写程序不断接收上位机发来的数据报。然后制造网络通信故障,本文构建的冗余网络将会自动切换到备用通道继续接收上位机的数据报。最后通过检测接收到数据报的序号来确定冗余切换所消耗的时间。分别对两种方案所构建的冗余网络的切换进行测试,结果如表2所示。

图4 网络状态监测流程图

表2 冗余切换测试结果

方案平均丢包数平均切换时间 /ms

方案11 2001 200

方案233

从实验结果可以看出方案2具有快速切换的优点,丢包率低;方案1平均丢包数远大于方案2,并且切换时间长。

5 结 语

提出了两种基于BF537构建双冗余以太网的方案,分别论述了其原理、器件选择、连接方法,并做出软件设计。最后经过测试,方案2的切换效果和时间非常理想,最终在实际项目中得到了应用。

参考文献

[1]谢希仁.计算机网络\.4版.北京:电子工业出版社,2006.

[2]W Richard Stevens.TCP/IP详解卷1:协议\.北京:机械工业出版社,2000.

[3]陈坚,陈伟.Visual C++网络高级编程\.北京:人民邮电出版社,2001.

[4]Analog Devices.ADSP-BF537 Blackfin Processor Hardware Reference. Preliminary Revision 0.3\. Analog Devices,Inc., 2005.

[5]IEEE. IEEE Std 802.3[EB/OL]. \. , 2002.

[6]毛晓明,吴玉国.基于嵌入式技术和CAN总线的车辆配电系统\.现代电子技术,2009,32(7):144-146,150.

上一篇:基于ADS7846的电阻式触摸屏接口设计 下一篇:小波包分析在滚动轴承故障诊断中应用