用于航空专用全双工交换以太网终端系统的方法

文档序号:7813477阅读:226来源:国知局
专利名称:用于航空专用全双工交换以太网终端系统的方法
技术领域
本发明属于计算机应用技术领域,涉及一种用于航空专用全双工交换以太网终端系统的方法,尤其涉及一种用于航空专用全双工交换以太网终端系统(ES)的UDP/IP协议栈的实现方法。
背景技术
随着微电子技术和信息技术的高速发展,航空电子系统结构发生了巨大的变化,对通信网络的性能需求不断提高,机载电子设备的智能化程度也不断提高。新一代的航电系统应该能够为飞行员提供实时决策咨询,对各种目标进行自动分类识别,对各种进攻武器进行实时发射计算、提供目标参数和引导控制等。机载系统资源的共享程度越来越高,航空电子通信网络上传输的不仅仅是命令和状态数据,还有大量的中间结果数据,要求通信网络具有更好的实时性、可靠性和可扩展性。

发明内容
为了解决背景技术中存在的上述技术问题,本发明提供了一种实时性强、可靠程度高以及可扩展的用于航空专用全双工交换以太网终端系统的方法。本发明的技术解决方案是:本发明提供了一种用于航空专用全双工交换以太网终端系统的方法,其特殊之处在于:所述用于航空专用全双工交换以太网终端系统的方法包括以下步骤:I)主机创建与外部实现通信联系的端口 ;所述端口包括SAP端口、队列端口以及采样端口 ;2)主机通过已经建立的端口与外部数据实现交互。上述步骤I)的具体实现方式是:1.1)主机创建通信表;所述通信表包括ES终端配置表、发送SAP端口配置表、接收SAP端口配置表、发送VL端口配置表、接收VL端口配置表、RTC配置表、ICMP配置表、615A配置表以及SNMP端口配置表;1.2)主机通过中断通知ES终端加载由步骤1.1)中主机所创建的通信表;1.3)ES终端根据步骤1.1)中由主机所创建的通信表配置ES终端的物理层以及链路层;1.4)主机根据通信表对端口分配接收与发送存储空间。上述步骤1.2)的具体实现方式是:所述ES终端收到来自主机的加载命令后调用LoadCfg(U32 escfg, U32ESID)函数将主机所创建通信表拷贝到ES本地存储空间。上述步骤1.3)的具体实现方式是:1.3.1)ES终端根据发送配置表中的内容记录发送端口的信息,所述ES终端根据发送配置表中的内容记录发送端口的信息记录在全局二维数组变量SndPortFlag[PortID]中;所述全局 二维数组变量 SndPortFlag [PortID] [2]包括 SndPortFlag [PortID][O] = = O、SndPortFlag[PortID]
= = I 以及 SndPortFlag[PortID] [I]==i ;所述SndPortFlag [PortID]
= = 0表示端口号为PortID的端口没有被创建,所述SndPortFlag [PortID] [O] == I表示端口号为PortID的端口已被创建,所述SndPortFlag[PortID] [I] == i表示该端口在发送端口配置表中的偏移量为i ;1.3.2)ES终端根据接收配置表中的内容记录接收端口的信息,所述ES终端根据接收配置表中的内容记录接收端口的信息记录在全局二维数组变量RcvPortFlag[PortID][2]中;所述全局 二维数组变量 RcvPortFlag [PortID] [2]包括 RcvPortFlag [PortID][O] = = O、RcvPortFlag[PortID] [O] = = I 以及 RcvPortFlag[PortID] [I]==j ;所述RcvPortFlag [PortID] [O] = = O表示端口号为PortID的端口没有被创建,所述RcvPortFlag [PortID] [O] == I表示端口号为PortID的端口已被创建,所述RcvPortFlag[PortID] [I] == j表示该端口在接收端口配置表中的偏移量为j ;1.3.3)ES终端根据发送VL配置表中的内容配置发送VL配置寄存器;ES终端根据接收VL配置表中的内容配置接收VL配置寄存器;1.3.4) ES终端先轮询所有端口,标记所有已被创建的发送端口,标记信息存储在全局数组变量RealCheck口中,所述RealCheck口中记录的内容为端口 ID,当轮询完所有端口后就会在RealCheck[]中记录所有发送端口的信息,然后下次轮询时就只轮询所有已被创建的端口;1.3.5)用ES终端系统根据首尾指针判断端口是否有数据,所述主机维护首指针,ES终端维护尾指针,若没有数据,则首尾指针相等;若有数据,则首尾指针不相等。上述步骤2)的具体实现方式是:2.1)主机构建需要发送的消息并通过ES终端将该消息发送;2.2)由ES终端接收外部消息并将该外部消息写入主机。上述步骤2.1)的具体实现方式是:ES终端在进行发送消息处理时采用全局三维数组变量PortFramNum[PortID] [3]来记录分片信息;所述全局三维数组变量PortFramNum[PortID] [3]包括PortFramNum[][]、PortFramNum[PortID] [O]、PortFramNum[PortID] [I]以及 PortFramNum[PortID] [2];所述PortFramNum[][]的初始值全部为O ;所述PortFramNum[PortID] [O]记录端口号为PortID的端口上消息的分片数;所述PortFramNum[PortID] [I]记录当前处理的是哪一片;所述PortFramNum[PortID] [2]记录该消息的分片标识;若为队列端口,ES终端根据是否分片,是否是第一片以及是否为最后一片设置相应参数,并调用 Convey_From_Host_Queue (U16 Port_ID, U32 Start_Addr, U16 FlagID, U8MoreFlag)函数进行发送处理;若为SAP端口,ES终端根据是否分片,是否是第一片以及是否为最后一片设置相应参数,并调用 Convey_From_Host_Sap (U16 Port_ID, U32 Start_Addr, U16 FlagID, U8MoreFlag)函数进行发送处理;若为米样端口,ES终端调用 Convey_From_Host_Saple (U16 Port_ID, U32Start_Addr, U16 FlagID, U8 MoreFlag)函数进行发送处理。上述步骤2.2)的具体实现方式是:2.2.1)ES终端根据ARINC664 part7进行包头信息的检测,若包头出错,则直接进行抛弃;若包头正确,则根据接收端口配置表检查该端口是否存在;若端口不存在,则直接抛弃;若端口存在,则进行步骤2.2.2);2.2.2)ES终端在接收消息处理时采用全局二维数组RcvIPFlagID[i]
来记录分片信息;所述i表示在接收端口配置表中的偏移量,所述RcvIPFlagID [i] [O]存储的是在接收端口配置表中偏移量为i的端口的ID号,所述RcvIPFlagID[i] [I]存储的是该端口上消息的分片标识;所述采用全局数组变量DataOffsetSign[RcvPortID]记录端口RcvPortID上帧的片偏移;2.2.3) ES 终端根据 MFValue 和 DataOffset 的值决定是否用到 RcvIPFlagID [][]和DataOffsetSign[]上的信息;所述MFValue == I表示后面还有分片;所述MFValue ==O表示这是若干分片中的最后一个;所述DataOfTset用于分片使用,较长的组分片后,各个分片在原分组中的相对位置,片偏移以8字节为偏移单位;若为队列端口作为接收对象,ES终端内部调用RcvMsgFromQue ()函数来接收队列端口消息,根据队列端口信息及包头信息可以得到主机地址以及消息大小,并启动PCI上的DMA将消息及消息大小搬运到主机内存,然后修改尾指针;若为SAP端口作为接收对象,ES终端内部调用RcvMsgFromSAP()函数来接收SAP端口消息,根据SAP端口信息及包头信息可以得到主机地址、消息大小、源IP地址以及源UDP地址,然后启动PCI上的DMA将消息、消息大小、源IP地址以及源UDP地址搬运到主机内存,然后修改尾指针;若为采样端口作为接收对象,ES终端内部调用RcvMsgFromSampling()函数来接收采样端口消息,根据采样端口信息及包头信息可以得到主机地址以及消息大小,然后启动PCI上的DMA将消息、消息大小以及本地RTC值搬运到主机内存,然后修改尾指针。上述ES内部调用RcvIcmpMsg ()函数来处理ICMP消息请求,在应答时将请求消息的源IP地址和目的IP地址相互调换位置,重新做完Checksum后将原消息发送出去。本发明的优点是:本发明提供了一种用于航空专用全双工交换以太网终端系统的方法,该方法关键在于根据AFDX的特殊需求对AFDX中的UDP/IP协议栈进行了设计,并按照UDP/IP协议正确封装和解包,最终实现三类端口与AFDX端系统的数据通信,成功地完成了数据的封装与发送,实现了三类端口与AFDX端系统的数据传输。为高性能的航电网络通信提供有效且可行的解决方案,该技术的研究将为实现大型飞机航空电子通信网络奠定基础。
具体实施例方式本技术中涉及一种用于航空专用全双工交换以太网终端系统(ES)的UDP/IP协议栈的设计和实现。为高性能的航电网络通信提供有效且可行的解决方案,该技术的研究将为实现大型飞机航空电子通信网络奠定基础。(I) ES收到加载命令后调用LoadCfg (U32 escfg, U32 ESID)函数将主机的ES配置表、发送配置表、接收配置表、发送VL配置表、接收VL配置表等拷贝到ES本地存储空间。(2)ES根据发送配置表中的内容记录发送端口的信息,此信息记录在全局二维数组变量 SndPortFlag[PortID] [2]中,SndPortFlag[PortID] [O] = = O 表不端 口号为PortID的端口没有被创建,SndPortFlag[PortID] [O] = = I表示端口号为PortID的端口已被创建,SndPortFlag[PortID] [I] == i表示该端口在发送端口配置表中的偏移量为i。(3)ES根据接收配置表中的内容记录接收端口的信息,此信息记录在全局二维数组变量 RcvPortFlag[PortID] [2]中,RcvPortFlag[PortID] [O] = = O 表不端 口号为PortID的端口没有被创建,RcvPortFlag[PortID] [O] = = I表示端口号为PortID的端口已被创建,RcvPortFlag[PortID] [I] == j表示该端口在接收端口配置表中的偏移量为j。(4) ES根据发送VL配置表中的内容配置发送VL配置寄存器。(5) ES根据接收VL配置表中的内容配置接收VL配置寄存器。(6) ES先轮询所有端口,标记所有已被创建的发送端口,标记信息存储在全局数组变量RealCheck口中,RealCheck口中记录的内容为端口 ID,当轮询完所有端口后就会在RealCheck []中记录所有发送端口的信息,然后下次轮询时就只轮询所有已被创建的端口,这样就可提高处理器的利用率。(7)用首尾指针来判断端口是否有数据,主机只维护首指针,ES只维护尾指针,没有数据的时候首尾指针相等,反之就是有数据。(8)ES在进行发送消息处理时采用全局三维数组变量PortFramNum[PortID] [3]来记录分片信息。PortFramNum[][]的初始值全部为O, PortFramNum[PortID] [O]记录端口号为PortID的端口上消息的分片数,PortFramNum[PortID] [I]记录当前处理的是哪一片,PortFramNum[PortID] [2]记录该消息的分片标识。(9)若为队列端口,ES根据是否分片、是否是第一片、是否为最后一片设置相应参数调用 Convey_From_Host_Queue (U16 Port_ID, U32 Start_Addr, U16FlagID, U8MoreFlag)函数进行发送处理。(10)若为SAP端口,ES根据是否分片、是否是第一片、是否为最后一片设置相应参数调用 Convey_From_Host_Sap (Ul6 Port_ID, U32 Start_Addr, U16FlagID, U8 MoreFlag)函数进行发送处理。(11)若为米样端口,ES 调用 Convey_From_Host_Saple (U16 Port_ID, U32Start_Addr, U16 FlagID, U8 MoreFlag)函数进行发送处理,采样消息只存在一种情况,因为采样不要求进行分片。(12)在进行接收时,ES首先根据ARINC664 part7进行包头信息的检测,若出错则直接进行抛弃,然后根据接收端口配置表检查该端口是否存在,若不存在也直接抛弃,反之进行下一阶段的检查。(13)ES在接收消息处理时采用全局二维数组RcvIPFlagID[i] [O]来记录分片信息,i表示在接收端口配置表中的偏移量,RcvIPFlagID[i] [O]存储的是在接收端口配置表中偏移量为i的端口的ID号,RcvIPFlagID[i] [I]存储的是该端口上消息的分片标识。采用全局数组变量DataOffsetSign[RcvPortID]记录端口 RcvPortID上巾贞的片偏移。(14) ES 根据 MFValue 和 DataOffset 的值决定是否用到 RcvIPFlagID [][]和DataOffsetSign[]上的信息。MFValue = = I表示后面还有分片,MFValue = = O表示这是若干分片中的最后一个,DataOfTset用于分片使用,较长的组分片后,各个分片在原分组中的相对位置,片偏移以8字节为偏移单位。(15) ES内部调用RcvMsgFromQue ()函数来接收队列端口消息,根据端口信息及包头信息可以得到主机地址以及消息大小,然后启动PCI上的DMA将消息及消息大小搬运到主机内存,然后修改尾指针。(16)ES内部调用RcvMsgFromSAP()函数来接收SAP端口消息,根据端口信息及包头信息可以得到主机地址、消息大小、源IP地址以及源UDP地址,然后启动PCI上的DMA将消息、消息大小、源IP地址以及源UDP地址搬运到主机内存,然后修改尾指针。(17)ES内部调用RcvMsgFromSampling()函数来接收采样消息,根据端口信息及包头信息可以得到主机地址以及消息大小,然后启动PCI上的DMA将消息、消息大小以及本地RTC值搬运到主机内存,然后修改尾指针。(18) ES内部调用RcvIcmpMsg ()函数来处理ICMP消息请求,在应答时将请求消息的源IP地址和目的IP地址相互调换位置,重新做完Checksum后将原消息发送出去。
权利要求
1.一种用于航空专用全双工交换以太网终端系统的方法,其特征在于:所述用于航空专用全双工交换以太网终端系统的方法包括以下步骤: 1)主机创建与外部实现通信联系的端口;所述端口包括SAP端口、队列端口以及采样端口 ; 2)主机通过已经建立的端口与外部数据实现交互。
2.根据权利要求1所述的用于航空专用全双工交换以太网终端系统的方法,其特征在于:所述步骤I)的具体实现方式是: 1.1)主机创建通信表;所述通信表包括ES终端配置表、发送SAP端口配置表、接收SAP端口配置表、发送VL端口配置表、接收VL端口配置表、RTC配置表、ICMP配置表、615A配置表以及SNMP端口配置表; 1.2)主机通过中断通知ES终端加载由步骤1.1)中主机所创建的通信表; 1.3)ES终端根据步骤1.1)中由主机所 创建的通信表配置ES终端的物理层以及链路层; 1.4)主机根据通信表对端口分配接收与发送存储空间。
3.根据权利要求2所述的用于航空专用全双工交换以太网终端系统的方法,其特征在于:所述步骤1.2)的具体实现方式是:所述ES终端收到来自主机的加载命令后调用LoadCfg (U32 escfg,U32 ESID)函数将主机所创建通信表拷贝到ES本地存储空间。
4.根据权利要求3所述的用于航空专用全双工交换以太网终端系统的方法,其特征在于:所述步骤1.3)的具体实现方式是: · 1.3.1)ES终端根据发送配置表中的内容记录发送端口的信息,所述ES终端根据发送配置表中的内容记录发送端口的信息记录在全局二维数组变量SndPortFlag [PortID][2]中;所述全局二维数组变量 SndPortFlag [PortID] [2]包括 SndPortFlag [PortID][O] = = O、SndPortFlag[PortID] [O] = = I 以及 SndPortFlag[PortID] [I]==i ;所述SndPortFlag [PortID] [O] = = O表示端口号为PortID的端口没有被创建,所述SndPortFlag [PortID] [O] = = I表示端口号为PortID的端口已被创建,所述SndPortFlag[PortID] [I] == i表示该端口在发送端口配置表中的偏移量为i ; · 1.3.2)ES终端根据接收配置表中的内容记录接收端口的信息,所述ES终端根据接收配置表中的内容记录接收端口的信息记录在全局二维数组变量RcvPortFlag[PortID][2]中;所述全局二维数组变量 RcvPortFlag [PortID] [2]包括 RcvPortFlag [PortID][O] = = O、RcvPortFlag[PortID] [O] = = I 以及 RcvPortFlag[PortID] [I]==j ;所述RcvPortFlag [PortID] [O] = = O表示端口号为PortID的端口没有被创建,所述RcvPortFlag [PortID] [O] == I表示端口号为PortID的端口已被创建,所述RcvPortFlag[PortID] [I] == j表示该端口在接收端口配置表中的偏移量为j ; ·1.3.3) ES终端根据发送VL配置表中的内容配置发送VL配置寄存器;ES终端根据接收VL配置表中的内容配置接收VL配置寄存器; ·1.3.4)ES终端先轮询所有端口,标记所有已被创建的发送端口,标记信息存储在全局数组变量RealCheck口中,所述RealCheck口中记录的内容为端口 ID,当轮询完所有端口后就会在RealCheck []中记录所有发送端口的信息,然后下次轮询时就只轮询所有已被创建的端口 ;.1.3.5)用ES终端系统根据首尾指针判断端口是否有数据,所述主机维护首指针,ES终端维护尾指针,若没有数据,则首尾指针相等;若有数据,则首尾指针不相等。
5.根据权利要求1或2或3或4所述的用于航空专用全双工交换以太网终端系统的方法,其特征在于:所述步骤2)的具体实现方式是: .2.1)主机构建需要发送的消息并通过ES终端将该消息发送; .2.2)由ES终端接收外部消息并将该外部消息写入主机。
6.根据权利要求5所述的用于航空专用全双工交换以太网终端系统的方法,其特征在于:所述步骤2.1)的具体实现方式是: ES终端在进行发送消息处理时采用全局三维数组变量PortFramNum[PortID] [3]来记录分片信息;所述全局三维数组变量PortFramNum[PortID] [3]包括PortFramNum[][]、PortFramNum[PortID] [O] > PortFramNum[PortID] [I]以及 PortFramNum[PortID] [2];所述PortFramNum[][]的初始值全部为 O ;所述 PortFramNum[PortID] [O]记录端口号为 PortID的端口上消息的分片数;所述PortFramNum[PortID] [I]记录当前处理的是哪一片;所述PortFramNum[PortID] [2]记录该消息的分片标识; 若为队列端口,ES终端根据是否分片,是否是第一片以及是否为最后一片设置相应参数,并调用 Convey_From_Host_Queue (U16 Port_ID, U32 Start_Addr, U16 FlagID, U8MoreFlag)函数进行发送处理; 若为SAP端口,ES终端根据是否分片,是否是第一片以及是否为最后一片设置相应参数,并调用 Convey_From_Host_Sap (U16 Port_ID, U32 Start_Addr, U16 FlagID, U8MoreFlag)函数进行发送处理; 若为米样端口,ES 终端调用 Convey_From_Host_Saple (U16 Port_ID, U32Start_Addr,U16 FlagID, U8 MoreFlag)函数进行发送处理。
7.根据权利要求6所述的用于航空专用全双工交换以太网终端系统的方法,其特征在于:所述步骤2.2)的具体实现方式是: .2.2.1) ES终端根据ARINC664 part7进行包头信息的检测,若包头出错,则直接进行抛弃;若包头正确,则根据接收端口配置表检查该端口是否存在;若端口不存在,则直接抛弃;若端口存在,则进行步骤2.2.2); .2.2.2) ES终端在接收消息处理时采用全局二维数组RcvIPFlagID [i] [O]来记录分片信息;所述i表示在接收端口配置表中的偏移量,所述RcvIPFlagID [i] [O]存储的是在接收端口配置表中偏移量为i的端口的ID号,所述RcvIPFlagID [i] [I]存储的是该端口上消息的分片标识;所述采用全局数组变量DataOffsetSign [RcvPortID]记录端口 RcvPortID上帧的片偏移; .2.2.3)ES终端根据MFValue和DataOffset的值决定是否用到RcvIPFlagID[][]和DataOffsetSign[]上的信息;所述MFValue == I表示后面还有分片;所述MFValue ==O表示这是若干分片中的最后一个;所述DataOfTset用于分片使用,较长的组分片后,各个分片在原分组中的相对位置,片偏移以8字节为偏移单位; 若为队列端口作为接收对象,ES终端内部调用RcvMsgFromQue()函数来接收队列端口消息,根据队列端口信息及包头信息可以得到主机地址以及消息大小,并启动PCI上的DMA将消息及消息大小搬运到主机内存,然后修改尾指针;若为SAP端口作为接收对象,ES终端内部调用RcvMsgFromSAP()函数来接收SAP端口消息,根据SAP端口信息及包头信息可以得到主机地址、消息大小、源IP地址以及源UDP地址,然后启动PCI上的DMA将消息、消息大小、源IP地址以及源UDP地址搬运到主机内存,然后修改尾指针; 若为采样端口作为接收对象,ES终端内部调用RevMsgFromSampIing()函数来接收采样端口消息,根据采样端口信息及包头信息可以得到主机地址以及消息大小,然后启动PCI上的DMA将消息、消息大小以及本地RTC值搬运到主机内存,然后修改尾指针。
8.根据权利要求7所述的用于航空专用全双工交换以太网终端系统的方法,其特征在于:所述ES内部调用RCVICmpMsg()函数来处理ICMP消息请求,在应答时将请求消息的源IP地址和目的IP地址相互调换位置,重新做完Checksum后将原消息发送出去。
全文摘要
本发明涉及一种用于航空专用全双工交换以太网终端系统(ES)的UDP/IP协议栈的实现方法,该方法包括以下步骤1)主机创建与外部实现通信联系的端口;所述端口包括SAP端口、队列端口以及采样端口;2)主机通过已经建立的端口与外部数据实现交互。本发明提供了一种实时性强、可靠程度高以及可扩展的用于航空专用全双工交换以太网终端系统的方法。
文档编号H04L12/70GK103139061SQ201110376280
公开日2013年6月5日 申请日期2011年11月23日 优先权日2011年11月23日
发明者田泽, 夏大鹏, 张荣华, 杨峰, 郭蒙, 李攀, 王泉, 廖寅龙, 赵彬, 刘娟 申请人:中国航空工业集团公司第六三一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1