伍召學,黃 俊,謝 虎
(重慶郵電大學信號處理與片上系統實驗室,重慶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.