vxworks5.5.1移植rtl8139驱动和配置网络启动调试环境

船里的河 船里的河     2022-08-24     426

关键词:

  1. 运行平台

主机操作系统:Windows XP

开发环境: Tornado 2.2.1

目标机CPU:英特尔 ATOM D2550

  1. 相关知识介绍

VxWorks系统支持两种形式的网络驱动:一种是标准的BSD驱动,支持通用的BSD4.4网络API结构等和大多所BSD网络驱动类似,将网络驱动协议层与硬件驱动联系在一起;另外一种是END网络驱动,是VxWorks独有的,简称增强型网络模型(可裁剪的增强型网络堆栈,SENS-Scalable Enhanced Networks Stack)。

    END型驱动程序由BSP部分和驱动程序功能实现部分组成。指定END设备与其他类型的设备驱动方式不同,网络设备驱动程序的安装是可以通过修改BSP实现的。

图1.1 VxWorks网络结构图

图1.2MUX和END接口调用关系

 

END设备驱动程序的装载过程:1.指定END设备;2.装载END设备;3.启动END设备;


图1.3 网络初始化流程

  1. 驱动程序的移植
    1. 获取驱动源码

      RTL8139D是中国台湾瑞昱公司的100/10M自适应网卡芯片,可在官网下载到支持Tornado 2.0 X86 版本的驱动。下载地址:

      http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=14&PFid=6&Level=5&Conn=4&DownTypeID=3&GetDown=false

      下载后解压得到三个文件夹config(系统配置文件),h(头文件),src(驱动程序)。

    2. 配置BSP相关的系统文件

    网络驱程序是协议栈的一部分,网络驱动程序是否正确必须要放到协议栈中验证,因此需要将网络程序加载到系统中。添加驱动需要修改三个BSP的系统文件:config.h、configNet.h、sysLib.c。这三个文件都位于C:\Tornado2.2\target\config\BSP包\具体修改如下:

    1. Config.h:

    1:在Network添加INCLUDE_RTL_81X9_END,同时undef掉其他的网卡。

            /* 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 /* Realtek 81x9 Fast Ethernet Controller */

     

    #undef INCLUDE_BSD /* BSD / Netif Driver Support (Deprecated) */

     

    #undef INCLUDE_EEX /* (BSD) Intel EtherExpress interface */

    #undef INCLUDE_EEX32 /* (BSD) Intel EtherExpress flash 32 */

    #undef INCLUDE_ELC /* (BSD) SMC Elite16 interface */

    #undef INCLUDE_ESMC /* (BSD) SMC 91c9x Ethernet interface */

        2:在PCI中添加INCLUDE_RTL_81X9_END

    /* Include PCI support for drivers & libraries that require it. */

     

    #if defined (INCLUDE_LN_97X_END) || defined (INCLUDE_EL_3C90X_END) || \

    defined (INCLUDE_FEI_END) || defined (INCLUDE_DEC21X40_END) || \

    defined (INCLUDE_GEI8254X_END) || defined (INCLUDE_AIC_7880) || \

    defined (INCLUDE_WINDML) || defined (INCLUDE_USB)             || \

        defined (INCLUDE_RTL_81X9_END)

     

    # define INCLUDE_PCI

     

    #endif

    2.configNet.h

    1:在定义中添加:

    /* RTL81X9 EtherLink PCI driver defines */

     

    #ifdef INCLUDE_RTL_81X9_END

     

    /*

    * load string format

    * <devMemAddr>:<devIoAddr>:<pciMemBase:<vecnum>:<intLvl>:<memAdrs>:

    * <memSize>:<memWidth>:<csr3b>:<offset>:<flags>

    */

     

    #define RTL_81X9_BUFF_LOAN_0 1

    #define RTL_81X9_LOAD_FUNC sysRtl81x9EndLoad

    #define RTL_81X9_LOAD_STR_0 endLoadStr[0] /* First entry loc */

    #define RTL_81X9_LOAD_COUNT 4

     

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

     

    char endLoadStr [RTL_81X9_LOAD_COUNT] [END_DESC_MAX];

     

    #endif /* INCLUDE_RTL_81X9_END */

     

    2:在endDevTbl []相应的位置添加:

     

        #ifdef INCLUDE_RTL_81X9_END

    {0, RTL_81X9_LOAD_FUNC, RTL_81X9_LOAD_STR_0, TRUE, NULL, FALSE},

    #endif /* INCLUDE_RTL_81X9_END */

     

    1. sysLib.c
      1. 在/*imports*/中添加

        /* include rtl81x9End driver support routines */

        #ifdef INCLUDE_RTL_81X9_END

        IMPORT STATUS sysRtl81x9PciInit (void);

        #endif /* INCLUDE_RTL_81X9_END */

      2. 在#ifdef INCLUDE_XXX_END中添加

        /* include rtl81x9End driver support routines */

         

        #ifdef INCLUDE_RTL_81X9_END

        #include "sysRtl81x9End.c"

        #endif /* INCLUDE_RTL_81X9_END */

    2. 在PCI-to-PCI brige initialization 之后添加

      #ifdef INCLUDE_RTL_81X9_END

      sysRtl81x9PciInit ();

      #endif /* INCLUDE_RTL_81X9_END */

       

      以上修改都可以在下载下来的config里面的文件与之对比得到。

    3. 设置Makefile

添加如红色字体中的一句:

CPU        = PENTIUM4

TOOL        = gnu

 

TGT_DIR = $(WIND_BASE)/target

 

include $(TGT_DIR)/h/make/defs.bsp

ADDED_MODULES += rtl81x9.o

#include $(TGT_DIR)/h/make/make.$(CPU)$(TOOL)

#include $(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE)

  1. 设置开机启动项DEFAULT_BOOT_LINE

    在config.h中修改

    #define DEFAULT_BOOT_LINE \

    "rtl(0,0) peter:vxWorks h=192.168.0.74 e=192.168.0.58 \

    u=target pw=target tn=VxTarget"

  2. 添加文件和修改头文件
    1. 将sysRtl81x9End.c、rtl81x9.c、rtl81x9.h放入Tornado2.2\target\config\BSP包\
    2. 修改sysRtl81x9End.c和rtl81x9.h中的#include "drv/end/unsupported/rtl81x9.h"为#include "rtl81x9.h"
  3. 生产bootrom.bin即可使用WFTPD网络启动

openwrt添加rtl8139驱动

参考技术A在openwrt嵌入式产品开发中添加。需要将4G模块驱动代码直接编译到系统中,省去了生成ko驱动文件手动加载操作,下面将驱动代码添加到openwrt的方法总结如下:步骤1:拷贝驱动代码将需要添加的驱动代码拷贝到linux内... 查看详情

求助imx6+android4.4移植rtl8723au驱动问题

参考技术A这里仅以windows为例,在定制之前需要以下的工具:JDK(javadevelopmentkitjava开发组件,这个组件必须第一个被安装,并且配置好环境变量)Androidkitchen搭建,为何叫安卓厨房,个人觉得非常的形象!因为你定制rom就像烧菜,... 查看详情

教程|debian系统上移植usbwifirtl8192eu驱动并设置开机自启动(代码片段)

...原文标题:【飞凌嵌入式OKMX8MP-C 开发板试用体验】移植USBWIFI RTL8192EU驱动并设置开机自启动我(笔者)在飞凌OKMX8MP-C开发板上移植了自行搭建的Debian系统之后,发现板卡原有的WiFi模块无法使用,在内核里面... 查看详情

centos7下的kvm网卡配置为千兆网卡(代码片段)

在KVM下可以生成两种型号的网卡,RTL8139和E1000,其实应该是底层生成不同芯片的网卡,而不是附带宿主机网卡是什么型号就是什么型号的,其中默认为100兆网卡,即RTL8319的螃蟹卡,另一种是E1000的千兆网卡。设置步骤:1、修改KV... 查看详情

如何远程登录开发板?(代码片段)

...下网络环境、远程登录环境过程中遇到坑。WiFi网卡驱动移植1、把WiFi驱动文件夹放到内核文件夹中把驱动文件夹放到Linux-4.9.88/drivers/net/wireless中。WiFi驱动可以在网上找得到(以RTL8723为例)。2、修改Kconfig及Makefile文件修... 查看详情

rk3399驱动开发|17-rtl8152usb有线网卡调试(基于linux5.4.32内核)

文章目录一、RTL8152二、网卡驱动使能三、测试1.查看USB设备是否识别2.加载驱动模块3.ping测试4.iperf测试四、网卡名称变回ethx五、网卡参数一、RTL8152二、网卡驱动使能Linux内核中已经提供了RTL8152USB网卡的驱动,驱动文件为drivers/ne... 查看详情

rk3399驱动开发|17-rtl8152usb有线网卡调试(基于linux5.4.32内核)

文章目录一、RTL8152二、网卡驱动使能三、测试1.查看USB设备是否识别2.加载驱动模块3.ping测试4.iperf测试四、网卡名称变回ethx五、网卡参数一、RTL8152二、网卡驱动使能Linux内核中已经提供了RTL8152USB网卡的驱动,驱动文件为drivers/ne... 查看详情

markdown树莓派安装rtl无线网卡驱动(代码片段)

查看详情

ubuntu18.04用dkms安装wifi驱动rtl8723be

参考技术A整理下在ubuntu论坛安装wifi驱动的累积心得问题:自动升级内核后,重启系统该wifi驱动会失效,需要重新安装.ubuntu18.04正确安装rtl8723be驱动步骤:遗留问题:自动升级内核后,重启系统该wifi驱动会失效,需要重新安装wifi驱动.我... 查看详情

esxi6.7封装驱动rtl8125(bg)(代码片段)

...来做allinone。ESXi6.7官方系统包未涵盖我主板网卡的RTL8125BG驱动。所以需要手工将这个驱动封装进去。准备工作1、ESXi-Customizer-PS-v2.6.0.ps1(点击下载,最新版以后都搬到Github了)2、ESXi670-20191200 查看详情

esxi6.7封装驱动rtl8125(bg)(代码片段)

...来做allinone。ESXi6.7官方系统包未涵盖我主板网卡的RTL8125BG驱动。所以需要手工将这个驱动封装进去。准备工作1、ESXi-Customizer-PS-v2.6.0.ps1(点击下载,最新版以后都搬到Github了)2、ESXi670-20191200 查看详情

树莓派怎么安装无线网卡rtl8188cus驱动

树莓派可通过以下方式安装无线网卡rtl8188cus驱动:1、将无线网卡插入电脑,双击打开“计算机”,双击光驱;2、双击之后弹出一个页面,选择“安装驱动程序”,选择购买型号网卡的驱动,先选定,再点安装;3、在无线上网... 查看详情

网卡设置网卡的高级设置说明

网卡设置网卡的高级设置说明注意:RTL8101E、RTL8102E及RTL8139系列网卡为10/100Mbp,所以并不支持Gigabit的联接速度。自动关闭PCIe(省电)设置此选项可进入网络控制器省电模式设置此選項可進入网路卡省电模式选项说明关闭关闭自动关... 查看详情

你好,我的在kalilinux安装rtl8192的驱动时编译遇到点问题

...linux-2.6.32.4吧(记不清楚了),编译完内核之后,把内核移植到开发板,然后使用这个内核编译你的hello.c,编译生成KO文件,移动到开发板的文件系统,然后insmod就OK了,注意需要有ARM开发板他的书需要有一定的基础才能看懂,... 查看详情

树莓派rtl8188eu芯片wifi驱动

总算是找到了。现拿出来分享。參考地址:https://www.raspberrypi.org/forums/viewtopic.php?p=462982#p462982下载的地址是:https://dl.dropboxusercontent.com/u/80256631/8188eu-v7-20150406.tar.gz依据自己的版本号改动最后边的文件名称字就可以,可能须要FQ才... 查看详情

linux下的rtl8723bs驱动发一份可好?

...选Mirrors可找到所有版本的下载地址。追问我要的是网卡驱动 参考技术B这个型号的网卡驱动是很令人头疼的话题,你可以在网上搜搜,现在github已经有个这个网卡的驱动了,但是现在唯一的问题就是他并不适合linux3.x内核的系统... 查看详情

i.mx6ull驱动开发|29-使用usbwifi网卡(rtl8188eu)(代码片段)

...卡插到电脑上看下型号是RealtekRTL8188EU版本:二、添加驱动到Linux中1.realtek驱动源码使用正点原子资料包中的源码:2.删除内核自带的RTL8192CU驱动根据正点原子教程描述,linux内核自带的驱动经过测试不稳定,所以手... 查看详情

虚拟机cdlinux中怎么安装无线网卡的linux驱动rtl8192cuusb

...信号!!求解决!网卡先生wlan0unknown参考技术ACDlinux缺少安装驱动用到的基本依赖程序,比如gcc,kernel-devel包,还有别的。想安装除非lz有能力把他们都编译安装了。如果是小白就别想了,linux下没有驱动精灵,不能无脑安装。 查看详情