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

  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网络启动
时间: 2024-10-13 07:13:02

VxWorks5.5.1 移植RTL8139驱动和配置网络启动调试环境的相关文章

windows10环境下装ubuntu双系统,装显卡驱动,配置CUDA,cudnn环境

1.制作一个ubuntu系统的U盘1.1.下载ubuntu镜像:http://mirrors.163.com/ubuntu-releases/ 下载需要的版本1.2.将下载好的ubuntu镜像解压到u盘,就制作好ubuntu系统的U盘了. 2.用win10自带的磁盘分割器,分割出一部分内存给ubuntu使用2.1.右键'我的电脑'-> '管理' -> '磁盘管理'如果你想在F盘安装ubuntu,则右键F盘 -> '压缩盘', 选择ubuntu需要的空间. 3.安装ubuntu把u盘插到电

Windows下安装配置MinGW GCC调试环境

下载安装文件:Sourceforge  64位系统安装选项记得选x86_64.安装过程中连不上服务器的话也可以选择下载压缩包. 配置环境变量,假设mingw安装目录为C:\mingw-w64\mingw64: 把mingw的bin文件夹加入系统环境变量Path: 管理员权限命令行下执行: setx -m PATH "%PATH%;C:\mingw-w64\mingw64\bin 设置MINGW_HOME变量: setx MINGW_HOME "C:\mingw-w64\mingw64&

Linux-2.6.39在Tiny6410上的移植 - 外设驱动移植

Linux内核版本号:linux 2.6.39 交叉编译工具:arm-linux-gcc 4.5.1 Linux内核下载:www.kernel.org 开发板:友善之臂Tiny6410 LCD:友善之臂S70 一.移植LED驱动 打开arch/arm/mach-s3c64xx/mach-mini6410.c添加下列代码: 1 static struct gpio_led tiny6410_gpio_led[] = { 2 [0] = { 3 .name = "led1", //设备名

backports移植rtlwifi驱动

/************************************************************************ * backports移植rtlwifi驱动 * 说明: * Linux内核版本算是蛮多的,版本越高其内核自带的驱动也是越多,对于低版本 * 如何使用高版本中的驱动是个问题,左栋提醒使用backports来做移植,尝试一下. * * 2017-9-13 深圳 龙华樟坑村 曾剑锋 ************************************

【转】 linux内核移植和驱动添加(三)

原文网址:http://blog.chinaunix.net/uid-29589379-id-4708909.html 原文地址:linux内核移植和驱动添加(三) 作者:genehang 四,LED驱动的添加 1, 将led.c驱动文件拷贝到linux-3.1.4/drivers/char/目录下 [email protected]# pwd /change/linux-3.1.4/drivers/char [email protected]#  cp /mnt/hgfs/fh/driver/

安卓移植和驱动开发第四章心得体会

第四章我们学习了安卓移植环境的搭建,首先构建开发是任何开发工作的基础,对于软,硬件非常丰富的嵌入式系统来说,构建高效,稳定的环境是否开展工作的重要因素之一,在构建开发环境之前,我们必须了解相关的开发流程,主要流程包括,下载安卓内核,熟悉开发环境和工具,交叉开发环境.是安卓系统移植开发的基本模型,Linux内核环境配置,GUN工具链,测试工具甚至集成开发的环境都是安卓系统移植的利器:熟悉Linux内核,因为安卓系统移植和开发需要重新制定Linux内核,所以熟悉内核配置,编译和移植很重要:熟悉目标板

uboot移植spi驱动

记录一下在uboot内移植spi驱动的过程 芯片:freescale Mpc8308 uboot版本:u-boot-2009.11-rc1.2 需求:我们需要在uboot下通过spi配置一个时钟芯片(dpll)用来给fpga提供时钟 要移植spi驱动,前提是要通过手册了解该cpu的spi的结构和寄存器描述,一般作为cpu的外围设备,spi是有一个spi控制器的 简单看一下8308的spi模块结构 spi的四根线,MOSI,MISO,CS,CLK CS以外的几根线是从Master上引出来的 而CS

【华为云技术分享】小熊派华为物联网操作系统LiteOS裸机驱动移植02-LCD驱动移植及使用

1. LCD裸机驱动 小熊派开发板使用的LCD屏幕为1.3寸的TFT彩屏,色彩深度16bit,分辨率240*240,使用 SPI 接口与 MCU 之间通信. 如果你对裸机玩转LCD屏幕还不熟悉,请先阅读这篇文章: 2. 移植LCD裸机驱动到LiteOS 如果你对移植裸机驱动到LiteOS的方法还不了解,请先阅读这篇文章: 复制裸机驱动文件到LiteOS工程 LCD的底层是使用SPI驱动的,那么除了 STM32CubeMX 生成的spi.h和spi.c文件,还需要自己在此基础上手写LCD屏幕的驱动

第5章 Android移植与驱动

第5章  Android移植与驱动 通过学习本章Android移植与驱动,知道了Android移植和驱动的关系.其中,设备驱动程序包括内核驱动程序和用户空间驱动程序.Linux系统的设备分为3类:字符设备.块设备和网络设备.除网络设备外,字符设备与块设备都被映射到Linux文件系统的文件和目录,通过文件系统的系统调用接口open().write().read().close()等函数即可访问字符设备和块设备.Android中内核的结构和标准的Linux2.6内核是基本相同的,Android在其中