《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > AFDX网络端系统数据接收方法研究与实现
AFDX网络端系统数据接收方法研究与实现
来源:微型机与应用2013年第21期
刘智武,白 杨,何向栋
(中国航空计算技术研究所,陕西 西安 710119)
摘要: AFDX网络端系统实现符合ARINC664P7协议的网络数据的传输功能,在AFDX网络端系统数据接收方面,总结了AFDX网络数据的特点,分析了查询接收方式和中断接收方式各自的不足,设计并实现了一种基于查询和中断的混合式数据接收方法。该方法在保证查询接收方式高效的前提下,有效降低了对主机系统处理器资源的占用,并解决了中断接收方式引起的丢包问题。
Abstract:
Key words :

摘  要: AFDX网络端系统实现符合ARINC664P7协议的网络数据的传输功能,在AFDX网络端系统数据接收方面,总结了AFDX网络数据的特点,分析了查询接收方式和中断接收方式各自的不足,设计并实现了一种基于查询和中断的混合式数据接收方法。该方法在保证查询接收方式高效的前提下,有效降低了对主机系统处理器资源的占用,并解决了中断接收方式引起的丢包问题。
关键词: AFDX端系统;数据接收方法;查询;中断

 AFDX网络端系统实现符合ARINC664P7协议标准的数据传输接口功能,支持主机系统接入AFDX网络。一般情况下,AFDX网络端系统以接口卡的形式与主机系统连接,并支持主机系统发送和接收AFDX网络数据。数据的接收一般在主机系统端通过软件完成,主机端软件通过查询或者中断的方式接收网络数据。采用查询的方式增加了主机系统的负载;中断的方式降低了系统的负载,但是频繁的数据接收中断会存在中断嵌套及覆盖的情况,导致中断的丢失现象,引起数据丢包的问题。针对这些问题,本文提出了一种中断和查询结合的数据接收方法,减轻主机系统负载的同时,避免了由于中断丢失而引起的数据丢包问题。
1 AFDX网络端系统通信分析
 AFDX网络在以太网的基础上发展而来,在以太网的基础上增加了确定性及双通道的约束,提高了数据传输的可靠性,保证了数据传输的确定性。在以AFDX网络为核心的机载网络中,网络端系统作为网络接口卡,将各个主机系统连接至核心网络,其主要作用[1]如下。
 (1)实现基于IEEE 802.3协议标准的物理层;
 (2)实现基于虚拟链路VL的通信调度功能;
 (3)实现ICMP协议、UDP/IP通信协议栈;
 (4)面向主机系统提供采样、周期及SAP通信端口服务。
1.1 网络端系统架构
 标准的AFDX网络系统采用双冗余的设计,采用星形的结构,其基本架构[2]如图1所示。

 图1描述了3个主机系统构成的双余度AFDX网络交换网络结构,通过两台互为备份的交换机实现了双路冗余数据的传输,即使端系统模块单个端口或者某个交换机出现故障,仍可以由另外一个端口通过交换机进行数据的传输,保证网络数据的可靠性。在图1中,网络端系统安装在主机模块,构成主机系统,支持主机系统的AFDX网络通信,端系统模块与主机模块一般采用PCI总线,利用PMC接口实现主机模块与端系统模块的交互,端系统和主机模块架构如图2所示。

 图2中,端系统通过PCI接口与主机模块连接,和主机模块一起构成一个主机系统,通过双通道CHA和CHB与外部AFDX网络交互。采用图2的方式,端系统模块负责进行AFDX网络数据的处理,包括数据的接收、有效性检查、UDP/IP协议栈处理、数据解包等工作,直接将有效的数据内容传送至主机模块。主机模块只需从相应的存储器进行数据读操作即可完成数据接收,而不用进行大运算量的AFDX网络协议处理工作,减少了主机模块的运行负载。
1.2 AFDX网络数据分类及其接收方式分析
 AFDX网络数据分为采样数据、队列数据及SAP数据3种。其中,采样数据为周期性数据,数据以一定的周期进行传输,数据接收缓冲区采用覆盖的方式,新数据到来将会覆盖旧数据,采样数据适用于周期性的状态消息,且应用仅关心最近一次采样数据。队列数据为事件性数据,数据的到来没有特定的规律,以随机的形式进行传输,因此,队列数据需要一定深度的数据缓冲区,用于对接收到的数据进行缓存,而当缓冲区满后,新来的数据被丢弃,队列数据适用于事件性的消息传输。AFDX网络SAP数据主要用于高层协议,支持目的IP及端口号的设定等功能,一般不用于普通的AFDX网络数据通信。
 数据的接收一般分为查询方式和中断方式两种。查询方式具备实现简单、数据吞吐量较快的优势,但查询方式在无数据传输时仍在进行查询操作,因此,查询方式增加了处理器的负担,对于任务较重的主机系统,不适合用查询方式进行数据接收。采用中断的方式,数据接收可大大减轻处理器的负担,仅当有数据时,处理器才参与数据接收,但当数据量较大时,会引起频繁的中断。由于中断嵌套及覆盖等原因,会存在中断丢失或响应不及时的情况,导致数据的丢失或顺序错乱。
 对于AFDX网络基本通信,包括采样数据通信和队列数据通信两种。采样数据本身具有周期性的特点,因此,在主机模块接收可以采用查询的方式,主机模块以定时器的方式按照采样数据的周期每隔一定的时间进行数据接收即可,不会造成主机模块的无效查询和处理器资源的浪费。而对于队列数据,其具有不可预知的特点,因此,对于数据量较大的数据传输,采用查询方式进行接收能够提高数据接收的效率,而对于数据量较小的数据传输,采用中断的方式可以节省处理器资源,降低主机系统的负载。而在实际应用中,由于其数据传输的不可预知性,对于队列数据,单独采用查询方式或者中断方式无法满足既降低主机负载又提高接收效率的数据接收要求。
2 端系统接收方法设计
 针对AFDX网络端系统队列数据的特点,为了满足既降低主机负载又提高接收效率的要求,本文提出一种将中断和查询结合起来的方式,在无数据传输时,不消耗主机处理器资源,在数据传输量较大时,以查询的方式进行接收从而提高数据接收效率。
 本文端系统接收方法核心思想是:通过中断通知主机接收数据,而在数据接收时通过查询方式进行。端系统接收方法设计如图3所示。

 图3(a)为端系统模块的数据接收流程,图3(b)为主机模块数据接收流程。在端系统模块,当从网络上接收到数据时,首先进行数据的正确性校验,当数据校验无误时,将数据中的UDP/IP协议头及校验等信息去除,进行解包处理,获取到有效数据,并通过DMA的方式将有效数据传送至主机模块内存中,检测数据的类型,当为队列数据时,触发主机PCI中断信号,通知主机进行数据接收。在主机模块,当有中断信号发生时,获取数据端口号,进行数据接收,当完成一次数据接收后,继续查看数据接收队列是否为空,如果不为空,继续接收数据,直至数据接收队列为空。
 图3中在主机模块进行数据接收时,需要查询接收队列,接收队列存放了端系统模块接收到的消息的端口号信息,接收队列存放在端系统模块上,通过PCI地址映射,在主机模块上可以访问。
消息接收队列缓冲区如图4所示。在端系统模块上,消息接收队列缓冲区以循环双口RAM形式进行维护,提供读指针PR给主机模块,提供写指针PW给端系统模块。当端系统接收到数据时,通过PW指针将接收到数据的端口号信息写至消息接收队列,然后PW指针加1;当PW指针超过缓冲区长度时,PW指针重新指向缓冲区对头第一个缓冲区。当主机模块接收到中断信号后,通过PR指针依次从消息队列中取出端口号信息,并进行数据接收,直至消息队列中无数据。即PR和PW相等时,PR指针每取出一个端口号进行加1操作,当超过缓冲区长度时,PR指针重新指向缓冲区对头的第一个缓冲区。

 采用图3的数据接收流程和图4所示端系统消息接收队列,将中断方式和查询方式结合起来。一方面,一次中断就可以将接收队列中的数据全部接收,即中断后采用查询方式将接收队列中的数据全部接收,提高接收效率;另一方面,当无数据时,主机模块不进行接收的任何操作,不用增加主机负载。同时,当出现丢中断的情况时,不会出现数据丢失的问题,数据会在上一次中断或下一次中断时通过查询的方式被接收。
3 端系统接收方法实现
 端系统模块实现了AFDX网络功能,向主机模块提供了数据接收的API接口。在端系统接收方法的实现上,一方面需要在主机模块上维护消息接收的中断处理函数;另一方面,需要设计阻塞式接收的API接口,提供给主机应用使用。
 软件设计上利用信号量机制[3]来实现端系统的数据接收功能。在主机模块初始化时,建立信号量,当有数据接收中断发生时,在中断函数中,首先通过semGive函数释放信号量,然后进行清中断操作。主机模块数据接收API函数设计如图5所示。

 如图5所示,数据接收API函数在运行时,首先判断接收标识是否为0,如果接收标志为0,表明无中断通知主机有数据,通过semTake函数进入阻塞状态;如果接收标志不为0,表明已经有中断通知主机有数据,且接收队列不为空,则直接从接收队列中获取接收端口号,进行数据接收。当在中断处理函数中通过semGive释放信号量后,主机模块接收API获取到信号量,首先将接收标志置1,然后遍历接收队列,将接收队列中端口号信息的数据接收完成之后,将接收标志置0,完成一次中断接收过程。

 


 主模块数据接收API函数采用阻塞接收的方式,当没有信号量且接收标志为0时,API函数处于阻塞状态,不占用主机模块的处理器资源,而仅当有接收中断发生时,才占用处理器资源进行数据接收。
 本文总结了AFDX网络端系统数据接收方式及利用中断和查询方式进行数据接收的不足,设计了一种将中断和查询两种方式混合在一起的数据接收方式,并对其进行了软件实现。通过这种方式,很好地解决了AFDX网络数据查询接收方式主机负载重的问题,也解决了AFDX网络中断接收方式丢包的问题,在保证数据高效接收的同时,降低了处理处理器资源的占用,在AFDX网络端系统工程实践中得到了很好的应用。
参考文献
[1] 664P7-1, Aircraft data network part7: avionics full duplex switched ethernet network[S].
[2] 赵永库,李贞,唐来胜.AFDX网络协议研究[J].计算机测量与控制,2011,19(12):3137-3142.
[3] 张杨,于银涛.VxWorks内核、设备驱动与BSP开发详解[M].北京:人民邮电出版社,2009.

此内容为AET网站原创,未经授权禁止转载。