新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > VxWorks網絡驅動配置及分析

        VxWorks網絡驅動配置及分析

        作者: 時間:2012-05-10 來源:網絡 收藏

        支持兩種形式的,一種是BSD支持通用的BSD4.4,API,結構等和大多數BSD類似.另一種是END網絡驅動,是獨有的,根據MUX接口編程,不過END驅動在底層也要轉換成BSD的形式.

        本文引用地址:http://www.104case.com/article/149105.htm

        VxWorks網絡驅動可參見VxWorks網絡驅動

        1.BSD4.4網絡驅動設置.

        網絡設備驅動的調用主要在/target/src/config/usrNetwork.c文件中,下面說明BSD4.4驅動在VxWorks系統(tǒng)調用.

        主要調用過程如下:

        VxWorks系統(tǒng)執(zhí)行的第一個任務targetconfigallusrConfig.c文件中usrRoot()=======>>targetsrcconfigusrNetwork.c文件中的usrNetInit

        ()通過數組表netIf[]初始化相應的BSD網卡驅動.

        在usrNetwork.c中的調用過程如下:

        usrNetInit()函數中調用usrNetIfAttach():

        #ifdefINCLUDE_BSD

        if(!attached)

        {

        if((usrNetIfAttach(pNetDev,params.unitNum,pBootString)!=OK))

        return(ERROR);

        attached=TRUE;

        }

        #endif/*INCLUDE_BSD*/

        usrNetIfAttach()函數中調用數組表usrNetIfTbl

        for(pNif=usrNetIfTbl;pNif->ifName!=0;pNif++)

        {

        if(strcmp(buf,pNif->ifName)==0)

        break;

        }

        網絡BSD驅動數組表usrNetIfTbl在文件/target/src/config/usrNetwork.c中的定義初始化:

        ...

        LOCALNETIFnetIf[]=/*網絡接口,定義網卡驅動*/

        {

        /*下面是定義包含的各種網絡驅動*/

        #ifdefINCLUDE_DC/*從DEC芯片啟動,即系統(tǒng)有NVRAM存在,現在已過時*/

        {dc,dcattach,(char*)IO_ADRS_DC,INT_VEC_DC,INT_LVL_DC,

        DC_POOL_ADRS,DC_POOL_SIZE,DC_DATA_WIDTH,DC_RAM_PCI_ADRS,

        DC_MODE},

        #endif/*INCLUDE_DC*/

        #ifdefINCLUDE_FEI/*如果定義了INCLUDE_FEI,初始化Intel網卡*/

        {fei,feiattach,(char*)FEI_POOL_ADRS,0,0,0,0},

        #endif/*INCLUDE_FEI*/

        #ifdefINCLUDE_EX/*Excelan網卡*/

        {ex,exattach,(char*)IO_ADRS_EX,INT_VEC_EX,INT_LVL_EX,

        IO_AM_EX_MASTER,IO_AM_EX},

        #endif/*INCLUDE_EX*/

        #ifdefINCLUDE_ENP/*CMC網卡*/

        {enp,enpattach,(char*)IO_ADRS_ENP,INT_VEC_ENP,INT_LVL_ENP,

        IO_AM_ENP},

        #endif/*INCLUDE_ENP*/

        ...

        }

        設置方法:

        從以上可以看出BSD網絡驅動只需在BSP文件config.h中將網絡(#defineINCLUDE_NETWORK)BSD網卡宏定義(#defineINCLUDE_xxx)和一些I/O參數(一般不需要)加入,則在文件usrNetwork.c中進行相應的初始化.

        如:在VxWorks加入支持intel的網卡驅動.在config.h中加入#defineINCLUDE_FEI.

        主要網卡定義如下:

        #defineINCLUDE_ENE/*includeEagle/NovellNE2000interface*/

        #defineINCLUDE_ELT/*include3COMEtherLinkIIIinterface*/

        #defineINCLUDE_ESMC/*includeSMC91c9xEthernetinterface*/

        #defineINCLUDE_FEI/*includeIntelEtherExpressPRO100BPCI*/

        #defineINCLUDE_ELC/*includeSMCElite16interface*/

        #defineINCLUDE_EEX/*includeINTELEtherExpressinterface*/

        #defineINCLUDE_EEX32/*includeINTELEtherExpressflash32*/

        #defineINCLUDE_EX/*includeExcelanEthernetinterface*/

        #defineINCLUDE_ENP/*includeCMCEthernetinterface*/

        #defineINCLUDE_SM_NET/*includebackplanenetinterface*/

        #defineINCLUDE_SM_SEQ_ADDR/*sharedmemorynetworkautoaddresssetup*/

        #defineINCLUDE_EL_3C90X_END/*3comfastetherLinkXLPCI*/

        #defineINCLUDE_LN_97X_END/*AMD79C972ENDDRIVER*/

        ....

        2.END網絡驅動設置.

        END網絡設備的初始化主要通過定義在文件configNet.h中的一個數組表實現.初始化網絡時muxDevLoad()會按這個表的定義把end初始化安裝到VxWorks系統(tǒng).

        主要調用過程:

        VxWorks系統(tǒng)執(zhí)行的第一個任務targetconfigallusrConfig.c文件中usrRoot()=======>>targetsrcconfigusrNetwork.c文件(該文件初始化TCP/IP)中usrNetInit(BOOT_LINE_ADRS)(該函數作用是添加MUXEND)========>>pcooki=pCookie=muxDevLoad(pDevTbl->unit,.....)其中pDevTbl在BSP網絡文件configNet.h中定義.END_TBL_ENTRYendDevTbl[]={...},該表定義了網絡設備的具體參數.

        configNet.h部分定義如下所示:

        #defineDEC_LOAD_FUNCdec21x40EndLoad/*定義加載網絡設備的入口程序*/

        #defineDEC_BUFF_LOAN1

        /*網絡設備硬件的物理定義數據串,一般BSP已經定義,不到必要時,無需更改*/

        /*

        *:::::::

        *:

        */

        #defineDEC_LOAD_STRING

        0x81020000:0x80000000:0x12:0x12:-1:-1:-1:0:0x80800

        000

        IMPORTEND_OBJ*DEC_LOAD_FUNC(char*,void*);

        /*網絡END設備表*/

        END_TBL_ENTRYendDevTbl[]=

        {0,DEC_LOAD_FUNC,DEC_LOAD_STRING,DEC_BUFF_LOAN,NULL,FALSE},

        {0,END_TBL_END,NULL,0,NULL,FALSE},

        };

        設置方法:

        由以上可看出在VxWorks添加END網絡驅動

        在文件config.h中添加#defineINCLUDE_NETWORK和#defineINCLUDE_END.

        在configNet.h中加入END驅動的入口函數#definexxx_LOAD_FUNCxxxxxEndLoad和一些相關的初始化字符串.


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 闽清县| 铁岭县| 娱乐| 新宁县| 宁国市| 临漳县| 井研县| 奎屯市| 吉安市| 隆安县| 白朗县| 永仁县| 新宾| 奈曼旗| 永和县| 武平县| 大同县| 康乐县| 芦山县| 桓台县| 交城县| 武隆县| 宁化县| 大同市| 长寿区| 桐乡市| 达尔| 镇平县| 陕西省| 龙岩市| 水城县| 壶关县| 金溪县| 天柱县| 四平市| 安溪县| 郸城县| 岑溪市| 岫岩| 宁陕县| 阿拉善盟|