1. gzyueqian
      18529173453
      首頁 > 新聞中心 > > 正文

      VxWorks網絡驅動配置及分析

      更新時間: 2007-06-08 11:13:21來源: 粵嵌教育瀏覽量:884

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

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

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

        主要調用過程如下:

         VxWorks系統執行的個任務targetconfigallusrConfig.c文件中 usrRoot()=======>>targetsrcconfigusrNetwork.c文件中的usrNetInit ( )通過數組表netIf[]初始化相應的BSD網卡驅動.

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

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

        #ifdef INCLUDE_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中的定義初始化:

        ...
        LOCAL NETIF netIf [] =    /* 網絡接口,定義網卡驅動 */
        {
        /* 下面是定義包含的各種網絡驅動 */
        #ifdef INCLUDE_DC        /* 從DEC 芯片啟動,即系統有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 */
        #ifdef    INCLUDE_FEI       /* 如果定義了INCLUDE_FEI,初始化Intel 網卡 */
        {   "fei", feiattach, (char*)FEI_POOL_ADRS, 0, 0, 0, 0},
        #endif    /* INCLUDE_FEI */
        #ifdef    INCLUDE_EX        /* Excelan 網卡 */
        {   "ex", exattach, (char*)IO_ADRS_EX, INT_VEC_EX, INT_LVL_EX,
            IO_AM_EX_MASTER, IO_AM_EX },
        #endif    /* INCLUDE_EX */
        #ifdef    INCLUDE_ENP        /* CMC 網卡 */
        {   "enp", enpattach, (char*)IO_ADRS_ENP, INT_VEC_ENP, INT_LVL_ENP,
            IO_AM_ENP },
        #endif    /* INCLUDE_ENP */
        
        ...

        }

        設置方法: 

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

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

        主要網卡定義如下:

        #define    INCLUDE_ENE        /* include Eagle/Novell NE2000 interface */
        #define    INCLUDE_ELT        /* include 3COM EtherLink III interface */
        #define    INCLUDE_ESMC        /* include SMC 91c9x Ethernet interface */
        #define    INCLUDE_FEI        /* include Intel Ether Express PRO100B PCI */
        #define    INCLUDE_ELC        /* include SMC Elite16 interface */
        #define    INCLUDE_EEX        /* include INTEL EtherExpress interface */
        #define    INCLUDE_EEX32        /* include INTEL EtherExpress flash 32 */
        #define    INCLUDE_EX        /* include Excelan Ethernet interface */
        #define    INCLUDE_ENP        /* include CMC Ethernet interface*/
        #define    INCLUDE_SM_NET        /* include backplane net interface */
        #define    INCLUDE_SM_SEQ_ADDR  /* shared memory network auto address setup */
        #define    INCLUDE_EL_3C90X_END /* 3com fast etherLink XL PCI */
        #define   INCLUDE_LN_97X_END /* AMD 79C972 END DRIVER */
        ....

        2.END網絡驅動設置.

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

        主要調用過程:

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

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

        #define DEC_LOAD_FUNC dec21x40EndLoad   /* 定義加載網絡設備的入口程序 */
        #define DEC_BUFF_LOAN 1

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

        /*
        * <devAdrs>:<PCIadrs>:<ivec>:<ilevel>:<numRds>:<numTds>:<memBase>:
        * <memSize>:<userFlags>
        */
        # define DEC_LOAD_STRING
        "0x81020000:0x80000000:0x12:0x12:-1:-1:-1:0:0x80800
        000"
        IMPORT END_OBJ* DEC_LOAD_FUNC (char*, void*);

        /* 網絡END設備表 */

        END_TBL_ENTRY endDevTbl [] =
        { 0, DEC_LOAD_FUNC, DEC_LOAD_STRING, DEC_BUFF_LOAN, NULL, FALSE},
        { 0, END_TBL_END, NULL, 0, NULL, FALSE},
        };

        設置方法:

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

        在文件config.h中添加"#define INCLUDE_NETWORK"和"#define INCLUDE_END". 在configNet.h中加入END驅動的入口函數"#define xxx_LOAD_FUNC  xxxxxEndLoad"和一些相關的初始化字符串. 這樣就會在生成BSP包含END/MUX,系統網絡初始化調用函數muxDevLoad()會更據這個表初始化END網絡.

        文件configNet.c關于END驅動初始化的主要內容:

        #ifdef INCLUDE_END
           IMPORT int     ipAttach ();
           IMPORT END_TBL_ENTRY endDevTbl[];    /* 定義這個表 */
        #endif /* INCLUDE_END */

        ..........

        #ifdef INCLUDE_END                
           int count;
           END_TBL_ENTRY* pDevTbl;             /* END設備列表 */
           END_OBJ* pCookie = NULL;
           END_OBJ* pEnd;
        #endif /* INCLUDE_END */

        #if defined(INCLUDE_END)
           muxMaxBinds = MUX_MAX_BINDS;        /* 初始化MUX接口 */
           if (muxLibInit() == ERROR)

        ..........

        關于DEFAULT_BOOT_LINE 的解釋

        這一行對配置網絡,連通Target Server及下載調試程序非常重要。DEFAULT_BOOT_LINE 的原意是為沒有NVRAM的target設計的,這樣用戶就不需要在每次系統啟動是手工輸入這些參數了.系統啟動網絡時xxxEndLoad()會解釋這一行并按這一行的定義進行加載.Emac(0,0) : 啟動設備,可是是軟盤,硬盤,PCMCIA卡等 其他的設備名稱如:

        fd為軟盤,(0,0)表示個軟驅,3.5寸盤.
        dc則表示從DEC 21x4x 芯片啟動,即系統有NVRAM存在,這種方式現在已不采用.
        elpci表示啟動設備為3COM EtherLink XL PCI網卡.
        fei:Intel 82559 EtherExpress網卡.
        ene: NE2000網卡
        ELT: 3COM以太網卡
        EEX: Intel網卡
        ata: ATA/IDE 硬盤 ............

        405GP: 主機名
        vXworks 從主機加載的VxWorks文件
        h=172.16.1.159   主機的IP地址    

        e=172.16.254.52 目標機的IP地址,若網絡啟動Target Server時,這個IP必須和主機上Target Server配置的Target IP地址一致,且設置Back End選項為wdbrpc
        u=xxx  用戶名,pw=xxx  密碼: 若通過網絡加載調試時,主機的Ftp服務器和目標機的用戶名和密碼必須相同
        tn=vxTarget 目標機名稱

        */

        #define DEFAULT_BOOT_LINE
                "Emac(0,0)405GP:vxWorks h=172.16.1.159 e=172.16.254.52
                        u=xxx pw=xxx tn=vxTarget"

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 午夜日本永久乱码免费播放片 | 野狼第一区精品aⅴ | 亚洲人成站在线 | 日本三级在线播放线观看视频 | 色资源站欧美在线 | 一区二区三区高清视频精品 |