27 VxWorks网络驱动程序编写实验【荐】.pdf
文本预览下载声明
实验 27 VxWorks 网络驱动程序编写实验
一 实验原理
1 MUX 网络设备驱动程序简介
VxWorks 的网络协议栈有个特征,就是在数据链接和网络协议层之间使用公共接口
(API)来进行数据交互,这种接口被称为 MUX网络接口。在 BSD4.3 模型下,VxWorks 网络
骆动程序和协议紧密结合,它们彼此紧密依赖于对方的数据结构。而在基于 MUX的模式下,
网络驱动程序与协议之间没有内部交换数据,它们只通过 MUX 间接相互作用。例如,接收到
数据包后,网络接口驱动程序并不直接访问协议中的任何结构。而当驱动程序准备给协议传
递数据时,驱动程序会调用 MUX 辅助程序,然后此程序用于处理给协议传递数据时的具体细
节。MUX 接口的目的是分解协议和网络驱动程序,从而使它们几乎独立于彼此。这种独立使
添加新的驱动程序和协议变得简单。例如,若想添加一新的 END,所有现有基于 MUX 的协议
均可使用新的驱动程序。同样地,若想添加一新的基于 MUX 的协议,任何现有的 END 均可
MUX 来访问新的协议。
图 1 VxWorks 网络协议栈
IP+ICMP Stream 用户协议
MUX接口
以太网 SLIP 其他
图 2 VxWorks 网络协议与 MUX 接口
图 3 VxWorks MUX 驱动与网络协议
图 1、2、3显示了协议栈、MUX 和一个网络接口驱动程序之间的 API 接口调用关系。可
以看出协议层会执行以下接口:
stackShutdownRm()
stackError()
stackRcvRm()
stackTxRestartRm()
muxBind()
stackShutdownRtn() muxUnbind()
muxDevLoad() endLoad()
muxDevUnload() endUnload()
stackRcvRtm() muxReceive()
stackError() muxError()
muxSend() endSend()
stackTxRestartRtn() muxTxRestartRtn() endTxRestartRtn()
muxMCastAddrGet() endMCastAddrGet()
muxMCastAddrDel() endMCastAddrDel()
muxMCastAddrAdd() endMCastAddrAdd()
muxPollSend() endPollSend()
muxPollReceive() endPollReceive()
muxIoctl() endIoctl()
显示全部