现在的位置: 首页 > 综合 > 正文

VxWorks Torando2.2 RTL81X9网卡驱动添加过程

2013年09月05日 ⁄ 综合 ⁄ 共 5062字 ⁄ 字号 评论关闭

Step 1.

下载RTL81X9驱动源代码。

Step 2.

复制一个BSP包,并且修改名称,例如,我复制了一个PC486BSP包,改名为i486bsp,如图所示:

Step 3.

修改复制的BSP里面的Makefile文件,修改文件内容的如下:

TARGET_DIR = i486bsp

MACH_EXTRA         =rtl81x9.o ;添加rtl81x9.o到系统中

Step 4.

复制RTL81X9的驱动代码rtl81x9.h、 rtl81x9.c、sysRtl81x9End.c文件到你的bsp包中。

Step 5.

修改BSP包中的Config.h文件。在文件如下部分添加黄色标记的内容

#define INCLUDE_PCI 

 

/* Network driver options */

 

#define INCLUDE_END             /* Enhanced Network Driver Support */

 

#undef  INCLUDE_DEC21X40_END    /* (END) DEC 21x4x PCI interface */

#undef  INCLUDE_EL_3C90X_END    /* (END) 3Com Fast EtherLink XL PCI */

#undef  INCLUDE_ELT_3C509_END   /* (END) 3Com EtherLink III interface */

#undef  INCLUDE_ENE_END         /* (END) Eagle/Novell NE2000 interface */

#undef  INCLUDE_FEI_END         /* (END) Intel 8255[7/8/9] PCI interface */

#undef INCLUDE_GEI8254X_END    /* (END) Intel 82543/82544 PCI interface */

#undef  INCLUDE_LN_97X_END      /* (END) AMD 79C97x PCI interface */

#undef  INCLUDE_ULTRA_END       /* (END) SMC Elite16 Ultra interface */

#define INCLUDE_RTL_81X9_END

Step 6.

修改ConfigNet.h文件,在文件如下部分添加黄色标记的部分添加:

/* Intel 82543/82544 PCI (gei) driver defines */

 

#ifdef INCLUDE_GEI8254X_END

 

#define GEI8254X_LOAD_FUNC    sysGei8254xEndLoad

#define GEI8254X_BUFF_LOAN    TRUE

#define GEI8254X_LOAD_STR     ""

 

IMPORT END_OBJ * GEI8254X_LOAD_FUNC (char *, void *);

 

#endif /* INCLUDE_GEI8254X_END */

 

#ifdef INCLUDE_RTL_81X9_END

 

#define RTL_81X9_LOAD_FUNC        sysRtl81x9EndLoad

#define RTL_81X9_LOAD_LOAN        TRUE

#define RTL_81X9_LOAD_STRING      ""

 

IMPORT END_OBJ * RTL_81X9_LOAD_FUNC (char *, void *);

  

#endif /* INCLUDE_RTL_81X9_END */

 

END_TBL_ENTRY endDevTbl [] =

    {

#ifdef INCLUDE_EL_3C90X_END

    {0, EL_3C90X_LOAD_FUNC, EL_3C90X_LOAD_STR, EL_3C90X_BUFF_LOAN,

    NULL, FALSE},

#endif /* INCLUDE_EL_3C90X_END */

 

#ifdef INCLUDE_LN_97X_END

    {0, LN_97X_LOAD_FUNC, LN_97X_LOAD_STR, LN_97X_BUFF_LOAN,

    NULL, FALSE},

#endif /* INCLUDE_LN_97X_END */

 

#ifdef INCLUDE_FEI_END

    {0, FEI82557_LOAD_FUNC, FEI82557_LOAD_STRING, FEI82557_BUFF_LOAN,

    NULL, FALSE},

#endif /* INCLUDE_FEI_END */

 

#ifdef INCLUDE_DEC21X40_END

    {0, END_DC_LOAD_FUNC, END_DC_LOAD_STRING, END_DC_BUFF_LOAN,

    NULL, FALSE},

#endif /* INCLUDE_DEC21X40_END */

 

#ifdef INCLUDE_ELT_3C509_END

    {0, END_3C509_LOAD_FUNC, END_3C509_LOAD_STRING, END_3C509_BUFF_LOAN,

    NULL, FALSE},

#endif /* INCLUDE_ELT_3C509_END */

 

#ifdef INCLUDE_ULTRA_END

    {0, END_ULTRA_LOAD_FUNC, END_ULTRA_LOAD_STRING, END_ULTRA_BUFF_LOAN,

    NULL, FALSE},

#endif /* INCLUDE_ULTRA_END */

 

#ifdef INCLUDE_ENE_END

    {0, END_ENE_LOAD_FUNC, END_ENE_LOAD_STRING, END_ENE_BUFF_LOAN,

    NULL, FALSE},

#endif /* INCLUDE_ENE_END */

 

#ifdef INCLUDE_GEI8254X_END

    {0, GEI8254X_LOAD_FUNC, GEI8254X_LOAD_STR, GEI8254X_BUFF_LOAN,

    NULL, FALSE},

#endif /* INCLUDE_GEI8254X_END */

 

#ifdef INCLUDE_RTL_81X9_END

    {0, RTL_81X9_LOAD_FUNC, RTL_81X9_LOAD_STRING, RTL_81X9_LOAD_LOAN,

    NULL, FALSE},

#endif /* INCLUDE_RTL_81X9_END */

 

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

};

Step 7.

最后,修改sysLib.c文件,在文件中如下部分中添加黄色标示的部分:

/* imports */

 

IMPORT char        end;                       /* linker defined end-of-image */

IMPORT GDT         sysGdt[];                  /* the global descriptor table */

IMPORT void        elcdetach (int unit);

IMPORT VOIDFUNCPTR intEoiGet;                 /* BOI/EOI function pointer */

IMPORT void        intEnt (void);

IMPORT int         sysCpuProbe (void);        /* set a type of CPU family */

IMPORT VOID        sysUsbOhciPciInit (void);  /* USB OHCI Init */

 

 

/* include rtl81x9End driver support routines */

#ifdef INCLUDE_RTL_81X9_END

IMPORT STATUS sysRtl81x9PciInit (void);

#endif /* INCLUDE_RTL_81X9_END */

 

#ifdef INCLUDE_PCI                     /* BSP PCI bus & config support */

#   include "pciCfgStub.c"              /* customize pciConfigLib for BSP */

#   include "pci/pciConfigLib.c"

#   include "pciCfgIntStub.c"           /* customize pciIntLib for BSP */

#   include "pci/pciIntLib.c"

#   if (defined(INCLUDE_PCI_CFGSHOW) && !defined(PRJ_BUILD))

#      include "pci/pciConfigShow.c"

#   endif /* (defined(INCLUDE_PCI_CFGSHOW) && !defined(PRJ_BUILD)) */

#if (PCI_CFG_TYPE == PCI_CFG_AUTO)

#   include "pci/pciAutoConfigLib.c"

#   include "sysBusPci.c"

#endif /* (PCI_CFG_TYPE == PCI_CFG_AUTO) */

#endif /* INCLUDE_PCI */

 

#ifdef INCLUDE_PCMCIA

#   include "pcmcia/pccardLib.c"

#   include "pcmcia/pccardShow.c"

#endif /* INCLUDE_PCMCIA */

 

#ifdef  INCLUDE_NETWORK

#   include "sysNet.c"                  /* network driver support */

#endif  /* INCLUDE_NETWORK */

 

#ifdef INCLUDE_RTL_81X9_END

#include "sysRtl81x9End.c"

#endif /* INCLUDE_RTL_81X9_END */

 

#ifdef  INCLUDE_PCI

 

    pciConfigLibInit (PCI_MECHANISM_1, PCI_CONFIG_ADDR, PCI_CONFIG_DATA, NONE);

    sysPciIntInit (); /* it does pciIntLibInit() */

 

#ifdef INCLUDE_RTL_81X9_END

    sysRtl81x9PciInit ();

#endif /* INCLUDE_RTL_81X9_END */

 

#endif /* INCLUDE_PCI */

 

    /* initialize the PIC (Programmable Interrupt Controller) */

 

    sysIntInitPIC (); /* should be after the PCI init for IOAPIC */

    intEoiGet = sysIntEoiGet; /* function pointer used in intConnect () */

 

    /* initialize PCI devices */

 

#ifdef  INCLUDE_PCI

 

到此,RTL81X9的驱动程序就添加到你的BSP中去了。

抱歉!评论已关闭.