本发明涉及光纤通道通信系统,具体而言涉及一种基于多分区的fc设备dma通信方法。
背景技术:
1、机载数据总线技术是用于机载设备、子系统以及模块之间的互联技术。以计算机的概念的角度,各种航空电子设备相当于一台台微机,而总线通信技术是连接各微机的通道和纽带,使航电设备形成具备完整功能的网络。fc(fibre channel,即光纤通道)是1988年由美国工业标准协会(ansi)提出的通道标准,旨在满足日益增长的航空航天器内部高速数据通道需求,fc串行传输速率可达133兆波特~1.0625千兆波特,是目前机载航电系统通信网络的主要实现方式,实现高速的机载通信需求。
2、fc光纤通道是一种基于标准的网络结构,具备通道及网络双重优势,使得在同一物理接口上可以运行目前主流的通道标准及网络协议。庞大的数据吞吐量使其可以令机载的不同系统间的大量数据传输成为现实,并且可用相同设备建立任何拓扑,满足不同的连接特性,例如点对点通信网络、仲裁环通信网络、交换式网络等,实现节点设备之间的高速通信等。
3、在fc光纤通道的通信拓扑结构中,节点设备通常配置一个或多个光纤通道端口(fc端口)。节点设备,可通过pcie接口与主机连接,与主机通信收发报文,例如将业务报文发送到主机,接收主机对节点设备(其中的fpga、ddr存储、光信号处理等)的配置信息,并通过fc端口将主机接至fc拓扑网络中。
4、在现代越来越复杂的机载设备应用环境下,机载的通信拓扑网络越发复杂,网络中传输数据量呈几何式增长,如何提升整体的fc网络中节点设备的整体性能,发挥其在fc网络中的作用,提高处理数据的效率,是当前机载航电fc网络通信系统需要解决的关键问题。
技术实现思路
1、鉴于现有技术的缺陷或者不足,本发明的第一方面提出一种基于多分区的fc设备dma通信方法,包括:
2、在目标缓存分区内按照发送方向和接收方向分别建立接收方向缓存区以及发送方向缓存区,该接收方向缓存区以及发送方向缓存区与对端设备之间经由fpga实现数据传输通信;
3、在发送方向,发送方向的缓存区中配置多个不同优先级的缓存队列,每个分区依据不同的优先级将待发送的数据放到缓存队列中,然后将缓存队列中待发送数据的dmabuffer地址发送给fpga,所述fpga中的dma_top模块利用其dma读控制子模块进行dma读操作,使缓存队列中对应的数据进入fpga的内部,按照优先级依次经由tx_top模块处理后,通过fpga的fc_mac模块发送到对端设备,完成发送方向的数据传输;
4、在接收方向,对端设备发送数据经由fc_mac模块进入到fpga,通过fc_mac模块完成帧的构建,然后在rx_top模块进行帧的解析后,获得数据流入dma_top模块的dma写控制模块中,在dma写控制模块对收到消息按优先级处理后进行dma写操作,将数据送到接收方向缓存区的对应的优先级队列中,向接收方向缓存区送完数据后将数据块信息链入目的分区中,通过中断通知或者由分区自主处理,最终完成接收方向的数据传输。
5、在一些实施例中,在数据发送方向,发送方向缓存区的缓存队列对不同分区中相同优先级的数据进行管理,按照发送顺序组成三个不同优先级的队列存储在发送缓存中,然后将待发送的块号链入指针队列中,并将dma buffer地址发送给fpga,更新写指针。
6、在一些实施例中,所述fpga中的dma_top模块的dma读操作模块识别到某一个分区的写指针产生偏移,即队列中有待发送的数据块号,则一次将指针队列的多个块号对应的优先级的队列的数据传输到fpga的内部;
7、dma读操作完成后,更新读指针到指针队列中,通过读写指针的维护来判定某分区的待发送数据的多少,在fpga内部通过优先级顺序依次进行数据处理和存储,并且只有在高优先级消息队列中没有待发送数据时,才会处理次低优先级的待发送数据。
8、在一些实施例中,在接收方向缓存区中配置三个分区以及不同优先级的消息队列;
9、在fpga内部按照优先级、msg_id进行队列管理,当某优先级的数据需要发起dma操作时,利用该数据的msd_id与分区号之间的映射关系获取目的分区号,然后将数据以dma的形式发送到接收方向缓存区的对应优先级的消息队列中;
10、其中,每个消息队列中包含多个数据缓存块,当块的数据送入消息队列缓存完成后,fpga将消息队列中的数据块号依据目的分区号链入到不同的目的分区中,每个分区依据块号顺序读取消息队列中的数据信息,或者收到fpga发起的中断后立即处理对应的数据块,完成接收方向的数据接收。
11、在一些实施例中,当某分区因未知原因停止处理数据,而fpga链入到该分区的块号个数大于预设的阈值n时,fpga被设置成立即发起中断请求至该停止处理数据的分区,并配置将后续的块号不再链入该分区,直至通过软件将该分区恢复至正常状态。
12、结合以上示例的实施方式,本发明提出的基于多分区的fc设备dma通信方法,提出在fpga内部使用优先级队列管理数据的方式,数据在进行dma操作的时候使用共享缓存的缓存管理方式,通过多分区能够实现零拷贝方式的数据处理方式,适应不同的传输场景,通过多分区共享队列的方式实现多分区对数据的零拷贝功能,能够提高系统处理数据的效率。
13、应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的发明主题的一部分。
14、结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
1.一种基于多分区的fc设备dma通信方法,其特征在于,包括:
2.根据权利要求1所述的基于多分区的fc设备dma通信方法,其特征在于,所述fpga内配置有dma_top模块、tx_top模块、rx_top模块以及fc_mac模块;
3.根据权利要求1所述的基于多分区的fc设备dma通信方法,其特征在于,所述缓存队列配置有至少三级优先级,分别为紧急消息队列、事件消息队列以及流消息队列。
4.根据权利要求1所述的基于多分区的fc设备dma通信方法,其特征在于,在发送方向,发送方向缓存区的缓存队列对不同分区中相同优先级的数据进行管理,按照发送顺序组成三个不同优先级的队列存储在发送缓存中,然后将待发送的块号链入指针队列中,并将dmabuffer地址发送给fpga,更新写指针。
5.根据权利要求4所述的基于多分区的fc设备dma通信方法,其特征在于,所述fpga中的dma_top模块的dma读操作模块识别到某一个分区的写指针产生偏移,即队列中有待发送的数据块号,则一次将指针队列的多个块号对应的优先级的队列的数据传输到fpga的内部;
6.根据权利要求1-5中任意一项所述的基于多分区的fc设备dma通信方法,其特征在于,在接收方向缓存区中配置三个分区以及不同优先级的消息队列;
7.根据权利要求6所述的基于多分区的fc设备dma通信方法,其特征在于,当某分区因未知原因停止处理数据,而fpga链入到该分区的块号个数大于预设的阈值n时,fpga被设置成立即发起中断请求至该停止处理数据的分区,并配置将后续的块号不再链入该分区,直至通过软件将该分区恢复至正常状态。