新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于VxWorks的雙端口網卡智能雙冗余驅動

        基于VxWorks的雙端口網卡智能雙冗余驅動

        作者: 時間:2013-10-26 來源:網絡 收藏
        隨著網絡技術的成熟,具有價格低廉、連接方便等優點的以太網已成為各種控制系統接口互連的主要媒介。它作為一種通用網絡數據通信系統,在全球計算機網絡領域已經得到了廣泛的應用。隨著現代艦船信息化程度的不斷提高,以太網技術也開始應用于現代艦船信息系統中,不但要求信息傳輸速度快,抗干擾能力強,還要求網絡具有高穩定性和高可靠性,在網絡局部故障或受損時,全系統不至于癱瘓失效。

        冗余設計作為一種提高系統可靠性的有效方法,已經得到了廣泛的應用。對于網絡系統中的單個節點,常常需要對網卡進行雙冗余備份,即每個節點都采用兩個網絡接口,中間用兩個集線器或交換機互連,當正常通信的網卡或線路出現故障時該節點能自動地切換到備份網卡進行通信。

        目前大多數操作系統(如Windows、Unix、Linux等)都支持多網卡,但均非冗余設計,每塊網卡都有獨立的物理地址和IP地址,以獨立的形式供應用系統使用。要實現真正的智能雙冗余網絡系統,必須自行設計專用的網絡驅動程序,以透明的形式提交高層應用系統使用,使系統感覺不到雙網卡的存在。本文使用盛博公司結構SCM/DETH型10M,設計實現了基于的智能雙冗余網絡驅動。

        1 系統網絡驅動原理

        1.1 系統簡介

        VxWorks操作系統是美國風河公司(Wind River System)推出的一款運行在目標機上的高性能、可裁減的嵌入式強實時操作系統。操作系統包括了進程管理、存儲管理、設備管理、文件系統管理、網絡協議及系統應用等幾個部分,只占用了很小的存儲空間,并可高度裁減,保證了系統能以較高的效率運行。它以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中。

        VxWorks主要有以下特點:
        (1)具有高度可剪裁的操作系統微內核Wind;
        (2)具有比較優秀的網絡處理能力,適用于多種物理介質的TCP/IP協議族支持;
        (3)具有極其豐富的BSP,支持多處理器系統,最多可以支持20個CPU;
        (4)具有友好的開發調試環境,便于操作、配置和應用程序的開發調試;
        (5)具有較好的兼容性,支持POSIX1003.1b;
        (6)支持多種開發和運行環境。支持C語言、C++語言以及JAVA虛擬機。

        1.2 VxWorks系統網絡驅動原理

        VxWorks中支持兩種類型的網絡設備驅動程序——BSD4.3網絡驅動程序和可裁減的增強型網絡堆棧SENS(Scalable Enhanced Networks Stack)。BSD4.3標準提供了網絡設備驅動程序與IP協議的緊密結合,而SENS協議棧提供了可替換的網絡設備驅動程序,即增強型網絡驅動程序END(Enhanced Networks Driver)。

        SENS模型包含三個部分:協議驅動程序、多元接口層(MUX)和END型網絡驅動。它獨立于硬件設備接口,將網絡設備驅動程序細化,使開發者可以專注于驅動程序(END驅動)本身的開發。本文設計實現的智能雙冗余驅動即是一個符合SENS模型標準的END型網絡驅動。在END型網絡驅動中主要實現網卡設備的裝載,網絡芯片的初始化,網絡報文接收及發送等功能。在系統啟動后,操作系統通過網卡加載函數調用到END型網絡驅動,在加載過程中完成網絡芯片的初始化、內存池的分配、網卡設備控制結構的填寫等操作,最后通過指針傳遞的方式將網卡設備控制結構和13個網卡操縱函數提交給MUX層,供上層系統操作網卡工作時使用。

        2 智能雙冗余驅動程序實現

        2.1 智能雙冗余驅動實現原理

        智能雙冗余驅動的實現原理如圖1所示,虛線框內為智能雙冗余驅動。在VxWorks系統啟動時,首先要遍歷配置文件confignet.h中的網卡設備表endDevTbl[ ],設備表中包含雙端口網卡上兩個網卡的地址及中斷等配置參數;然后,系統會調用sysDethEnd.c中的sysDethEndLoad(…)函數,將兩個網卡的配置參數以函數入口參數的形式傳遞給智能雙冗余驅動的裝載函數dethEndLoad(…);裝載函數為每個網卡設備創建一個控制結構,對入口配置參數進行解析,并為每個網卡設備分配一塊內存空間,用系統的配置要求初始化兩個網卡,同時填寫好網卡設備的控制結構;最后,智能雙冗余驅動將主通道網卡設備的控制結構指針提交給MUX層,并發起網絡故障診斷定時器任務和網絡故障診斷任務。

        網絡故障診斷定時器任務配合網絡故障診斷任務執行,使用看門狗定時器Watchdog timer完成1ms定時,每定時1次釋放1次二進制信號量sem_netDiagnose;網絡故障診斷任務循環等待接收信號量sem_netDiagnose,取到信號量后立即判斷主通道網卡設備的端口狀態(連接/非連接),當端口處于連接狀態時,任務循環等待下次信號量,當端口處于非連接狀態時,網絡故障診斷任務交換主通道與備用通道的控制結構內容,備用通道網卡設備變為主通道網卡設備開始工作,但對于上層應用來說,網卡的控制結構并沒有改變。

        2.2 網卡設備控制結構

        在智能雙冗余網卡驅動中使用一個控制數據結構控制一塊網卡設備,控制結構中包含網卡的中斷向量、I/O基址、總線類型、介質類型、物理地址等特性信息。這些信息有的在網卡設備表endDevTbl[ ]中,在系統啟動過程中作為驅動裝載函數的參數傳遞到驅動中;有的保存在網卡的PROM中,在網卡驅動程序初始化時,將這些特性參數寫入網卡控制結構。

        c++相關文章:c++教程



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安多县| 大姚县| 永和县| 上蔡县| 宁南县| 中牟县| 尼勒克县| 昆明市| 磐安县| 剑川县| 丰原市| 汾西县| 阿拉善右旗| 长宁县| 洛扎县| 崇州市| 修武县| 霍山县| 明水县| 舟曲县| 革吉县| 浠水县| 德清县| 博野县| 马尔康县| 樟树市| 吴桥县| 项城市| 堆龙德庆县| 蒙山县| 元朗区| 巫溪县| 高雄市| 临颍县| 麟游县| 环江| 搜索| 铁岭县| 东乌珠穆沁旗| 洛扎县| 贡觉县|