伍召学,黄 俊,谢 虎
(重庆邮电大学信号处理与片上系统实验室,重庆400065)
根据《宽带网络基础设施“十二五”规划》,我国宽带建设将以网络能力全面提升为主线,以加快城域网、部署大容量的DWDM系统为着力点,逐步进行城域网上联骨干网的扁平化改造,增加骨干网络核心节点的数量,提升宽带网络保障能力。而节点一般接入到两个或多个网络中,一旦出现设备故障,将造成极大的冲击和损失。因此,针对节点的旁路保护显得至关重要。
基于10G传输的光纤旁路保护器[1]是专门针对当前DWDM系统接入节点的旁路保护设备。当节点出现硬件故障、电源故障、软件死锁时快速、自动跳过该节点切换到直通状态进行通信,形成网络自愈,保证网络可用性,不影响网络稳定性,让网络维护更加得心应手。
本设计的主要目的是利用MPC8308丰富的内部资源,配合基于10G传输的以太网交换芯片BCM56334、物理芯片BCM8705以及精密的光学元件,设计出一种性价比较高的旁路保护器。该旁路保护器通过镜像端口与被保护设备的防火墙相连,实现了光纤网络安全的完美保护。旁路保护器硬件原理示意图如图1所示。
图1 硬件原理图
旁路保护器硬件上采用飞思卡尔的 MPC8308[2-3]作为主处理器,通过数据采集模块与被保护设备相连,通过RJ-45进行管理操作,通过RS-232串口进行配置和软件升级操作,通过判断接收返回的心跳信号是否异常来控制WDT驱动光开关,切换光路。数据采集模块主要由BCM8705和光模块(XFP)组成,通过配对使用,构成独立的接收或转发电路,提高了系统效率。数据采集模块示意图如图2所示。
图2 数据采集模块
旁路保护器主要用于10G传输的设备保护,信息吞吐量大,而且是主动外置保护设备,要发送和接收心跳包,对响应实时性要求较高,因此本设计采用飞思卡尔的MPC8308作为主处理器。MPC8308中的PowerPC e300c带有16 kbyte的指令cache和16 kbyte的数据cache,实现了PowerPC的用户指令集系统结构,并提供了硬件和软件调试支持,主频最高可达333/226 MHz。另外,MPC8308提供了2个三速(10110011000)Mbit/s的Ethernet控制器、1个DDR/DDR2 SDRAM存储器控制器、1个灵活的本地总线控制器、1个PCI连接器、5个千兆以太网端口、1个通信I/O端口、2路UART等资源。此控制芯片开发成本低、开发周期短。控制模块和交换芯片连接示意图如图3所示。
图3 交换芯片连接原理图
在具体连接上,MPC8308通过PCIe接口对以太网交换模块的交换芯片BCM56334进行业务配置,通过连接一块1G PHY(BCM5461)芯片实现RGMII到COFFER接口的转换。
系统中以太网数据处理部分主要由以太网交换芯片、数据采集模块两部分构成。以太网交换芯片和物理层芯片分别采用了博通的BCM56334和BCM8705,二者均支持10G的数据传输。BCM56334通过4个1.0G/2.5G/10G/12G/13G栈端口与4块BCM8705相连,实现了物理层数据向MAC层的传输。XFP是一种可热插拔的且独立于通信协议的光学收发器,在系统中主要用于光电转换。连接电路如图4所示。
图4 BCM56334和BCM8705连接图
旁路切换电路主要由MPC8308、WDT和光开关组成。设计中使用微机械光开关从物理上切换光路。光开关选用2×2的单模/多模微机械光开关。光开关支持两路光路同时切换。同时,此光开关具有损耗小、切换寿命长,切换时延小于4 ms等特点。
出于安全性考虑,旁路保护器使用串口在XP系统的超级终端下设置参数。用MPC8308自身的DUART端口配置,来完成RS-232串口设计;出于设备可扩展和管理要求考虑,MPC8308通过对RGMII接口的配置,连接一块物理芯片BCM5461来完成RJ-45网口设计。
光开关将光信号引入旁路保护器内部。控制模块监听防火墙返回的心跳信号,一旦在预先设置的门限值(ms)内未收到返回信号,则发送喂狗信号控制看门狗,看门狗接收到指令后驱动光开关,切换到旁路电路;反之,则说明以太网交换电路和防火墙均工作正常,便将防火墙接入网络并返回心跳包,控制模块同时进行心跳计时并通过判定心跳信号是否超时来进行下一步工作电路判断。旁路保护器在网络中工作指令流程如图5所示。
图5 指令转发流程图
旁路保护器软件功能的实现依赖于嵌入式Linux平台的构建。平台构建流程如图6所示。
图6 软件平台搭建流程
嵌入式系统的开发一般需要交叉编译开发环境[4-6]。主机系统工作在Centos环境下,将飞思卡尔针对开发板提供的嵌入式开发套件BSP源代码包挂载到/opt/freescale目录下。执行./install完成安装,最后生成项目开发所需的交叉编译工具:powerpc-e300c3-linux-gnugcc、powerpc-e300c3-linux-gnu-g++、powerpce300c3-linux-gnu-ar。
移植工作主要针对不同的目标板进行一些配置修改。以MPC8308RDB作为目标板,首先确定目标板上的系统资源映射,在此基础上通过修改配置文件和代码完成U-BOOT的移植,如果移植后无法满足外部设备的一些功能需求,还需要添加一些驱动程序。本平台的地址空间映射如表1所示。
表1 8 Mbyte NOR映射图
在移植过程中,需要对MPC8308ERDB.h文件做一些修改,比如:
设置正确的输入时钟:
#define CONFIG_83XX_CLKIN 33333333/*in Hz*/
#define CONFIG_SYS_CLK_FREQ CONFIG_83XX_CLKIN
设置bootdelay:
#define bootdelay 3
注销CONFIG_VSC7385_ENET,因目标板不包含此交换芯片,否则U-BOOT会一直重启:
由于系统中要挂载JFFS2文件系统,还需对archpowerpcbootdtsmpc8308erdb.dts文件中JFFS2定义部分进行内存大小设置。最后,将编译好的u-boot.bin通过JTAG烧录到Flash中,再通过tftp将内核(uImage)、文件系统(rootf.gz.ext2.u-boot)加载到 Flash 中,完成 U-BOOT 和内核移植工作。
SDK源代码包从博通官网上下载。
1)首先在/opt/share/broadcom目录下解压出SDK源代码。
2)进入sdk -all-5.10.1systemslinuxkernel,建立目录mpc8308,选择合适的目标平台(bmw-2_6),将该平台下的makefile复制到mpc8308目录下,打开/mpc8308下的makefile,找到platform,将bmw-2_6替换为mpc8308。
3)进入 sdk-all-5.10.1make目录,复制当前文件Makefile.linux-bmw -2_6,并重新更名为 Makefile.linuxmpc8308。要顺利向后执行代码,必须先设置环境变量,这里建立一个setenv.sh脚本文件,录入如下代码:
export PATH=MYMPATH:/opt/freescale/usr/local/gcc-4.1.78 - eglibc-2/powerpce300c3-linux-gnu/bin/
export CROSS_COMPILE=powerpc-e300c3-linux-gnu
export PPC_TOOLS_DIR=/opt/freescale/usr/local/gcc-4.1.78 - eglibc-2/powerpc-e300c3-linux-gnu/bin/
export SDK=/opt/share/broadcom/sdk - all-5.10.1
export KERNDIR=/home/ferry/wok/ltib-mpc8308erdb-20100413/rpm/BUILD/-linux
上述变量中,PATH为交叉编译环境的路径,CROSS_COMPILE为编译工具,即U-BOOT移植过程中所生成的交叉编译工具,SDK为sdk安装目录,KERNDIR为U-BOOT源代码所在目录。针对目标芯片,对当前环境做适当修改。注销掉WRS_LINUX_VERSION=2.0,将CFGFLAGS+= -DBCM_PLATFORM_STRING=”BBMW_MPC8245/PPC603e”编译环境变量替换为CFGFLAGS+=-DBCM_PLATFORAM_STRING=”BMW__MPC8308”,ARCH=ppc替换为ARCH=powerpc,最后再将KFLAGS重新设置为目标参考值。
4)执行source setenv.sh,导入脚本文件,进入 sdkall-5.10.1systemslinuxkernelmpc8308 执行 make 命令。编译成功后,在/sdk -all-5.10.1 生成 build 目录,在/build目录下生成7个文件,如表2所示。
最后将用到的模块加载。执行过程如下:
#insmod linux-kernel-bde.ko–f
#insmod linux-bcm-core.ko–f
#./bcm.user.proxy
表2 生成模块列表
经过测试,系统响应时间如表3所示。
表3 响应时间
初始上电后,看门狗的LED呈浅黄色,CPU每隔5 ms发送一次心跳数据包。当被保护设备掉电时,看门狗的LED呈红色,系统自动切换到旁路模式,切换时延小于20 ms。光路切换时延是指心跳包通过内部电路绕过防火墙情况下,从防火墙返回心跳信号到光路切换完成所需要的时间。
经以上分析测试,旁路保护器具有响应快、自动检测、功耗低、可扩展性强等特点,能支持10G单模和多模数据传输,具备很好的实用价值,该旁路保护器已实现产品化,逐步推向市场。
本文创新点:硬件上充分利用了MPC8308高度集成、低功耗的优势,提供了RJ-45和RS-232两个接口,扩展了系统功能,硬件上也采用了双重电路安全设计,对设备自身提供了安全保护功能;在软件上,采用了飞思卡尔提供的LITB开发包以及博通交换芯片SDK源码包,构建了优秀的开发平台,缩短了产品开发的周期。
[1]孙纪坤.嵌入式Linux系统开发技术详解-基于ARM[M].北京:人民邮电出版社,2006.
[2] Freescale Semiconductor Inc.PowerPCMPC8308 referencemanual[EB/OL].[2013-05-25].http://www.ic72.com/pdf/info_2180642.html.
[3]张娟,蒋瑜.基于PowerPC8247的嵌入式Linux系统开发[J].计算机系统应用,2009,18(12):224-227.
[4]梁海军,赵建,陈陆艳.基于msp430单片机的光线旁路保护器的实现[J].微计算机信息,2009,25(11):113-115.
[5]吴聪,谢虎.基于ARM Correx-M3的高速误码测试系统设计[J].电视技术,2013,37(5):196-199.
[6]高晶敏,兰亚柱.Porting U-Boot to the Control Computer Based on MPC8349[J].微计算机信息.2009,9(2):83-85.