>
首页 » 技术文章 » VxWorks操作系统下光纤通道通信软件的实现

VxWorks操作系统下光纤通道通信软件的实现

作者:王红春,王世奎  时间:2006-10-22 23:19  来源:
摘 要:为了实现光纤通道技术在机载计算机中的应用,介绍了光纤通道优点,说明基于PCI接口的光纤通道主机适配器的工作原理,分析了该适配器提供的邮箱命令和队列两种软件编程接口工作机制,给出嵌入式VxWorks环境下通信软件的实现方案。为开发机载光纤通道实时通信软件奠定了基础,对光纤通道嵌入式应用具有普遍意义。

关键词:光纤通道;VxWorks;通信软件;嵌入式系统

引 言

光纤通道是由美国标准化协会制定的计算机之间以及计算机与I/O设备之间进行高速数据传输的接口标准,它集千兆网络通信技术和通道控制技术优点于一身,为高速通信网络提供了一种高可靠、低成本、实时性强、可扩展性好的解决方案,同时支持SCSI、IP、ATM等多种上层应用协议,提供1Gbps的传输速率,是解决高速通信的理想选择。目前已广泛应用于数据仓库、图像处理、存储网络、并行计算和协同工作等领域。国内光纤通道技术嵌入式系统中的应用研究刚刚起步。本文在对光纤通道适配器硬件工作原理和软件接口分析基础上,给出嵌入式VxWorks环境下通信软件的实现方案,为机载光纤通道网络实时通信软件的开发奠定了基础。

光纤通道协议

光纤通道包括多个层次的协议,可分为五层:FC0、FC1、FC2、FC3和FC4。其层次结构如图1示。FC0层定义了FC的物理链路,规定了传输物理介质和传输速率。FC1是编/解码层,定义了串行序列的物理传输,定时恢复和线路平衡功能;FC2是信号协议层,规定了块传输的传输机制和规则,包括帧格式、节点间的信息交换管理;FC3提供高级特性所需的通用服务;FC4协议映射层,定义了各种高层协议向低层映射的规则。



光纤通道主机适配器的工作原理

光纤通道主机适配器(简称FCHBA)是一款高度智能化的通信处理机,,它支持光纤通道协议标准和PCI2. 2接口。支持点到点、环网、交换网络等拓扑结构。内部集成一个高速微处理器,在固件的控制下能够完成数据接收/发送、时钟恢复、串行/并行转换、8B/10B编/解码,流量控制等功能。并为驱动和应用程序提供了编程接口。在驱动配合下能实现FC1. 层到FC4全部功能。

FC- HBA组成
FC- HBA主要由下面几部分组成,其原理图如图2示。
a. 光收发器:负责光电转换;
b. FC协议处理器:负责光纤通道协议处理和固件程序的执行;



c. Flash BIOS:用于存储FC协议处理器执行的固件程序;
d. RAM:用作FC协议处理器的内存;
e. NVRAM:用于配置PCI接口和网络通信参数;
f . PCI接口:提供主机访问接口。

FC- HBA工作原理
数据的发送
数据从主机内存空间,通过PCI接口到光收发器发出的过程如下:

a. 主机将数据封装成I/O控制块,放入发送缓冲区,并通过PCI接口通知FC协议处理器有新的数据传输请求;
b. FC协议处理器根据I/O控制块的要求,采用DMA方式将数据转移到通信接口的内存中,等待发送;
c. FC协议处理器将数据从通信接口的内存读出并加上帧开始界定符、CRC校验、帧尾结束界定符;
d. 将帧进行8B/10B编码,并进行并串转换;
e. 通过光收发器将串行的电信号转换为光信号发送到网上。

数据的接收
从网上传输的串行数据信息流转换为32位并行数据放入主机内存空间的过程:

a. 判断接收的数据是否为有效的光纤通道数据,并对有效的数据进行帧界定,去掉帧开始和帧结束界定符;
b. 对界定后的数据进行10B/8B解码,将四个10位的传输符转换为四个8位字节的有效数据;
c. 对解码后的有效数据进行CRC校验,并保存中间结果;
d. 根据帧头信息判断该帧是否发往本机,若是,则将数据写入接收FIFO缓存,否则将该帧继续传给下一节点;
e. 将该帧转移到通信模块的内存;
f . 在DMA控制下,将接收到的数据通过PCI写入主机内存,并通过中断通知主机。

FC- HBA工作机制

FC- HBA的固件程序支持邮箱命令和队列两种主机编程接口。邮箱命令接口负责配置固件、硬件和发送高优先级的I/O控制块。队列分为请求队列和响应队列两种,主机发送数据时,通过请求队列向固件提交I/O控制块;固件收到I/O请求块后,将其放入响应队列后通知主机处理。

邮箱命令接口工作机制
固件提供了可访问16个邮箱寄存器,其中8个为输入寄存器,用于主机向固件传递命令和参数,另外8个为输出寄存器,用于固件向主机返回命令执行状态。固件邮箱命令接口工作机制如下:

a. 邮箱命令的提交
主机确保不覆盖固件还未服务的邮箱寄存器内容,将要执行的命令和其相应参数写入邮箱寄存器。设置主机中断命令位通知固件进行服务。

b. 邮箱命令的处理
固件得知有新的邮箱命令需要服务后,保存邮箱命令,并根据邮箱命令及其参数作相应处理,将执行状态和数据放入输出邮箱寄存器,并发一个中断通知主机邮箱命令的处理完毕。

c. 邮箱命令的完成
主机得到中断后,进入中断服务。读取寄存器的内容来判断邮箱命令的执行状态。

队列接口的工作机制
固件提供队列接口由请求队列和响应队列两部分组成,分别对应主机内存空间的一个环形列表,每个列表包含了一个in-pointer和out-pointer索引指针。列表中每个实体长度由64个字节组成,每个实体地址通过列表首地址和索引可得到:实体地址= 列表首地址+实体索引X 64。环形列表的状态可通过两个索引指针来判断,当in-pointer= out-pointer时环形列表为空,当(in-pointer+1)%环形列表长度=out-pointer时环形列表为满。环形列表实体个数=(in-pointer+环形列表长度- out-pointer)%环形列表长度。

队列接口是固件提供给主机发送和处理I/O控制块的软件接口,队列工作机制如下:

a. 请求块的提交
主机负责将发送的数据和命令封装成固件支持的请求块放入环形列表,调整队列的in-pointer指针,并通过中断通知固件请求队列已更新。

b. 请求块的处理
固件通过比较请求队列的两索引指针,判断队列是否有新的请求块。若存在新的请求块将其保存,调



整请求队列out-pointer指针,并根据请求块内容作相应处理。处理完后将结果封装成一个响应块放入响应队列,调整响应队列的in-pointer指针,并通过中断通知主机响应队列已更新。

c. 请求块的处理完成
主机得到中断后,进入中断服务。通过响应队列的两个索引来判断是否有新的响应块,若收到响应块将其保存,并调整响应队列out-pointer指针。然后根据响应块获得请求的执行结果和状态。

VxWorks下通信程序开发与实现

VxWorks是美国WindRiver公司开发的高性能嵌入式实时操作系统。现已被广泛地应用在军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。下面给出在TornadO集成化开发环境下实现光纤通道通信程序的基本过程。

PCI设备检测
PCI总线是一种即插即用的总线,在BIOS和操作系统的支持下,能够自动地为设备分配合适的内存映射地址、I/O端口和系统中断控制器的输入( IRQ)。在Vxworks中有专门的PCI函数来检测设备的总线号、设备号和功能号。首先利用pciFindDevice( )函数对给定VendorID和DeviceID的设备进行检测,检测完后同时给出了设备的总线号、设备号和功能号;接下来就是获得该设备的中断号、基地址(包括IO和内存)。Vxworks中pciConfigLib. h文件中定义PCI总线的常量。

如中断号( PCI-CFG-BRG- INT-LINE)、IO基地址( PCICFG-BASE-ADDRESS-0)、内存基地址( PCI-CFG-BASEADDRESS-1)等。利用函数pciConfigInByte和pciConfigInLong就可以很容易地获得设备的中断号和基地址。

固件和协议初始化
固件初始化通过邮箱命令实现下载、校验下载、执行、初始化固件和获取固件状态等功能。

中断初始化
通过VxWorks提供的pciIntConnect函数,为配置适配器相应中断号设置中断服务函数。配置主机控制寄存器和8259中断控制器中断使能。

中断服务
当固件收到一个异步事件或数据,进入中断服务。中断服务根据不同的中断原因作相应的处理。中断服务处理流程如下:

a. 读取PCI中断状态寄存器,判断是否存在更高优先级中断未处理,若有更高优先的中段未处理退出中断服务。

b. 读取PCI信号寄存器,判断是否有异步事件发生,若有异步事件,从MailBox0中读取事件原因。异步事件可分为登录、离线、环网初始化、同步、系统错误等事件。根据异步事件原因做相应处理。并清除PCI信号寄存器。

c. 根据响应队列两索引指针判断队列是否为空,若队列为空跳转到步骤D,若不为空,逐个读取响应控制块,控制块可分为网络状态、数据发送完成、数据收到等几种类型,根据控制块的类型做相应处理,并调整响应队列的输出索引指针。然后重复步骤C。

d. 清除中断。

数据发送/接收
数据的发送是通过调用队列提供的I/O请求块来完成,应用程序将要发送的数据封装成I/O控制块,调用队列接口将数据发送到相应的目标节点。数据的接收是在中断服务程序中完成的,当中断服务程序判断收到数据,将接收的数据将其拷贝到接收缓冲区。

结束语

采用FC-HBA,分析其软件工作机制,在VxWorks操作系统环境下,开发的FCHBA通信软件已调试完成,并通过了实际光纤联网通信的验证。该工作对下一步开发机载光纤通道实时容错分布式通信软件奠定了基础,对开发光纤通道的嵌入式应用也具有广泛意义。

相关推荐

从TI“蝗虫战略”到雷军“芯片免费”

芯片  嵌入式系统  2013-11-07

嵌入式系统领域迎来创新与转型时代

嵌入式系统  通信  2013-05-30

VDC:物联网将改写嵌入式系统开发趋势

物联网  嵌入式系统  2013-05-14

风河宣布对于未来机载性能环境联合体的承诺

风河  嵌入式  VxWorks  2012-02-29

ARM-Linux嵌入式系统的BootLoader分析与设计

嵌入式系统  Linux  2011-09-19

基于Windows平台VxWorks交叉编译工具的设计

VxWorks  嵌入式  2011-09-05
在线研讨会
焦点