基于BF537的双冗余以太网的设计
Status Register为基本状态寄存器,对其查询可以得到自协商结果、网络物理连接状态等网络基本状态。PHY IdenTIfier 1/PHY Identitier 2两个寄存器标识了芯片的Chip ID。
因此,对网络状态的实时监测实际上就是实时读取Basic Status Register,并对结果做出判断。
3.2 程序设计
可以通过操作BF537的寄存器EMAC_STAADD完成其对LAN8187寄存器的读写。
对LAN8187寄存器读写的函数定义为:
u16 RdPHYReg(u16 PHYAddr,u16 RegAddr);
void WrPHYReg(u16 PHYAddr,u16 RegAddr,u32 Data);
其中PHYAddr为芯片的物理地址,RegAddr为寄存器地址。
对Basic Status Register的监测采用轮询的机制,即设定一个信号量Link_status,其周期为2ms,因此每隔2 ms,Ether_moniter线程被触发一次。在Ether_moniter中通过调用RdPHYReg()函数,读取Basic Status Register的值,并判断Link位。Ether-moniter线程流程图如图4所示。
对于设计方案1来讲,当检测到需要进行网络切换时,需要停用当前网卡初始化备用网络LAN91C111并设定相同的lP地址以及MAC地址。对于方案2,则只需要通知CPLD将通道切换至备用的LAN8187接口。
4 冗余切换测试
用Visual C++6.O开发简单的上位机测试程序,每隔1 ms发送一个UDP数据报,并给每个数据报编写不同的序号。在BF537中编写程序不断接收上位机发来的数据报。然后制造网络通信故障,本文构建的冗余网络将会自动切换到备用通道继续接收上位机的数据报。最后通过检测接收到数据报的序号来确定冗余切换所消耗的时间。分别对两种方案所构建的冗余网络的切换进行测试,结果如表2所示。
从实验结果可以看出方案2具有快速切换的优点,丢包率低;方案1平均丢包数远大于方案2,并且切换时间长。
5 结语
提出了两种基于BF537构建双冗余以太网的方案,分别论述了其原理、器件选择、连接方法,并做出软件设计。最后经过测试,方案2的切换效果和时间非常理想,最终在实际项目中得到了应用。
- 以太网远程监控系统实现远程监测控制和管理技术设计开发(11-30)
- 基于“网络通”的单片机以太网-CAN网关的应用(01-25)
- 基于嵌入式USB的以太网应用系统设计(02-16)
- 10GBASE-T以太网信号完整性测量方案(03-07)
- 以太网硬件协仿真接口的便捷及高带宽的仿真(06-12)
- 基于ARM9系统的无线发射台智能化监控设计(06-27)