VxWorks之MUX网络驱动在EasyARM2200和SmartARM2200上的实现zz

本文详细介绍了如何在VxWorks操作系统上,针对EasyARM2200和SmartARM2200平台实现MUX网络驱动。内容涵盖VxWorks的网络驱动程序结构、END驱动的工作原理,以及在实际开发中涉及的配置文件、中断服务程序、内存管理和中断处理等关键步骤。文章还提及了《ecos增值包》在VxWorks网络驱动开发中的辅助作用。
摘要由CSDN通过智能技术生成

发信人: gdtyy (gdtyy), 信区: Embedded
标  题: VxWorks之MUX网络驱动在EasyARM2200和SmartARM2200上的实现
发信站: 水木社区 (Mon Jun 25 23:25:48 2007), 站内

***********************************************************
* VxWorks之MUX网络驱动在EasyARM2200和SmartARM2200上的实现 *
***********************************************************
                          ------ 浅谈《ecos增值包》辅助开发VxWorks网络驱动
    2007/05/11  asdjf@163.com  www.armecos.com

    又有一些网友购买《ecos增值包》了,下面进一步谈谈VxWorks下网络驱动程序的开发
,目标板为EasyARM2200和SmartARM2200(网卡芯片为RTL8019AS),调试环境是redboot,依
靠打印输出调试。

    --------------------
    | 网络驱动程序概述 |
    --------------------
    在VxWorks中,网卡驱动程序分为END(Enhanced Network Driver)和BSD两种。END驱动
程序基于MUX模式,是目前在VxWorks操作系统上应用最广泛的一种网络驱动程序。在该模式
下,网络驱动程序被划分为协议组件和硬件组件,它们之间没有内部交换数据,只通过MUX
间接相互作用。MUX接口的作用是分解协议和硬件网络驱动程序,从而使它们几乎独立,这
种独立使添加新的驱动程序和协议变得简单。例如:添加一个新的网络驱动,则所有现有基
于MUX的协议均可使用新的驱动程序;同样,添加一个新的基于MUX的协议,则任何现有的网
络驱动均可通过MUX接口来访问新的协议。如下图所示:

    协议A   协议B  ......
      |       |             |
      -----------------------
                 |
                MUX
                 |
      -----------------------
      |       |             |
    设备1   设备2  ......

    通过MUX接口,协议和硬件设备相互独立,任何协议都可以通过MUX统一接口访问任何硬
件设备,任何硬件设备也可以通过MUX接口支持所有协议。

    VxWorks MUX驱动调用关系如下图所示:

    ------------------------       ---------------------
---------------------
    |                      |------>| muxBind()         |       |
   |
    | stackTxShutdownRtn() |<------| muxUnbind()       |       |
   |
    |                      |       |                   |       |
   |
    |                      |       | muxDevLoad()      |------>| endLoad()
   |
    |                      |       | muxDevUnload()    |------>| endUnload()
   |
    |                      |       |                   |       |
   |
    | stackRcvRtn()        |<------| muxReceive()      |<------|
   |
    | stackError()         |<------| muxError()        |<------|
   |
    |                      |       |                   |       |
   |
    |                      |------>| muxSend()         |------>| endSend()
   |
    | stackTxRestartRtn()  |<------| muxTxRestartRtn() |<------|
endTxRestartRtn() |
    |                      |------>| muxMCastAddrGet() |------>|
endMCastAddrGet() |
    |                      |------>| muxMCastAddrDel() |------>|
endMCastAddrDel() |
    |                      |------>| muxMCastAddrAdd() |------>|
endMCastAddrAdd() |
    |                      |------>| muxPollSend()     |------>| endPollSend()
   |
    |                      |------>| muxPollReceive()  |------>|
endPollReceive()  |
    |                      |------>| muxIoctl()        |------>| endIoctl()
   |
    |                      |       |                   |       |
   |
    |                      |       |                   |------>| endStart()
   |
    |                      |       |                   |------>| endStop()
   |
    ------------------------       ---------------------
---------------------
          协议层接口                      MUX接口                     END接口

    VxWorks启动时执行任务tUsrRoot来完成驱动程序的安装,它产生tNet

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值