<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于VxWorks的雙端口網(wǎng)卡智能雙冗余驅動(dòng)

基于VxWorks的雙端口網(wǎng)卡智能雙冗余驅動(dòng)

作者: 時(shí)間:2013-10-26 來(lái)源:網(wǎng)絡(luò ) 收藏


智能雙冗余網(wǎng)卡驅動(dòng)中定義了一個(gè)控制單網(wǎng)卡設備的控制結構,如下所示:
typedef struct ne2000_device
{
……
int    unit;       /*網(wǎng)卡單元號*/
int    ilevel;      /*中斷優(yōu)先級*/
int    byteAccess;    /*字節存儲模式*/
ULONG   base;       /*基地址*/
int    offset;      /*內存對齊偏移量*/
volatile ULONG  imask;   /*中斷屏蔽碼*/
UCHAR   enetAddr[6];   /*網(wǎng)卡物理地址*/
……
} DETHEND_DEVICE;

驅動(dòng)中創(chuàng )建了兩個(gè)網(wǎng)卡設備控制結構分別控制兩塊網(wǎng)卡。上層應用通過(guò)操作網(wǎng)卡控制結構從而實(shí)現對網(wǎng)卡的各種操作。

2.3 網(wǎng)絡(luò )通信故障診斷方法

要實(shí)現網(wǎng)絡(luò )端口的智能切換,實(shí)現網(wǎng)卡間冗余備份的功能,首要前提就是需要診斷出當前工作的網(wǎng)卡是否網(wǎng)絡(luò )通信故障。任何一種網(wǎng)絡(luò )芯片都提供連接狀態(tài)自動(dòng)診斷功能,通過(guò)在網(wǎng)絡(luò )芯片的某個(gè)寄存器的相應位置0或置1來(lái)表示該網(wǎng)卡連接正常還是連接錯誤。它所檢測的依據是網(wǎng)卡是否連通,也就是從本機網(wǎng)絡(luò )端口到網(wǎng)線(xiàn)另一端的網(wǎng)絡(luò )端口整個(gè)通路是否連通,它能檢測出網(wǎng)線(xiàn)斷開(kāi)、網(wǎng)絡(luò )接口松動(dòng)及故障等錯誤。

本文使用的SEM/DETH采用兩塊RTL8019AS網(wǎng)絡(luò )芯片,該網(wǎng)絡(luò )芯片的寄存器組采用分頁(yè)存儲方式,共分為4頁(yè),都映射到16個(gè)I/O地址空間上。其中,第3頁(yè)CONFIG0寄存器的B2位表示網(wǎng)卡連接狀態(tài)自動(dòng)診斷結果,當該位為1時(shí)表示連接錯誤,為0時(shí)表示連接正常。智能雙冗余驅動(dòng)的網(wǎng)絡(luò )故障診斷任務(wù)判斷網(wǎng)卡連接狀態(tài)的代碼如下:

setting=sysInByte(pDrvCtrl->base); /*讀取命令寄存器狀態(tài)*/
sysOutByte(pDrvCtrl->base,(0xc0|setting));/*選擇第3頁(yè)寄存器組*/
if(sysInByte(pDrvCtrl->base+CONFIG0_REG) 0x04)/*網(wǎng)絡(luò )連接錯誤*/
{ …… }

2.4 單物理地址實(shí)現

要使兩塊網(wǎng)卡實(shí)現智能雙冗余備份,它們必須有相同的物理地址和IP地址。否則,當由其中一個(gè)網(wǎng)卡切換到另一個(gè)網(wǎng)卡上時(shí),如果IP地址發(fā)生變化,系統將無(wú)法正常接收、發(fā)送數據;如果IP地址不發(fā)生變化而僅僅物理地址發(fā)生變化,雖然網(wǎng)卡切換后,系統仍可以正常接收、發(fā)送數據,但由于物理地址發(fā)生變化,將引起協(xié)議棧中ARP綁定表的變化,重新對應ARP綁定表中IP地址與網(wǎng)卡物理地址的關(guān)系,則延長(cháng)了兩個(gè)網(wǎng)卡之間的切換時(shí)間。

系統的IP地址存在于系統的網(wǎng)絡(luò )協(xié)議棧中,在系統啟動(dòng)后與網(wǎng)卡進(jìn)行綁定。由于本文設計實(shí)現的智能雙冗余驅動(dòng)對于應用系統和協(xié)議棧來(lái)說(shuō)呈現單網(wǎng)卡的特征,網(wǎng)卡之間的切換只在驅動(dòng)程序中完成,所以,當發(fā)生網(wǎng)卡切換時(shí),系統的IP地址并不發(fā)生變化。

對于網(wǎng)卡的物理地址來(lái)說(shuō),通常每塊網(wǎng)卡有一個(gè)全世界范圍內惟一的物理地址,它保存在網(wǎng)卡的PROM中。網(wǎng)卡初始化時(shí),要從PROM中讀出物理地址,把它存放在適當的寄存器和數據結構中,對外來(lái)說(shuō),寄存器和數據結構中的數值就是這塊網(wǎng)卡的物理地址。在智能雙冗余驅動(dòng)程序中,當驅動(dòng)程序初始化時(shí)只讀取一塊網(wǎng)卡PROM中的物理地址,然后把這個(gè)地址寫(xiě)入兩塊網(wǎng)卡的對應物理地址寄存器和數據結構變量pDrvCtrl中,這樣,兩塊網(wǎng)卡對外就具有統一的物理地址了。因為驅動(dòng)程序自始至終只有一塊網(wǎng)卡處于激活狀態(tài),另一塊作為備份,因此不會(huì )發(fā)生同一個(gè)網(wǎng)絡(luò )上兩個(gè)物理地址相同出現沖突這種現象。

3 性能測試

3.1 測試方法

針對本文設計、實(shí)現的雙端口網(wǎng)卡智能雙冗余驅動(dòng)進(jìn)行性能測試。將智能雙冗余驅動(dòng)編譯到操作系統中,使用帶有SEM/DETH的計算機做目標機,使用兩根網(wǎng)線(xiàn)把目標機連接到交換機上。目標機應用程序以40次/秒的速率向外發(fā)送UDP廣播報文。采用普通PC機作為主機系統,運行Windows2000操作系統,使用sniffer Pro工具進(jìn)行網(wǎng)絡(luò )監控。

3.2 測試結果及分析

測試結果如圖2所示,橫坐標代表報文數,縱坐標代表主機接收到的目標機UDP廣播報文中兩個(gè)連續UDP報文之間的間隔時(shí)間(單位為秒)。由圖2可以看到,由于目標機正常工作狀態(tài)下是以40次/秒的速率廣播發(fā)送UDP網(wǎng)絡(luò )報文的,所以每?jì)蓚€(gè)報文之間的時(shí)間間隔大部分為25ms左右。在圖2中出現了8次主機接收到的廣播報文時(shí)間間隔為100ms左右的情況,這是由于在目標機端進(jìn)行了8次網(wǎng)卡切換,在網(wǎng)卡切換過(guò)程中出現了報文丟失現象。

由測試結果看,本文設計實(shí)現的智能雙冗余驅動(dòng)能夠很好地實(shí)現雙端口網(wǎng)卡冗余備份的功能,在檢測到主通道網(wǎng)卡設備連接錯誤時(shí)可以切換到備用通道繼續進(jìn)行網(wǎng)絡(luò )通信,并且可以在兩塊網(wǎng)卡之間循環(huán)切換;同時(shí),該驅動(dòng)對上層用戶(hù)透明,呈現單網(wǎng)卡的特性,完全在驅動(dòng)中實(shí)現網(wǎng)卡間的冗余備份。

本文設計實(shí)現了一個(gè)基于的雙端口網(wǎng)卡智能雙冗余驅動(dòng),在驅動(dòng)中實(shí)現了網(wǎng)絡(luò )通信故障診斷和網(wǎng)卡間智能切換功能,對上層應用呈現單網(wǎng)卡特性。通過(guò)對設計實(shí)現的智能雙冗余驅動(dòng)進(jìn)行性能測試,驗證了設計的正確性和有效性,但通過(guò)測試結果也可以看到,在網(wǎng)卡切換過(guò)程中還存在切換時(shí)間較長(cháng)的問(wèn)題,有待進(jìn)一步研究。

c++相關(guān)文章:c++教程



上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>