基于VxWorks的复合通信模式的研究
各分系统连接的套接口,并为每个套接口返回一个ID号,然后初始化一个套接口结构体,为其赋上该 ID号以及服务端的IP地址和端口号,并将具作为函数connect()的参数,调用connect()函数主动去连接客户端。服务端则需调用 bind()函数将自身IP和端口号绑定,以保证客户端正确识别。为了确保服务器能够实时接收客户端的数据,当服务端与客户端建立连接之后,必须嵌入循环,利用read()语句不断等待客户数据。同时客户端每次发送数据之后也应等待服务端回复,建立握手机制。一个完整的socket网络应该可以用图3来描述。值得指出的是,read调用具有一个PEEK选项,即向接收缓冲区探测是否有数据而并不真正取出数据,根据它的返回值可以判断出网络的状态。这个功能适用于网络查错。
3.4 光纤通道 由于光纤通道(fibre channel)接口并非VxWorks自身具备的组件,因此,VxWorks内核上实现光纤通信也需要加载相关的驱动程序;同时,主机也需安装光纤通信适配器,然后通过光纤电缆连接。下面仍以PPCx系列单板机为例来说明。 这里采用QLA2200作为光纤通道适栩器。QLA2200/66是Qlogic公司生产的、目前应用最为广泛的光纤通道适配器。它主要包括四个功能模块:高速RISC处理器,包括千兆位收发模块、通道控制、帧缓存等的FC接口,有三个通道PCI总线DMA控制器以及ISP2200A的外存储器。 RRCx的ESP为该适配器QLA2200提供了驱动程序,支持基于交换机、仲裁环以及点对点等三种拓扑结构的SCSI、IP和低开销访问(LLA)协议,其固件协议层结构如图4所示。
当VxWorks启动之后,需要调用QLA2200的初始化函数ql22Init(),该函数的功能是驱动PPCx主板上QLA2200的PCI板卡,包括SCSI、IP固件协议初始化。此时,可在光纤通道上建立基于SCSI或IP协议的数据通信模式;而LLA实际上一种不具备协议管理的点对点通信模式,可节约大量系统开销,故称之为低开销方式。它可以建立一种类似于服务器/客户机的通信机制,即服务端可以实时响应客户端的数据请求,但它同样缺乏握手安全机制。因此,如果客户端连续发送两次大批量数据,将会由于服务器来不及接收导致该两批数据首尾发生冲突,故需加以改进。LLA的服务器/客户机通信机制是通过调用函数ql22laHookAttach()在服务端设备一个挂钩函数来实现的。每当客户端向服务端发送数据,该挂钩函数将会立刻自动响应,因此,可以在挂钩函数当设置VxWorks消息队列,将接收帧缓存区中的数据取出。如下面的程序: BOOL ql22LlaClientInputHook() {… /*将缓存区数据发送到服务端本地消息队列当中去*/ msgQsend(ServerQueue,ClientData,Length,NO_WAIT,0); } 采用消息队列接收数据则是由于它具有消息自动追加功能,可以保证数据在高速拷贝时不被覆盖。当传输完毕后,服务端就可以将消息队列当中的数据取出来进一步处理。客户端则应当在每次发送数据完毕之后等待服务端的回答,首到得到确认之后才可以进行下一步发送。因此,客户端必须设备回复等待,这可以利用信号灯来实现。LLA具有很高的传输速率。根据测试,在实施了握手通信机制后,传输速率可达50Mb/s以上,而且实现,系统开销很小,适应于点对点的主机高速通信。
4 结论
本嵌入式系统复合通信模式具有多种通信接口,可适应不同的数据通信需要。同时,由于VxWorks高效的实时性以及强大的兼容性,使得复合通信的实现变得更加容易并且具有良好的实时性和安全性。通过实际运行,系统内部各个模块运行稳定,软件的模块实时调度表示良好,经长时间的运行未发现通信阻塞。该复合通信模式可适用于工业控制、医疗等多方面,具有广泛的适应性。
- 基于VxWorks的全IP开发平台进程通信处理机制(04-23)
- 基于VxWorks的微机保护装置网络通信设计(03-28)
- 无线通信领域中的模拟技术发展趋势(蜂窝基站)(09-22)
- 新一代移动通信系统及无线传输关键技术(06-19)
- 蜂窝移动通信基站电磁辐射对人体影响的探讨(04-10)
- 无线升级到802.11n 应考虑的因素有哪些?(10-30)