PowerPC下双网冗余热备份高速切换技术实现

2016-06-01 00:46强景赵多王红兵
单片机与嵌入式系统应用 2016年3期
关键词:驱动程序寄存器端口

强景,赵多,王红兵

(西安电子科技大学 电子工程学院,西安 710071)



强景,赵多,王红兵

(西安电子科技大学 电子工程学院,西安 710071)

摘要:网络冗余切换热备份技术大多与运行有嵌入式操作系统的控制芯片一起工作,该技术的应用有效增强了网络数据传输的物理可靠性,但是网络切换速度一直是这项技术的瓶颈。本文首先提出通过运行有Linux系统的MPC8377芯片以及外部连接CPLD和2片88E111 PHY芯片完成网络冗余切换热备份的方案,然后依照方案设计对应软件,最终使得双网切换时间小于20 ms,极大地改善了现存方案的切换速度,使得网络恢复加快、数据传输更加可靠。

关键词:双网切换;网络冗余;Linux;MPC8377;88E111;PHY

引言

本文提出在PowerPC架构上运行有Linux系统的MPC8377来完成网络冗余切换热备份方案。通过MPC8377的GPIO口控制CPLD来完成MPC8377的MAC与PHY的对应连接关系的切换,进而实现网络的重新恢复。本方案最终使得切换时间小于20 ms,极大改善了现有技术的缺陷和不足。

1网络冗余切换简介

网络冗余是工业网络的一项保障策略,目的是减轻意外中断的风险,通过即时响应保证生产连续,从而降低关键数据流上任意一点失效所带来的影响。在冗余网络中比较重要的一种双冗余类型为主备网络,在正常情况下一般只有主网络在工作,一旦发生意外,主网切换到备用网络,并发送故障信号给上位机,在主网络得到修整后,主网成为备用网络继续运行。这种方案的恢复时间一般在200 ms左右,虽然可以用来提供网络连接保障,但是恢复时间和切换时间太长一直是该方案的弊端。

2方案总体设计

2.1硬件介绍

该设计采用Freescale公司的基于PowerPC架构的MPC8377芯片,其外围接口丰富,可参考实际需求自由删减,提高了系统开发的灵活性,同时降低了产品开发的难度与成本,有效缩短了产品从研发到投放市场的时间,提高了产品的竞争力,处理器内部集成了e300内核PCI、PCIE、DDR等控制器,其提供了双千兆以太网控制器。MPC8377 I/O接口包括10/100/1000 Mbps以太网接口:一个千兆位 RGMII连接到(PHY)88E111,一个5端口 Vitesse Ethernet switch (VSC7385);PCI 和PCI Express插槽:PCI Express连接器,一个Mini PCI 连接器,一个标准PCI 连接器;SATA:两个USB 2.0,4端口USB Hub,一个串行通信接口。

该设计使用的PHY为88E1111,88E1111吉比特以太网收发器是一个物理层器件,用于1000 BASE-T、100 BASE-TX和10 BASE-T类型的以太网。88E1111支持用于直接连接到MAC/Switch接口的吉比特介质无关接口(GMII)、精简的GMII(RGMII)、串行吉比特介质无关接口(SGMII)、10比特接口(TBI)、精简的10比特接口(RTBI);集成了一个可选的1.25 GHz的SERDES接口(串行器/解串器);被用于实现1000 BASE-T千兆接口转换器(GBIC)或小型可插拔(SFP)模块;采用了先进的混合信号进程来均衡执行、消除回声和传音、数据恢复和错误校正。该器件运行在高噪声的环境中时功耗也非常低。

2.2硬件方案

MPC8377带有两路MAC接口,但是为了提高网络恢复的速度和切换速度以及实现IP和MAC的唯一绑定,本方案只采用单路MAC。MAC数据线与控制线连接CPLD,然后通过CPLD一分二连接两路PHY完成。为了保证切换正常和快速,采用MPC8377的一路GPIO口连接CPLD作为切换信号。为了保证中断速度,直接把两路PHY的中断信号通过CPLD与门操作连接MPC8377。整个方案连接方式如图1所示。

3MPC8377的网络设计

为了网络连通方便,该方案需要移植Linux系统到

图1 方案连接方式

MPC8377,为了系统正常启动,设计MPC8377为NOR Flash启动模式,NOR Flash通过烧写定制的Uboot启动引导文件、定制的Linux image镜像文件、dtb文件,以及rootfs文件系统。移植好Linux系统之后,网络底层程序可以通过移植网络驱动完成,因此只需通过底层驱动获取网络诊断信息和向CPLD发送相应切换命令。

3.1Linux系统网络诊断

实现网络切换程序,需要准确判定网络通断状态,并及时发送切换命令。网络通断通过读取88E111的寄存器1,其为状态寄存器。88E111的状态寄存器如表1所列。

由此可知,状态寄存器有16位,第2位为Link 状态,第3位为自动协商,该寄存器在Linux系统启动结束后默认值(默认是指网络在Linux系统启动过程中正常)为0x796D。通过读取分析该状态寄存器的第2位即可得到网络状态,即该位为1,表示连接正常,为0表示连接中断。

Linux用户空间应用程序通过在用户空间先创建套接字socket(PF_LOCAL, SOCK_DGRAM, 0),再调用ioctl(sockfd, SIOCGMIIPHY, &ifr)函数,可以获取PHY地址;通过先调用(uint16_t)strtoul(‘eth0’ NULL, 0),选定网络,再调用ioctl(sockfd, SIOCGMIIREG, &ifr)可以访问到网络连接状态,最终通过if(mii->val_out&0x0004)来判定网络连接状态。

3.2GPIO驱动设计

Linux系统驱动分为3类:字符设备、块设备、网络设备。本文采用字符驱动来编写GPIO驱动,GPIO模块的结构图如图2所示。

图2 GPIO模块的结构图

驱动程序通过module_init(GPIO_init)、module_exit(GPIO_exit)分别注册和注销GPIO驱动,在注册设备驱动时初始化SICRL、GPnDIR、GPnODR、GPnDAT寄存器。为了方便驱动程序所驱动的设备在用户空间打开,在编写GPIO驱动时通过class_create(THIS_MODULE, "GPIO")以及device_create(firstdrv_class, NULL, MKDEV(major, 0), NULL, "GPIO")函数让系统自动创建设备节点。最终通过用户空间的ioctl函数改写GPnDAT来完成切换信号的控制。

Linux系统在上电加载Uboot阶段,开始初始化PHY芯片。为了保证在进入Linux系统后,切换到备用PHY后可以直接正常使用,需要更改Uboot启动初始化程序,在初始化主PHY芯片后,切换信号到备用PHY,再进行一遍PHY初始化。MPC8377带有串口,Uboot启动过程中可以通过串口将Uboot启动信息回送至上位机,Uboot初始化完成后启动后串口输出如图3所示。

图3 MPC8377 Uboot引导程序初始化主、备PHY

如图3所示,Net下TSEC1和TSEC2分别对应主、备PHY的初始化,在两次初始化之间,MPC8377控制GPIO引脚,通过CPLD调整MAC与PHY的连接关系。

3.3程序自启动和驱动加载

为了使得用户切换程序和驱动程序能在Linux系统启动后自动运行,编译好的用户程序和驱动程序都被放置在rootfs文件系统中,并通过压缩烧写到NOR Flash中。用户程序实现正常运行必须先启动GPIO驱动程序。Linux系统启动时会自动加载/etc/profile文件,为了自动启动用户程序和GPIO驱动,需要在/ect /profile 文件中添加如下代码:

ifconfig eth0 192.168.81.238 netmask 255.255.255.0

//更改网卡配置

mkdir /lib/modules/3.0.0//创建节点,供卸载GPIO驱动使用

insmod GPIO.ko//安装GPIO驱动

./main//启动用户程序

4CPLD切换设计

CPLD连接来自MPC8377的MAC信号,并且将其信号通过一分二给两路PHY。在Uboot启动过程中由MPC8377通过GPIO信号发送给CPLD,从而实现两路PHY的初始化,在启动Linux系统后,MPC8377仍然可以通过网络状态来调度CPLD连接不同的PHY。

4.1CPLD与PHY的连接

除去MDIO信号之外,CPLD与MAC连接的I/O信号都可以直接进行一分二,最终生成的CPLD模块略——编者注。

4.2CPLD的MDIO设计

MAC与PHY连接的MDIO信号属于双向I/O信号,不能直接一分二。本文在CPLD中判断收发条件来实现控制端口的I/O状态切换。

图4 MDIO读时序

图5 MDIO写时序

MDIO信号协议读写信号时序分别如图4、图5所示。MDIO的一分二可以通过CPLD的inout端口来实现,对inout端口的控制可以通过分析MDIO的时序来完成。从MDIO读写时序(图4和图5)可以看到,在起始(Start)信号过后,会有读写控制位信号,10为读,01为写,通过对这两位的分析改变inout端口的输入输出特性,即在发现10时,inout在TA阶段表现为输入,在发现01信号时,在TA阶段表现为输出,进而得到MDIO一分二模块如图6所示。

图6 MDIO一分二模块

5测试

为了得到切换时间,在网络切换前调用gettimeofday (&tvpre, &tz)获取当前系统时间,在完成网络切换并且网络连通后调用gettimeofday (&tvafter, &tz)再次获取系统时间,最终计算差值打印出主备切换时间,如图7所示。

图7 主备切换时间

通过测试可以看到,从PHY1到PHY2的切换,仅仅在12 ms内就可以完成,通过多次测试,双网的切换时间一直保持小于20 ms。

结语

本文介绍了MPC8377与CPLD、88E111,通过Linux系统实现双冗余网络切换热备份方案,介绍了MPC8377字符设备驱动的编写,以及CPLD在处理MDIO信号上的应用,最终使得设计方案可以小于20 ms的切换时间。通过本方案的应用可以一定程度上满足网络的可靠性和网络恢复的时长要求。

编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。

参考文献

[1] 胡国鹏,刘利强.VxWorks环境下双冗余以太网卡技术在底层驱动中的实现[J].应用科技,2005(8):43-45.

[2] 刘利强,戴运桃,周卫东.基于VxWorks的双端口网卡智能双冗余驱动[J].电子技术应用,2006(7):64-66.

[3] 洪亮,章嘉文,陆亨立.基于FPGA的MDIO接口逻辑设计[J].微计算机信息,2009,25(5-2):171-172,196.

强景(研究生),研究方向为PowerPC嵌入式系统、电子存储阵列;赵多(研究生),研究方向为FPGA IP核控制器、信号处理;王红兵(研究生),研究方向为SATA控制器、电子存储阵列。

Qiang Jing,Zhao Duo,Wang Hongbing

(School of Electronic Engineering,Xidian University,Xi’an 710071,China)

Abstract:The technology of network redundancy switching backup mostly works with the control chip running with embedded operating system.The application of this technology can effectively increase the reliability of network data transmission,but the speed of network switching is a big problem.In this paper,firstly the control chip MPC8377 running with Linux system,CPLD and 2 pieces of 88E111 (PHY) complete the design of the network redundancy backup.Then the corresponding software is designed.Thus the time of the network switching is less 20 ms.In this way,the switching speed is improved and makes the transmission more reliable.

Key words:network switching;network redundancy;Linux;MPC8377;88E111;PHY

收稿日期:(责任编辑:薛士然2015-09-05)

中图分类号:TP368.1

文献标识码:A

猜你喜欢
驱动程序寄存器端口
STM32和51单片机寄存器映射原理异同分析
一种端口故障的解决方案
Lite寄存器模型的设计与实现
阻止Windows Update更新驱动程序
交换机生成树安全
计算机硬件设备驱动程序分析
移位寄存器及算术运算应用
端口阻塞与优先级
卫星三端口DC-DC变换器技术综述
Lx5280模拟器移植设计及实施