強景,趙多,王紅兵
(西安電子科技大學 電子工程學院,西安 710071)
?
強景,趙多,王紅兵
(西安電子科技大學 電子工程學院,西安 710071)
摘要:網(wǎng)絡(luò)冗余切換熱備份技術(shù)大多與運行有嵌入式操作系統(tǒng)的控制芯片一起工作,該技術(shù)的應(yīng)用有效增強了網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)奈锢砜煽啃?,但是網(wǎng)絡(luò)切換速度一直是這項技術(shù)的瓶頸。本文首先提出通過運行有Linux系統(tǒng)的MPC8377芯片以及外部連接CPLD和2片88E111 PHY芯片完成網(wǎng)絡(luò)冗余切換熱備份的方案,然后依照方案設(shè)計對應(yīng)軟件,最終使得雙網(wǎng)切換時間小于20 ms,極大地改善了現(xiàn)存方案的切換速度,使得網(wǎng)絡(luò)恢復加快、數(shù)據(jù)傳輸更加可靠。
關(guān)鍵詞:雙網(wǎng)切換;網(wǎng)絡(luò)冗余;Linux;MPC8377;88E111;PHY
引言
本文提出在PowerPC架構(gòu)上運行有Linux系統(tǒng)的MPC8377來完成網(wǎng)絡(luò)冗余切換熱備份方案。通過MPC8377的GPIO口控制CPLD來完成MPC8377的MAC與PHY的對應(yīng)連接關(guān)系的切換,進而實現(xiàn)網(wǎng)絡(luò)的重新恢復。本方案最終使得切換時間小于20 ms,極大改善了現(xiàn)有技術(shù)的缺陷和不足。
1網(wǎng)絡(luò)冗余切換簡介
網(wǎng)絡(luò)冗余是工業(yè)網(wǎng)絡(luò)的一項保障策略,目的是減輕意外中斷的風險,通過即時響應(yīng)保證生產(chǎn)連續(xù),從而降低關(guān)鍵數(shù)據(jù)流上任意一點失效所帶來的影響。在冗余網(wǎng)絡(luò)中比較重要的一種雙冗余類型為主備網(wǎng)絡(luò),在正常情況下一般只有主網(wǎng)絡(luò)在工作,一旦發(fā)生意外,主網(wǎng)切換到備用網(wǎng)絡(luò),并發(fā)送故障信號給上位機,在主網(wǎng)絡(luò)得到修整后,主網(wǎng)成為備用網(wǎng)絡(luò)繼續(xù)運行。這種方案的恢復時間一般在200 ms左右,雖然可以用來提供網(wǎng)絡(luò)連接保障,但是恢復時間和切換時間太長一直是該方案的弊端。
2方案總體設(shè)計
2.1硬件介紹
該設(shè)計采用Freescale公司的基于PowerPC架構(gòu)的MPC8377芯片,其外圍接口豐富,可參考實際需求自由刪減,提高了系統(tǒng)開發(fā)的靈活性,同時降低了產(chǎn)品開發(fā)的難度與成本,有效縮短了產(chǎn)品從研發(fā)到投放市場的時間,提高了產(chǎn)品的競爭力,處理器內(nèi)部集成了e300內(nèi)核PCI、PCIE、DDR等控制器,其提供了雙千兆以太網(wǎng)控制器。MPC8377 I/O接口包括10/100/1000 Mbps以太網(wǎng)接口:一個千兆位 RGMII連接到(PHY)88E111,一個5端口 Vitesse Ethernet switch (VSC7385);PCI 和PCI Express插槽:PCI Express連接器,一個Mini PCI 連接器,一個標準PCI 連接器;SATA:兩個USB 2.0,4端口USB Hub,一個串行通信接口。
該設(shè)計使用的PHY為88E1111,88E1111吉比特以太網(wǎng)收發(fā)器是一個物理層器件,用于1000 BASE-T、100 BASE-TX和10 BASE-T類型的以太網(wǎng)。88E1111支持用于直接連接到MAC/Switch接口的吉比特介質(zhì)無關(guān)接口(GMII)、精簡的GMII(RGMII)、串行吉比特介質(zhì)無關(guān)接口(SGMII)、10比特接口(TBI)、精簡的10比特接口(RTBI);集成了一個可選的1.25 GHz的SERDES接口(串行器/解串器);被用于實現(xiàn)1000 BASE-T千兆接口轉(zhuǎn)換器(GBIC)或小型可插拔(SFP)模塊;采用了先進的混合信號進程來均衡執(zhí)行、消除回聲和傳音、數(shù)據(jù)恢復和錯誤校正。該器件運行在高噪聲的環(huán)境中時功耗也非常低。
2.2硬件方案
MPC8377帶有兩路MAC接口,但是為了提高網(wǎng)絡(luò)恢復的速度和切換速度以及實現(xiàn)IP和MAC的唯一綁定,本方案只采用單路MAC。MAC數(shù)據(jù)線與控制線連接CPLD,然后通過CPLD一分二連接兩路PHY完成。為了保證切換正常和快速,采用MPC8377的一路GPIO口連接CPLD作為切換信號。為了保證中斷速度,直接把兩路PHY的中斷信號通過CPLD與門操作連接MPC8377。整個方案連接方式如圖1所示。
3MPC8377的網(wǎng)絡(luò)設(shè)計
為了網(wǎng)絡(luò)連通方便,該方案需要移植Linux系統(tǒng)到
圖1 方案連接方式
MPC8377,為了系統(tǒng)正常啟動,設(shè)計MPC8377為NOR Flash啟動模式,NOR Flash通過燒寫定制的Uboot啟動引導文件、定制的Linux image鏡像文件、dtb文件,以及rootfs文件系統(tǒng)。移植好Linux系統(tǒng)之后,網(wǎng)絡(luò)底層程序可以通過移植網(wǎng)絡(luò)驅(qū)動完成,因此只需通過底層驅(qū)動獲取網(wǎng)絡(luò)診斷信息和向CPLD發(fā)送相應(yīng)切換命令。
3.1Linux系統(tǒng)網(wǎng)絡(luò)診斷
實現(xiàn)網(wǎng)絡(luò)切換程序,需要準確判定網(wǎng)絡(luò)通斷狀態(tài),并及時發(fā)送切換命令。網(wǎng)絡(luò)通斷通過讀取88E111的寄存器1,其為狀態(tài)寄存器。88E111的狀態(tài)寄存器如表1所列。
由此可知,狀態(tài)寄存器有16位,第2位為Link 狀態(tài),第3位為自動協(xié)商,該寄存器在Linux系統(tǒng)啟動結(jié)束后默認值(默認是指網(wǎng)絡(luò)在Linux系統(tǒng)啟動過程中正常)為0x796D。通過讀取分析該狀態(tài)寄存器的第2位即可得到網(wǎng)絡(luò)狀態(tài),即該位為1,表示連接正常,為0表示連接中斷。
Linux用戶空間應(yīng)用程序通過在用戶空間先創(chuàng)建套接字socket(PF_LOCAL, SOCK_DGRAM, 0),再調(diào)用ioctl(sockfd, SIOCGMIIPHY, &ifr)函數(shù),可以獲取PHY地址;通過先調(diào)用(uint16_t)strtoul(‘eth0’ NULL, 0),選定網(wǎng)絡(luò),再調(diào)用ioctl(sockfd, SIOCGMIIREG, &ifr)可以訪問到網(wǎng)絡(luò)連接狀態(tài),最終通過if(mii->val_out&0x0004)來判定網(wǎng)絡(luò)連接狀態(tài)。
3.2GPIO驅(qū)動設(shè)計
Linux系統(tǒng)驅(qū)動分為3類:字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備。本文采用字符驅(qū)動來編寫GPIO驅(qū)動,GPIO模塊的結(jié)構(gòu)圖如圖2所示。
圖2 GPIO模塊的結(jié)構(gòu)圖
驅(qū)動程序通過module_init(GPIO_init)、module_exit(GPIO_exit)分別注冊和注銷GPIO驅(qū)動,在注冊設(shè)備驅(qū)動時初始化SICRL、GPnDIR、GPnODR、GPnDAT寄存器。為了方便驅(qū)動程序所驅(qū)動的設(shè)備在用戶空間打開,在編寫GPIO驅(qū)動時通過class_create(THIS_MODULE, "GPIO")以及device_create(firstdrv_class, NULL, MKDEV(major, 0), NULL, "GPIO")函數(shù)讓系統(tǒng)自動創(chuàng)建設(shè)備節(jié)點。最終通過用戶空間的ioctl函數(shù)改寫GPnDAT來完成切換信號的控制。
Linux系統(tǒng)在上電加載Uboot階段,開始初始化PHY芯片。為了保證在進入Linux系統(tǒng)后,切換到備用PHY后可以直接正常使用,需要更改Uboot啟動初始化程序,在初始化主PHY芯片后,切換信號到備用PHY,再進行一遍PHY初始化。MPC8377帶有串口,Uboot啟動過程中可以通過串口將Uboot啟動信息回送至上位機,Uboot初始化完成后啟動后串口輸出如圖3所示。
圖3 MPC8377 Uboot引導程序初始化主、備PHY
如圖3所示,Net下TSEC1和TSEC2分別對應(yīng)主、備PHY的初始化,在兩次初始化之間,MPC8377控制GPIO引腳,通過CPLD調(diào)整MAC與PHY的連接關(guān)系。
3.3程序自啟動和驅(qū)動加載
為了使得用戶切換程序和驅(qū)動程序能在Linux系統(tǒng)啟動后自動運行,編譯好的用戶程序和驅(qū)動程序都被放置在rootfs文件系統(tǒng)中,并通過壓縮燒寫到NOR Flash中。用戶程序?qū)崿F(xiàn)正常運行必須先啟動GPIO驅(qū)動程序。Linux系統(tǒng)啟動時會自動加載/etc/profile文件,為了自動啟動用戶程序和GPIO驅(qū)動,需要在/ect /profile 文件中添加如下代碼:
ifconfig eth0 192.168.81.238 netmask 255.255.255.0
//更改網(wǎng)卡配置
mkdir /lib/modules/3.0.0//創(chuàng)建節(jié)點,供卸載GPIO驅(qū)動使用
insmod GPIO.ko//安裝GPIO驅(qū)動
./main//啟動用戶程序
4CPLD切換設(shè)計
CPLD連接來自MPC8377的MAC信號,并且將其信號通過一分二給兩路PHY。在Uboot啟動過程中由MPC8377通過GPIO信號發(fā)送給CPLD,從而實現(xiàn)兩路PHY的初始化,在啟動Linux系統(tǒng)后,MPC8377仍然可以通過網(wǎng)絡(luò)狀態(tài)來調(diào)度CPLD連接不同的PHY。
4.1CPLD與PHY的連接
除去MDIO信號之外,CPLD與MAC連接的I/O信號都可以直接進行一分二,最終生成的CPLD模塊略——編者注。
4.2CPLD的MDIO設(shè)計
MAC與PHY連接的MDIO信號屬于雙向I/O信號,不能直接一分二。本文在CPLD中判斷收發(fā)條件來實現(xiàn)控制端口的I/O狀態(tài)切換。
圖4 MDIO讀時序
圖5 MDIO寫時序
MDIO信號協(xié)議讀寫信號時序分別如圖4、圖5所示。MDIO的一分二可以通過CPLD的inout端口來實現(xiàn),對inout端口的控制可以通過分析MDIO的時序來完成。從MDIO讀寫時序(圖4和圖5)可以看到,在起始(Start)信號過后,會有讀寫控制位信號,10為讀,01為寫,通過對這兩位的分析改變inout端口的輸入輸出特性,即在發(fā)現(xiàn)10時,inout在TA階段表現(xiàn)為輸入,在發(fā)現(xiàn)01信號時,在TA階段表現(xiàn)為輸出,進而得到MDIO一分二模塊如圖6所示。
圖6 MDIO一分二模塊
5測試
為了得到切換時間,在網(wǎng)絡(luò)切換前調(diào)用gettimeofday (&tvpre, &tz)獲取當前系統(tǒng)時間,在完成網(wǎng)絡(luò)切換并且網(wǎng)絡(luò)連通后調(diào)用gettimeofday (&tvafter, &tz)再次獲取系統(tǒng)時間,最終計算差值打印出主備切換時間,如圖7所示。
圖7 主備切換時間
通過測試可以看到,從PHY1到PHY2的切換,僅僅在12 ms內(nèi)就可以完成,通過多次測試,雙網(wǎng)的切換時間一直保持小于20 ms。
結(jié)語
本文介紹了MPC8377與CPLD、88E111,通過Linux系統(tǒng)實現(xiàn)雙冗余網(wǎng)絡(luò)切換熱備份方案,介紹了MPC8377字符設(shè)備驅(qū)動的編寫,以及CPLD在處理MDIO信號上的應(yīng)用,最終使得設(shè)計方案可以小于20 ms的切換時間。通過本方案的應(yīng)用可以一定程度上滿足網(wǎng)絡(luò)的可靠性和網(wǎng)絡(luò)恢復的時長要求。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
參考文獻
[1] 胡國鵬,劉利強.VxWorks環(huán)境下雙冗余以太網(wǎng)卡技術(shù)在底層驅(qū)動中的實現(xiàn)[J].應(yīng)用科技,2005(8):43-45.
[2] 劉利強,戴運桃,周衛(wèi)東.基于VxWorks的雙端口網(wǎng)卡智能雙冗余驅(qū)動[J].電子技術(shù)應(yīng)用,2006(7):64-66.
[3] 洪亮,章嘉文,陸亨立.基于FPGA的MDIO接口邏輯設(shè)計[J].微計算機信息,2009,25(5-2):171-172,196.
強景(研究生),研究方向為PowerPC嵌入式系統(tǒng)、電子存儲陣列;趙多(研究生),研究方向為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