②RTL8019AS使用EXINT1中断,且上升沿触发。

2 、软件实现

2.1 VxWorks的网络协议栈和MUX接口

VxWorks中的网络协议栈叫作“SENS(Scalable En-hanced Network STack)”,即可裁减增强网络协议栈。SENS是基于4.4BSDTCP/IP协议栈发展而来的。它包含了许多4.4BSDTCP/IP协议栈没有的协议;而且SENS在实现一些协议功能时增加了许多新特性。如在IP协议实现时增加了多播功能。SENS协议栈层次如图2所示。

SENS的基本特征与传统的TCP/IP网络协议栈相似,但从图2中可以看出,SENS最大的特点是在数据链路层和网络协议层之间多了MUX层。在SENS中网络接口的驱动程序叫作“END(Enhanced Network Driver)”,即增强型网络驱动程序,它处于数据链路层。IP层和TCP/UDP层合称为“网络协议层”。在数据链路层和网络协议层之间有应用程序接口(API),这个接口在SENS中叫作“MUX(Multiplexer)接口”。MUX接口如图3所示。MUX接口起到隔离网络驱动程序与网络协议的作用。在老式的BSD4.3的驱动模式下,网络驱动程序和协议是紧密联结的,无论协议还是驱动程序都需要了解对方的数据结构。而在新的基于MUX的模式下,驱动程序和协议并不需要了解对方。它们通过MUX接口来通信。例如,在收到一个包后,网络驱动程序并不直接访问协议的数据结构;相反,当准备将数据传给协议层时,它调用一个MUX提供的函数,该函数处理把数据传给协议层的细节。这使得添加一个新的驱动程序或协议十分容易。MUX实现了下面的一套函数集:muxBind()、muxUn-bind()、muxDevLoad()、muxDevUnload()、muxReceive()、muxError()、muxSend()、muxTxRestartRtn()、muxM castAddrDel()、muxMcastAddrGet()、mux-PollSend()、muxMcastAddrAdd()、muxPollReceive()、muxIoctrl()。网络驱动程序和协议都要调用上面的函数,不需要为它们添加任何附加代码。

2.2 END设备驱动程序装载过程

在VxWorks中,END设备驱动程序装载过程可以分为3个步骤,即指定END设备,装载END设备和启动END设备。END设备的指定是通过数组endDevTbl[ ]来完成的,该数组描述了系统中的所有网络设备的装载人口点及其相关参数。系统调用MUX设备装载函数mux-DevLoad()来装载END设备,调用MUX设备启动函数muxDevStart()来启动END设备。网络设备驱动程序的装载过程如图4所示。系统通过usrRoot()函数来调用usrNetInit()函数完成MUX的初始化,装载网络设备表endDevTbl[ ]中描述的所有设备,并将IP协议绑定到网络引导设备上等。