摘 要:首先對計算機通信中以太網控制器的雙冗余備份技術進行闡述,然后簡述了BF537及其結構特點,提出了兩種基于Blackfin系列處理器BF537的雙冗余以太網實現方案,并分別介紹了其設計原理、關鍵技術及實現技術,實現了以太網的實時在線檢測和切換,并對切換速度進行了測試。
關鍵詞:以太網; BF537; 冗余; 實時切換
中圖分類號:TN919 文獻標識碼:A
文章編號:1004-373X(2010)11-0111-03
Design and Implementation of Dual-redundant Ethernet Based on BF537
BAO Jing-yuan
(PLA Naval Military Representative Office Stationed in the 701 Institute, Wuhan 430064, China)
Abstract: The dual-redundant backup technology of the Ethernet controller in the computer communication is described, and the BF537 and its structural characteristics is outlined. Two kinds of realization programs based on Blackfin family of processors BF537 are proposed, and its design principle, key technology and implementation techniques are introduced respectively. The real-time online detection and switch of Ethernet are achieved, and the switching speed is tested.
Keywords: Ethernet; BF537; redundancy; real-time switch
0 引 言
隨著信息技術的高速發展,網絡通信也顯得越發重要,以太網也成為了各種控制系統接口互聯的主要媒介。在金融機構、政府部門、軍事應用等特殊應用場合對網絡系統的穩定性要求非常高,為了提高系統的可靠性和抗毀性,常常采用雙冗余的設計方式。雙冗余網絡的實現是以故障檢測為基礎,通過軟件檢查、交換機及網絡節點的網卡協同處理共同完成的。冗余網絡的構建方式通常是在每個網絡節點采用雙網卡,中間用兩個HUB或交換機相連。這樣當某個節點的一塊網卡、網線或者HUB出現故障時,系統會馬上啟用另一塊冗余網卡使得系統仍能夠正常運行。本文基于BF537提出了兩種冗余網絡的構建方案和實現方法。
1 BF537結構特點
BF537是Blackfin家族的升級產品,其在標準Blackfin內核的基礎上擁有更加豐富的接口,并在內部集成了一個以太網MAC控制器。BF537的內部結構如圖1所示。
Blackfin內核包含2 個乘/累加器(MAC),2 個40 位的ALU,4 個視頻專用8位ALU 和1個40 位移位器。運算單元處理來自寄存器組的8 位、16位或者32 位數據。每個MAC 每周期可完成一個16位乘16位的乘法運算,并把結果累加到40位的累加器中,提供8位的精度擴展。ALU單元執行標準的算術和邏輯運算,由于2個ALU具備對16位或32位數據操作的能力,因此運算單元具備的靈活性可以滿足各種應用中信號處理的要求。每個32位的輸入寄存器可以作為2個16位的寄存器,因此每個ALU可以完成非常靈活的單16位算術運算。通過把寄存器當作2個16 位的操作數使用,雙16位或單32位操作可以在1個周期中完成。更好地利用第二個ALU,四個16位操作可以簡單地完成,加速了每個周期的吞吐量。強大的40位移位器功能豐富,可以對數據進行移位、循環移位、歸一化、提取和存儲等操作。運算單元所使用的數據來自具有16個16位操作數或8個32位操作數的寄存器組。
同時BF537把存儲器視為一個統一的4 GB的地址空間,使用32位地址并采用分級的存儲器結構。Level 1(L1)存儲器一般以全速運行,沒有或只有很少的延遲。Level 2(L2)/Level 3(L3)分布在片內或片外,對它的訪問會耗費多個處理器周期。在L1級,指令存儲器只存放指令,2個數據存儲器存放數據,一個專用的臨時數據存儲器存放堆棧和局部變量信息。在L2/L3級可以存放指令和數據。
圖1 BF537內部結構示意圖
2 雙冗余以太網構建方案
從硬件角度看,以太網接口電路主要由MAC控制器和物理層接口(PHY)兩大部分構成,本文從是否具備獨立的MAC控制器出發提出了兩種不同的構建雙冗余以太網的方案。
2.1 基于獨立MAC控制器的設計方案
上文中提到,BF537在內部集成了一個支持IEEE 802.3 MAC控制層協議的MAC控制器,只需要在外部外接一個以太網接口芯片,便可以形成一個完整的以太網通道。因此本文選擇了SMSC公司的LAN8187,它提供了標準的MII總線接口,可以方便地與BF537相連接,連接方式如圖2所示。其中在MII總線上進行數據的收發,MDC和MDIO則用來完成對接口芯片LAN8187寄存器的讀寫。本文在下面稱由BF537的MAC控制器與物理層接口芯片LAN8187構成的以太網通道為主網絡通道。
圖2 冗余網絡構建方案1
如果要求雙冗余網絡通道擁有獨立的MAC控制器,則需在BF537外部擴展一個以太網控制器,見圖2,選擇同樣來自于SMSC公司的LAN91C111,通過BF537的外部總線與之相連。選擇LAN91C111的16位總線工作方式,其A0~A15與BF537的地址總線相連,D0~D15與BF537的數據總線相連,并由BF537的AMS信號控制LAN91C111的片選,外部PF管腳來響應來自LAN91C111的中斷請求。
具有獨立MAC控制器的雙冗余以太網的設計方案如圖2所示。
2.2 基于共用MAC控制器的設計方案
從應用角度分析,即使系統擁有獨立的MAC控制器,在實際應用中也需要要求兩個MAC控制器擁有相同的物理地址,因為若MAC地址不同,冗余切換將引起協議層中ARP綁定表的變化,重新映射ARP表中物理地址和IP地址之間的關系將增加冗余切換的時間,影響到網絡通信實時性。
因此本文提出了一套MAC控制器,兩個以太網接口芯片的方案。該設計方案通過一片CPLD將BF537的MII總線分別轉接到兩片LAN8187上,并由BF537來控制轉接的時機,如圖3所示。這樣形成了兩個以太網通信通道,大大簡化了設計,提高了冗余切換的實時性。
圖3 冗余網絡構建方案2
3 冗余切換軟件設計
3.1 網絡狀態監測
冗余切換的實現首先在于對網絡實時在線監測,本文中檢測的方法基于LAN8187的寄存器。LAN8187寄存器定義如表1所示。其中,Basic Control Register為基本控制寄存器,通過配置其各位,可以完成芯片軟復位、10/100 MHz選擇、全雙工/半雙工選擇、LookBack模式選擇、自協商等功能。Basic Status Register為基本狀態寄存器,對其查詢可以得到自協商結果、網絡物理連接狀態等網絡基本狀態。PHY Identifier 1/ PHY Identifier 2兩個寄存器標識了芯片的Chip ID。因此,對網絡狀態的實時監測實際上就是實時讀取Basic Status Register,并對結果做出判斷。
3.2 程序設計
可以通過操作BF537的寄存器EMAC_STAADD完成其對LAN8187寄存器的讀寫。
表1 LAN8187寄存器定義
REGISTER#REGISTERNAMEGroup
0Basic Control RegisterBasic
1Basic Status RegisterBasic
2PHY Identifier 1Extended
3PHY Identifier 2Extended
4Auto-Negotiation Advertisement RegisterExtended
5Auto-Negotiation Link Partner Ability RegisterExtended
6Auto-Negotiation Expansion RegisterExtended
16Silicon Revision RegisterVendor-specific
17Mode Control/Status RegisterVendor-specific
18Special ModesVendor-specific
20~23ReservedVendor-specific
26Symbol Error Counter RegisterVendor-specific
27Comtrol/Status Indication RegisterVendor-specific
28ReservedVendor-specific
29Interrupt Source RegisterVendor-specific
30Interrupt Mask RegisterVendor-specific
31PHY Special Control/Status RegisterVendor-specific
對LAN8187寄存器讀寫的函數定義為:
u16 RdPHYReg(u16 PHYAddr, u16 RegAddr);
void WrPHYReg(u16 PHYAddr, u16 RegAddr, u32 Data);
其中PHYAddr為芯片的物理地址,RegAddr為寄存器地址。
對Basic Status Register的監測采用輪詢的機制,即設定一個信號量Link_status,其周期為2 ms,因此每隔2 ms,Ether_moniter線程被觸發一次。在Ether_moniter中通過調用RdPHYReg()函數,讀取Basic Status Register的值,并判斷Link位。Ether_moniter線程流程圖如圖4所示。
對于設計方案1來講,當檢測到需要進行網絡切換時,需要停用當前網卡初始化備用網絡LAN91C111并設定相同的IP地址以及MAC地址。對于方案2,則只需要通知CPLD將通道切換至備用的LAN8187接口。
4 冗余切換測試
用Visual C++6.0開發簡單的上位機測試程序,每隔1 ms發送一個UDP數據報,并給每個數據報編寫不同的序號。在BF537中編寫程序不斷接收上位機發來的數據報。然后制造網絡通信故障,本文構建的冗余網絡將會自動切換到備用通道繼續接收上位機的數據報。最后通過檢測接收到數據報的序號來確定冗余切換所消耗的時間。分別對兩種方案所構建的冗余網絡的切換進行測試,結果如表2所示。
圖4 網絡狀態監測流程圖
表2 冗余切換測試結果
方案平均丟包數平均切換時間 /ms
方案11 2001 200
方案233
從實驗結果可以看出方案2具有快速切換的優點,丟包率低;方案1平均丟包數遠大于方案2,并且切換時間長。
5 結 語
提出了兩種基于BF537構建雙冗余以太網的方案,分別論述了其原理、器件選擇、連接方法,并做出軟件設計。最后經過測試,方案2的切換效果和時間非常理想,最終在實際項目中得到了應用。
參考文獻
[1]謝希仁.計算機網絡\\.4版.北京:電子工業出版社,2006.
[2]W Richard Stevens.TCP/IP詳解卷1:協議\\.北京:機械工業出版社,2000.
[3]陳堅,陳偉.Visual C++網絡高級編程\\.北京:人民郵電出版社,2001.
[4]Analog Devices.ADSP-BF537 Blackfin Processor Hardware Reference. Preliminary Revision 0.3\\. Analog Devices,Inc., 2005.
[5]IEEE. IEEE Std 802.3[EB/OL]. \\. www.IEEE.com, 2002.
[6]毛曉明,吳玉國.基于嵌入式技術和CAN總線的車輛配電系統\\.現代電子技術,2009,32(7):144-146,150.