CN102035822A - 航电asm协议控制器及控制方法 - Google Patents
航电asm协议控制器及控制方法 Download PDFInfo
- Publication number
- CN102035822A CN102035822A CN2010102416649A CN201010241664A CN102035822A CN 102035822 A CN102035822 A CN 102035822A CN 2010102416649 A CN2010102416649 A CN 2010102416649A CN 201010241664 A CN201010241664 A CN 201010241664A CN 102035822 A CN102035822 A CN 102035822A
- Authority
- CN
- China
- Prior art keywords
- message
- burst
- queue
- asm
- head
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种航电ASM协议控制方法及其控制器,该方法包括发送步骤,所述发送步骤包括:1)获取消息队列的控制属性,消息的控制属性包括消息ID、消息类型、计数周期、队列基地址QueueBase、队列深度QueueLen、头指针Head、最大消息长度MsgMaxLen、尾指针Tail、目标地址DID以及发送分片计数Send Cnt;消息类型是紧急消息、周期消息或事件消息;2)根据消息队列的控制属性选取需要发送的消息队列;3)根据步骤2)所选取的消息队列找到消息内容,并进行分片;4)将步骤3)所得到的消息的分片进行封装,并提交发送。本发明提供了一种传输效率高、通信开销小以及调度确定的航电ASM协议控制器及控制方法。
Description
技术领域
本发明属于计算机控制领域,尤其涉及一种航电ASM协议控制器及控制方法。
背景技术
新一代军用飞机航电系统选用以光纤通道FC作为机载统一网络,单节点传输速率为2Gb/s,用于传输消息、数据、图像等信息。ASM是基于FC网络高层通信协议,具有确定性、安全性、低延时性的特点,主要用于航电系统主干通信网络。ASM通信协议一般采用主机软件处理,占用大量的CPU处理资源、协议处理开销大。通信协议处理时间远远超过数据帧的传输时间,通信接口效率低、传输延迟大,难以发挥光纤通道高速传输优势,也无法满足航电系统通信确定性传输要求。
发明内容
为了解决背景技术中存在的上述技术问题,本发明提供了一种传输效率高、通信开销小以及调度确定的航电ASM协议控制器及控制方法。
本发明的技术解决方案是:本发明提供了一种航电ASM协议控制方法,其特殊之处在于:所述航电ASM协议控制方法包括发送步骤,所述发送步骤包括:
1)获取消息队列的控制属性,所述消息的控制属性包括消息ID、消息类型、计数周期、队列基地址QueueBase、队列深度QueueLen、头指针Head、最大消息长度MsgMaxLen、尾指针Tail、目标地址DID以及发送分片计数Send_Cnt;所述消息类型是紧急消息、周期消息或事件消息;
2)根据消息队列的控制属性选取需要发送的消息队列;
3)根据步骤2)所选取的消息队列找到消息内容,并进行分片;
4)将步骤3)所得到的消息的分片进行封装,并提交发送。
上述航电ASM协议控制方法还包括接收步骤,所述接收步骤包括:
6)获取消息分片;
7)将消息分片组织成消息并存储于对应的接收消息队列。
上述步骤2)的具体实现方式是:
2.1)根据消息队列的控制属性判断是否具备调度条件的消息队列,如果具备调度条件,则进行步骤2.2);如果不具备调度条件,则进行步骤1);
2.2)根据调度策略选取1个需要发送的消息队列。
上述步骤2.1)的具体实现方式是:
根据消息类型、头指针Head、尾指针Tail以及计数周期判断是否具备调度条件,其判断方式是:
如果消息类型为紧急消息且头指针Head和尾指针Tail不相同,则具备调度条件,否则不具备调度条件;
如果消息类型为周期消息,头指针Head和尾指针Tail不相同且计数周期到0,则具备调度条件,否则不具备调度条件;
如果消息类型为事件消息且头指针Head和尾指针Tail不相同,则具备调度条件,否则不具备调度条件。
上述步骤2.2)的具体实现方式是:
2.2.1)根据消息类型将具备调度条件的消息队列分组;所述分组包括紧急消息队列组、周期消息队列组以及事件消息队列组;
2.2.2)对于同组的消息队列,采用组内循环优先级公平调度,并选取组内需要发送的消息队列;
2.2.3)对于不同组的消息队列,按照紧急消息队列组、周期性消息队列组、事件队列组的顺序调度。
上述步骤3)的具体实现方式是:
3.1)获取消息的地址,其具体实现方式是:通过消息队列基地址QueueBase、头指针Head,消息最大长度MsgMaxLen,计算消息的地址,计算消息的基地址的公式是:
消息的地址MsgAddr=消息队列基地址QueueBase+头指针Head×消息最大长度MsgMaxLen;
3.2)读取消息长度,消息地址所指位置的前4字节为消息长度,读取消息长 度信息CurMsgLen;
3.3)判断消息的长度是否超过ASM协议中所规定的数据域最大有效长度,如果超过,则对该消息进行分片;如果没有超过,则直接进行步骤4)。
上述步骤3.3)的具体实现方式是:获取分片计数Send_Cnt,当消息长度信息CurMsgLen-(分片计数Send Cnt+1)×2096>0,表示该分片为中间分片,否则该分片为最后一个分片;当分片为中间分片时,则分片长度取值为2096;当为最后分片时,则分片长度为消息长度信息CurMsgLen-分片计数Send_Cnt×2096。
上述步骤4)的具体实现方式是:根据消息队列的控制属性中的消息ID、分片计数Send_Cnt、目标地址DID构造ASM消息数据帧的帧头和帧尾信息以及ASM帧头,读取消息分片内容,填充到数据帧数据域中,形成完整的ASM数据帧提交光纤通道链路层发送。
上述步骤4)之后还包括步骤5):将所述步骤4)中发送消息队列的队头指针Head值更改为(Head+1)%QueueLen。
上述步骤6)的具体实现方式是:
6.1)获取数据帧;
6.2)对获取的数据帧进行解析,其具体实现方式是:解析消息帧头、帧尾信息,获取该消息分片的消息ID、消息分片计数Frame_Cnt、分片内容以及最后分片标识。
上述步骤7)的具体实现方式是:
7.1)获取接收消息队列:通过消息分片的消息ID,查找消息ID与接收消息队列的映射表,找到对应的接收消息队列,获取接收消息队列控制属性,所述接收消息队列属性包括消息ID、队列基地址QueueBase、队列深度QueueLen、队头指针Head、队尾指针Tail、最大消息长度MsgMaxLen以及接收分片计数Recv_Cnt;
7.2)比较分片数据帧中的接收分片计数Frame_Cnt与接收消息队列接收分片计数Recv_Cnt,判断分片顺序是否正确,如果Frame_Cnt!=0,并且Frame_Cnt!=RecvCnt,则表示消息顺序错,丢弃分片数据帧;如果消息顺序正确,则进行步骤7.3);
7.3)根据接收消息队列控制属性以及消息分片计数Frame_Cnt计算分片存储 地址,所述计算方式是:
队列基地址QueueBase+队尾指针Tail×最大消息长度MsgMaxLen+消息分片计数Frame Cnt×2096;
7.4)将步骤6.2)所得到的分片内容写入步骤7.3)所得到的分片存储地址中,并将该消息对应的接收分片计数Recv_Cnt加1。
上述步骤7)之后还包括:
8)根据步骤6.2)获取的最后分片标识,如果是最后一片分片时,调整接收消息队列的尾指针Tail,将尾指针Tail更改为(尾指针Tail+1)%QueueLen,并将RecvCnt置0。
一种基于航电ASM协议控制方法的航电ASM协议控制器,其特殊之处在于:所述航电ASM协议控制器包括发送部分以及接收部分;
所述发送部分包括:
用于获取发送消息的相关信息的发送消息队列控制寄存器模块,所述发送消息队列控制寄存器模块包括消息队列基地址QueueBase、队列深度QueueLen,头指针Head和尾指针Tail,消息最大长度MsgMaxLen;
用于将消息的相关信息选取具备调度条件的消息队列的消息调度控制寄存器模块,所述消息调度控制寄存器模块包括消息类型MsgType,计数周期Period;
用于将选取具备调度条件的消息队列进行发送调度的发送调度模块;
用于将所选取的消息队列进行分片的协议分片控制寄存器模块,所述协议分片控制寄存器模块包括发送数据帧计数寄存器SendCnt和接收数据帧计数寄存器RecvCnt;以及,
用于将得到的消息的分片进行封装并提交发送的协议封装的控制模块,所述协议封装的控制模块包括发送消息ID、目标地址、发送分片控制寄存器、协议封装控制逻辑;
所述发送消息队列控制寄存器模块、消息调度控制寄存器模块、发送调度模块、协议分片控制寄存器模块以及协议封装的控制模块依次连接;
所述接收部分包括:
用于将消息分片进行解析的协议解析的控制模块,所述协议解析的控制模块包括接收消息ID与消息队列映射表,接收分片信息,协议解析控制逻辑;以 及,
用于将消息分片组织成消息的接收消息队列控制寄存器模块;
所述协议解析的控制模块和接收消息队列控制寄存器模块依次连接。
本发明的优点是:
1、传输效率高。本发明采用纯硬件实现ASM协议处理和通信调度可满足实时控制应用领域的需要。本发明采用硬件电路实现ASM协议帧封装与解析,协议处理小于消息的传输时间,数据通信能够达到线速处理要求,传输效率高。
2、通信开销小。本发明所说的通信过程主要是由主机在本地存储器读取和写入消息内容,不必进行额外协议处理,主机通信开销小。
3、调度确定性。本发明对每个消息分配独立队列消息队列,采用硬件逻辑按照消息类型进行调度,调度具有很好的确定性。
4、延迟确定性。本发明所提及的周期性消息队列采用独立的计数器进行周期控制,保证周期性任务传输确定性。
附图说明
图1为本发明所提供的航电ASM协议控制器的结构框图。
具体实施方式
本发明提供了一种航电ASM协议控制方法,该方法包括发送步骤,参见表1,发送步骤包括:系统初始化时,主机按照通信配置的要求,配置各发送消息队列和各接收消息队列的控制属性,分配消息队列地址,为每组消息建立一个环形队列。
一种航电ASM协议控制方法,所述航电ASM协议控制方法包括发送步骤,所述发送步骤包括:
1)获取消息队列的控制属性,所述消息的控制属性包括消息ID、消息类型、计数周期、队列基地址QueueBase、队列深度QueueLen、头指针Head、最大消息长度MsgMaxLen、尾指针Tail、目标地址DID以及发送分片计数Send_Cnt;所述消息类型是紧急消息、周期消息或事件消息以及计数周期Period;
2)根据消息队列的控制属性选取需要发送的消息队列;
2.1)根据消息队列的控制属性判断是否具备调度条件的消息队列,如果具备调度条件,则进行步骤2.2);如果不具备调度条件,则进行步骤1);其具体实 现方式是:
根据消息类型、头指针Head、尾指针Tail以及计数周期判断是否具备调度条件,其判断方式是:
如果消息类型为紧急消息且头指针Head和尾指针Tail不相同,则具备调度条件,否则不具备调度条件;
如果消息类型为周期消息,头指针Head和尾指针Tail不相同且计数周期到0,则具备调度条件,否则不具备调度条件;
如果消息类型为事件消息且头指针Head和尾指针Tail不相同,则具备调度条件,否则不具备调度条件。
2.2)根据调度策略选取1个需要发送的消息队列。其具体实现方式是:
2.2.1)根据消息类型将具备调度条件的消息队列分组;所述分组包括紧急消息队列组、周期消息队列组以及事件消息队列组;
2.2.2)对于同组的消息队列,采用组内循环优先级公平调度,并选取组内需要发送的消息队列;
2.2.3)对于不同组的消息队列,按照紧急消息队列组、周期性消息队列组、事件队列组的先后顺序调度。
3)根据步骤2)所选取的消息队列找到消息内容,并进行分片;其具体实现方式是:
3.1)获取消息的地址,其具体实现方式是:通过消息队列基地址QueueBase、头指针Head,消息最大长度MsgMaxLen,计算消息的地址,计算消息的地址的公式是:
消息的地址MsgAddr=消息队列基地址QueueBase+头指针Head×消息最大长度MsgMaxLen;
3.2)读取消息队列长度,消息的地址所指位置的前4字节为消息长度,读取消息长度信息CurMsgLen;
3.3)判断消息队列长度是否超过ASM协议中所规定的数据域最大有效长度,如果超过,则对该消息队列进行分片;如果没有超过,则直接进行步骤4),其分片的具体实现方式是:获取分片计数Send_Cnt,当消息长度信息CurMsgLen-(分片计数Send_Cnt+1)×2096>0,表示分片为中间分片,否则为最后 一个分片;当分片为中间分片时,则分片长度为2096;当为最后分片时,则分片长度为消息长度信息CurMsgLen-分片计数Send_Cnt×2096。
4)将步骤3)所得到的消息的分片进行封装,并提交发送,其具体实现方式是:根据消息队列的控制属性中的消息ID、分片计数Send_Cnt、目标地址DID构造ASM消息数据帧的帧头和帧尾信息以及ASM帧头,读取消息分片内容,填充到数据帧数据域中,形成完整的ASM数据帧提交光纤通道链路层发送。
在步骤4)之后还包括:
5)将所述步骤4)中发送消息队列的队头指针Head值更改为(Head+1)%QueueLen。
航电ASM协议控制方法还包括接收步骤,所述接收步骤包括:
6)获取消息分片;其具体实现方式是:
6.1)获取数据帧;
6.2)对获取的数据帧进行解析,其具体实现方式是:解析消息帧头、帧尾信息,获取该消息分片的消息ID、消息分片计数Frame_Cnt、分片内容以及最后分片标识。
7)将消息分片组织成消息并存储于对应的接收消息队列。其具体实现方式是:
7.1)获取接收消息队列:通过消息分片的消息ID,查找消息ID与接收消息队列的映射表,找到对应的接收消息队列,获取接收消息队列控制属性,所述接收消息队列属性包括消息ID、队列基地址QueueBase、队列深度QueueLen、队头指针Head、队尾指针Tail、最大消息长度MsgMaxLen以及接收分片计数Recv_Cnt;
7.2)比较分片数据帧中的接收分片计数Frame_Cnt与接收消息队列接收分片计数Recv_Cnt,判断分片顺序是否正确,如果Frame_Cnt!=0,并且Frame_Cnt!=RecvCnt,则表示消息顺序错,丢弃分片数据帧;如果消息顺序正确,则进行步骤7.3);
7.3)根据接收消息队列控制属性以及消息分片计数Frame_Cnt计算分片存储地址,所述计算方式是:
队列基地址QueueBase+队尾指针Tail×最大消息长度MsgMaxLen+消息分片 计数Frame_Cnt×2096;
7.4)将步骤6.2)所得到的分片内容写入步骤7.3)所得到的分片存储地址中,,并该消息对应的接收分片计数Recv_Cnt加1。
步骤7)之后还包括:
8)根据步骤6.2)获取的最后分片标识,如果是最后一片分片时,调整接收消息队列的尾指针Tail,将尾指针Tail更改为(尾指针Tail+1)%QueueLen。
帧是光纤通道中传输的最小的数据单元,ASM协议帧格式包括帧起始界定符(Start of Frame,简称SOF)、帧头(Header)、消息头(Message Head)、数据段(Payload)、循环冗余校验(Cyclic Redundancy Check,简称CRC)和帧结束界定符(End of Frame,简称EOF)这几部分。帧起始界定符表示一个帧的开始,它由4个特定的字节组合而成。因为在光纤通道协议中规定了多种服务级别,所以也有多种帧头,表明该帧是以何种服务级别传输的。
ASM协议帧头由16个字节组成:包括消息ID、安全信息标识、消息优先级、消息长度等信息。
数据段只包含要传送的数据,没有命令或者其它的控制信息。数据段的长度可以在0~2096个字节之间变化,但是增加或者减少的字节数必需是4的倍数,因为光纤通道协议中的最小数据单元——传输字为4个字节。
循环冗余校验是对报头和数据段进行计算,得出4个字节的冗余校验数据,用于检测传输过程中发生的错误。光纤通道的循环冗余校验使用的是CRC-32的编码方式,其生成多项式为:
X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1
帧结束界定符由4个字节组成,表示一帧的结束。和帧头类似,帧尾也有多种形式,用于表明不同的结束方式,例如:正常结束、非正常结束、结束后断开连接等。
从队列中读取消息分片的内容和消息的属性,按照数据帧格式的定义填充数据帧的帧起始界定符、帧头、消息头、数据段、循环冗余校验和帧结束界定符等内容,将消息分片组织成一个ASM协议数据帧。
参见图1,一种航电ASM协议控制器,该航电ASM协议控制器包括发送部分以及接收部分;ASM协议控制器是基于光纤通道链路层之上,采用专用硬件电 路实现ASM协议处理和消息确定性调度。
发送部分包括:
发送消息队列控制寄存器模块,发送消息队列控制寄存器模块包括消息队列基地址QueueBase、队列深度QueueLen,头指针Head和尾指针Tail,消息最大长度MsgMaxLen;
消息调度控制寄存器模块,消息调度控制寄存器模块包括消息类型MsgType,消息调度周期Period;
发送调度模块;
协议分片控制寄存器模块,协议分片控制寄存器模块包括发送数据帧计数寄存器SendCnt和接收数据帧计数寄存器RecvCnt;以及,
协议封装的控制模块,协议封装的控制模块包括发送消息ID、目标地址、发送分片控制寄存器、协议封装控制逻辑;
发送消息队列控制寄存器模块、消息调度控制寄存器模块、发送调度模块、协议分片控制寄存器模块以及协议封装的控制模块依次连接;
接收部分包括:
协议解析的控制模块,协议解析的控制模块包括接收消息ID与消息队列映射表,接收分片信息,协议解析控制逻辑;以及,
接收消息队列控制寄存器模块;
协议解析的控制模块和接收消息队列控制寄存器模块依次连接。
航电协议控制器包括发送队列控制,接收队列控制、发送调度控制、ASM协议封装、ASM协议解析等几部分组成。具体实现方式如下:
1、发送队列控制:
在通信之前,主机根据发送通信表分配消息队列存储区域,每个消息队列存储区域由多个缓冲区构成,逻辑上构成一个环形队列,每个缓冲区可存放一个最大长度的消息。
主机与协议控制器之间的信息交互采用环形队列管理方式,每个发送消息队列对应一组控制信息包括:消息队列基地址QueueBase、队头指针Head,消息最大长度MsgMaxLen等信息。主机负责维护队尾指针,协议控制器负责维护队头指针。
主机写入消息的过程如下:
a.读取发送消息队列指针Tail和Head;
b.判断队列是否满?如果队列满,则退出,队列满的条件为:(Tail+1)%QueueLen=Head;
c.根据Tail和消息队列基地址,计算消息的地址;
d.将消息内容写入到消息队列中;
e.将队尾指针Tail值更改为(Tail+1)%QueueLen,写回队尾指针寄存器;
f.返回。
ASM协议控制器读取消息的过程如下:
a.读取发送消息队列指针Tail和Head;
b.判断队列是否空?如果队列空,则退出,队列为空的条件为:Tail=Head;
c.根据Head和消息队列基地址,计算消息的地址;
d.从消息队列读取消息内容;
e.将队头指针Head值更改为(Head+1)%QueueLen,写回队头指针寄存器;
f.返回。
2、接收队列控制:
在通信之前,主机根据接收通信表分配消息队列存储区域,每个消息队列存储区域由多个缓冲区构成,逻辑上构成一个环形队列,每个缓冲区可存放一个最大长度的消息。
主机与协议控制器之间的信息交互采用环形队列管理方式,每个接收消息队列对应一组控制信息包括:消息队列基地址QueueBase、队头指针Head,消息最大长度MsgMaxLen等信息。协议控制器负责维护队尾指针,主机负责维护队头指针。
协议控制器写入消息的过程如下:
a.读取发送消息队列指针Tail和Head;
b.判断队列是否满?如果队列满,则退出,队列满的条件为:(Tail+1)%QueueLen=Head;
c.根据Tail和消息队列基地址,计算消息内容的地址;
d.将消息内容写入到消息队列中;
e.将队尾指针Tail值更改为(Tail+1)%QueueLen,写回队尾指针寄存器;
f.返回。
主机读取消息的过程如下:
a.读取发送消息队列指针Tail和Head;
b.判断队列是否空?如果队列空,则退出,队列为空的条件为:Tail=Head;
c.根据Head和消息队列基地址,计算消息的地址;
d.从消息队列读取消息内容;
e.将队头指针Head值更改为(Head+1)%QueueLen,写回队头指针寄存器;
f.返回。
3、发送调度控制:
ASM协议控制发送调度要求满足航电应用中紧急消息、周期消息、事件消息等通信要求。
每个发送消息队列对应一组通信调度相关的控制信息,包括消息类型MsgType,发送周期计数器Period;发送周期计数器的精度为1us,32位宽。典型设置范围为:0.5ms、1ms、2ms......128ms,256ms,512ms,1024ms。计数器支持设置、复位和使能。
发送调度控制按照紧急消息、周期消息和事件消息的先后顺序进行调度,消息队列具备调度条件的要求如下:
a.消息队列类型为紧急消息和事件消息,消息队列有消息;
b.消息队列类型为周期消息,消息队列有消息,并且周期计数器计数到0。
通信调度器分为两级调度:组内调度和组间调度,将消息队列中的紧急消息、周期消息和事件消息分别分一组,组内调度采用公平轮转调度策略,从同一类型的消息队列选取具备条件的发送消息队列,组间调度按照紧急消息、周期消息和事件消息优先级顺序进行调度。
4、ASM协议封装:
每个发送消息队列对应一组协议封装相关的控制信息,包括消息ID、目标地址DID、发送分片计数Send_Cnt,ASM协议控制器按照这些控制信息,将消息封装成光纤通道ASM数据帧。
ASM协议封装过程如下:
a.获取消息的地址:协议控制器获取消息队列基地址QueueBase、队头指针Head,消息最大长度MsgMaxLen,计算消息的地址MsgAddr,计算方法为MsgAddr=QueueBase+Head*MsgMaxLen;
a.读取消息长度,消息地址的前4字节为消息长度,从消息地址读取消息长度信息CurMsgLen;
b.判断是否为最后分片,获取分片计数Send_Cnt,当CurMsgLen-(Send_Cnt+1)*2096>0,表示分片为中间分片,否则为最后一个分片。当分片为中间分片则分片长度为2096,当为最后分片则分片长度为CurMsgLen-Send_Cnt*2096。
c.数据帧的组织,根据消息ID、分片计数Send_Cnt、分片长度等信息构成ASM消息数据帧头和帧尾信息,根据分片计数Send_Cnt,计算分片地址,从主机空间读取消息内容,填充ASM消息数据域中。最终形成完整的数据帧提交光纤通道链路层发送。
当该分片为中间分片时,帧尾结束符为EOFn,数据帧提交物理链路层后,分片计数Send_Cnt加1。
当该分片为最后分片时,帧尾结束符为EOFt(表明消息最后一个数据帧),数据帧提交物理链路层后,分片计数Send_Cnt置0,并且需要调整消息队头指针Head。
5、ASM协议解析:
每个接收消息队列对应一组协议解析相关的控制信息,包括消息ID、接收分片计数Recv_Cnt,ASM协议控制器按照这些控制信息,将一组消息相关ASM数据帧,组装成一个消息。
ASM协议解析过程如下:
a.数据帧解析:接收数据帧,解析消息帧头、帧尾信息,获取该分片的消息ID、分片信息,是否为消息的最后分片等信息。
b.获取消息队列:通过分片的消息ID,查找消息ID与接收消息的映射表,找到对应的接收消息队列,获取相应的控制信息。
c.判断分片顺序正确性:比较分片数据帧中的Frame_Cnt与消息队列接收分片计数Recv_Cnt,判断分片顺序是否正确,如果Frame_Cnt!=0,并且Frame_Cnt! =RecvCnt,则表示消息顺序错,丢弃分片数据帧。
d.获取消息地址:协议控制器获取消息队列基地址QueueBase、队头指针Head,消息最大长度MsgMaxLen,计算消息的地址MsgAddr,计算方法为MsgAddr=QueueBase+tail*MsgMaxLen。
e.消息写入:根据接收分片计数Frame Cnt计算偏移地址,将分片数据帧内容写入到消息队列,并将RecvCnt加1,当写入的分片数据帧为消息的最后一个分片,计算消息长度,写到消息头4个字节处,并将RecvCnt置为0,更新消息队列指针,通知主机接收。
表1
表2
消息ID | 队列基地址 | 队列深度 | 队头指针 | 队尾指针 | 最大消息长度 | 接收分片计数 |
MsgID1 | QueueBase 1 | QueueLen 1 | Head1 | Tail1 | MsgMaxLen1 | Recv_Cnt1 |
MsgID2 | QueueBase2 | QueueLen2 | Head2 | Tail2 | MsgMaxLen2 | Recv_Cnt2 |
... | ... | ... | ... | ... | ... | ... |
MsgIDn | QueueBasen | QueueLenn | Headn | Tailn | MsgMaxLenn | Recv_Cntn |
Claims (13)
1.一种航电ASM协议控制方法,其特征在于:所述航电ASM协议控制方法包括发送步骤,所述发送步骤包括:
1)获取消息队列的控制属性,所述消息的控制属性包括消息ID、消息类型、计数周期、队列基地址QueueBase、队列深度QueueLen、头指针Head、最大消息长度MsgMaxLen、尾指针Tail、目标地址DID以及发送分片计数Send_Cnt;所述消息类型是紧急消息、周期消息或事件消息;
2)根据消息队列的控制属性选取需要发送的消息队列;
3)根据步骤2)所选取的消息队列找到消息内容,并进行分片;
4)将步骤3)所得到的消息的分片进行封装,并提交发送。
2.根据权利要求1所述的航电ASM协议控制方法,其特征在于:所述航电ASM协议控制方法还包括接收步骤,所述接收步骤包括:
6)获取消息分片;
7)将消息分片组织成消息并存储于对应的接收消息队列。
3.根据权利要求1或2所述的航电ASM协议控制方法,其特征在于:所述步骤2)的具体实现方式是:
2.1)根据消息队列的控制属性判断是否具备调度条件的消息队列,如果具备调度条件,则进行步骤2.2);如果不具备调度条件,则进行步骤1);
2.2)根据调度策略选取1个需要发送的消息队列。
4.根据权利要求3所述的航电ASM协议控制方法,其特征在于:所述步骤2.1)的具体实现方式是:
根据消息类型、头指针Head、尾指针Tail以及计数周期判断是否具备调度条件,其判断方式是:
如果消息类型为紧急消息且头指针Head和尾指针Tail不相同,则具备调度条件,否则不具备调度条件;
如果消息类型为周期消息,头指针Head和尾指针Tail不相同且计数周期到0,则具备调度条件,否则不具备调度条件;
如果消息类型为事件消息且头指针Head和尾指针Tail不相同,则具备调度条件,否则不具备调度条件。
5.根据权利要求4所述的航电ASM协议控制方法,其特征在于:所述步骤2.2)的具体实现方式是:
2.2.1)根据消息类型将具备调度条件的消息队列分组;所述分组包括紧急消息队列组、周期消息队列组以及事件消息队列组;
2.2.2)对于同组的消息队列,采用组内循环优先级公平调度,并选取组内需要发送的消息队列;
2.2.3)对于不同组的消息队列,按照紧急消息队列组、周期性消息队列组、事件队列组的顺序调度。
6.根据权利要求5所述的航电ASM协议控制方法,其特征在于:所述步骤3)的具体实现方式是:
3.1)获取消息的地址,其具体实现方式是:通过消息队列基地址QueueBase、头指针Head,消息最大长度MsgMaxLen,计算消息的地址,计算消息的基地址的公式是:
消息的地址MsgAddr=消息队列基地址QueueBase+头指针Head×消息最大长度MsgMaxLen;
3.2)读取消息长度,消息地址所指位置的前4字节为消息长度,读取消息长度信息CurMsgLen;
3.3)判断消息的长度是否超过ASM协议中所规定的数据域最大有效长度,如果超过,则对该消息进行分片;如果没有超过,则直接进行步骤4)。
7.根据权利要求6所述的航电ASM协议控制方法,其特征在于:所述步骤3.3)的具体实现方式是:获取分片计数Send_Cnt,当消息长度信息CurMsgLen-(分片计数Send Cnt+1)×2096>0,表示该分片为中间分片,否则该分片为最后一个分片;当分片为中间分片时,则分片长度取值为2096;当为最后分片时,则分片长度为消息长度信息CurMsgLen-分片计数Send_Cnt×2096。
8.根据权利要求7所述的航电ASM协议控制方法,其特征在于:所述步骤4)的具体实现方式是:根据消息队列的控制属性中的消息ID、分片计数Send_Cnt、目标地址DID构造ASM消息数据帧的帧头和帧尾信息以及ASM帧头,读取消息分片内容,填充到数据帧数据域中,形成完整的ASM数据帧提交光纤通道链路层发送。
9.根据权利要求8所述的航电ASM协议控制方法,其特征在于:所述步骤4)之后还包括步骤5):将所述步骤4)中发送消息队列的队头指针Head值更改为(Head+1)%QueueLen。
10.根据权利要求9所述的航电ASM协议控制方法,其特征在于:所述步骤6)的具体实现方式是:
6.1)获取数据帧;
6.2)对获取的数据帧进行解析,其具体实现方式是:解析消息帧头、帧尾信息,获取该消息分片的消息ID、消息分片计数Frame_Cnt、分片内容以及最后分片标识。
11.根据权利要求10所述的航电ASM协议控制方法,其特征在于:所述步骤7)的具体实现方式是:
7.1)获取接收消息队列:通过消息分片的消息ID,查找消息ID与接收消息队列的映射表,找到对应的接收消息队列,获取接收消息队列控制属性,所述接收消息队列属性包括消息ID、队列基地址QueueBase、队列深度QueueLen、队头指针Head、队尾指针Tail、最大消息长度MsgMaxLen以及接收分片计数Recv_Cnt;
7.2)比较分片数据帧中的接收分片计数Frame_Cnt与接收消息队列接收分片计数Recv_Cnt,判断分片顺序是否正确,如果Frame_Cnt!=0,并且Frame_Cnt!=RecvCnt,则表示消息顺序错,丢弃分片数据帧;如果消息顺序正确,则进行步骤7.3);
7.3)根据接收消息队列控制属性以及消息分片计数Frame_Cnt计算分片存储地址,所述计算方式是:
队列基地址QueueBase+队尾指针Tail×最大消息长度MsgMaxLen+消息分片计数Frame_Cnt×2096;
7.4)将步骤6.2)所得到的分片内容写入步骤7.3)所得到的分片存储地址中,并将该消息对应的接收分片计数Recv_Cnt加1。
12.根据权利要求11所述的航电ASM协议控制方法,其特征在于:所述步骤7)之后还包括:
8)根据步骤6.2)获取的最后分片标识,如果是最后一片分片时,调整接收消息队列的尾指针Tail,将尾指针Tail更改为(尾指针Tail+1)%QueueLen,并将RecvCnt置0。
13.一种基于权利要求1-12任一权利要求所述的航电ASM协议控制方法的航电ASM协议控制器,其特征在于:所述航电ASM协议控制器包括发送部分以及接收部分;
所述发送部分包括:
用于获取发送消息的相关信息的发送消息队列控制寄存器模块,所述发送消息队列控制寄存器模块包括消息队列基地址QueueBase、队列深度QueueLen,头指针Head和尾指针Tail,消息最大长度MsgMaxLen;
用于将消息的相关信息选取具备调度条件的消息队列的消息调度控制寄存器模块,所述消息调度控制寄存器模块包括消息类型MsgType,计数周期Period;
用于将选取具备调度条件的消息队列进行发送调度的发送调度模块;
用于将所选取的消息队列进行分片的协议分片控制寄存器模块,所述协议分片控制寄存器模块包括发送数据帧计数寄存器SendCnt和接收数据帧计数寄存器RecvCnt;以及,
用于将得到的消息的分片进行封装并提交发送的协议封装的控制模块,所述协议封装的控制模块包括发送消息ID、目标地址、发送分片控制寄存器、协议封装控制逻辑;
所述发送消息队列控制寄存器模块、消息调度控制寄存器模块、发送调度模块、协议分片控制寄存器模块以及协议封装的控制模块依次连接;
所述接收部分包括:
用于将消息分片进行解析的协议解析的控制模块,所述协议解析的控制模块包括接收消息ID与消息队列映射表,接收分片信息,协议解析控制逻辑;以及,
用于将消息分片组织成消息的接收消息队列控制寄存器模块;
所述协议解析的控制模块和接收消息队列控制寄存器模块依次连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010241664 CN102035822B (zh) | 2009-12-31 | 2010-07-30 | 航电asm协议控制器及控制方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910254633.4 | 2009-12-31 | ||
CN200910254633A CN101795266A (zh) | 2009-12-31 | 2009-12-31 | 航电asm协议控制器 |
CN 201010241664 CN102035822B (zh) | 2009-12-31 | 2010-07-30 | 航电asm协议控制器及控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102035822A true CN102035822A (zh) | 2011-04-27 |
CN102035822B CN102035822B (zh) | 2013-04-24 |
Family
ID=42587691
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910254633A Pending CN101795266A (zh) | 2009-12-31 | 2009-12-31 | 航电asm协议控制器 |
CN 201010241664 Active CN102035822B (zh) | 2009-12-31 | 2010-07-30 | 航电asm协议控制器及控制方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910254633A Pending CN101795266A (zh) | 2009-12-31 | 2009-12-31 | 航电asm协议控制器 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN101795266A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110098869A (zh) * | 2019-05-09 | 2019-08-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种光纤通道消息传输方法 |
CN110602033A (zh) * | 2019-07-01 | 2019-12-20 | 西安勺子智能科技有限公司 | 冷链车车载北斗编码与传输方法 |
CN113132065A (zh) * | 2019-12-30 | 2021-07-16 | 西安诺瓦星云科技股份有限公司 | 数据通信方法、装置及系统、存储介质和视频处理设备 |
CN115460164A (zh) * | 2022-08-20 | 2022-12-09 | 西安翔腾微电子科技有限公司 | 一种基于arinc664协议的组包方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102457442A (zh) * | 2010-10-29 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种消息发送和读取方法、装置及中间件系统 |
CN103957089B (zh) * | 2014-04-28 | 2017-06-23 | 上海大学 | 一种高可靠线速数据通信方法 |
CN104125283B (zh) * | 2014-07-30 | 2017-10-03 | 中国银行股份有限公司 | 一种用于集群的消息队列接收方法及系统 |
CN104270441B (zh) * | 2014-09-28 | 2018-12-04 | 曙光信息产业股份有限公司 | 一种分布式系统多优先级通信的方法和系统 |
CN108614786B (zh) * | 2016-12-12 | 2021-03-26 | 中国航空工业集团公司西安航空计算技术研究所 | 基于消息业务类型的通道管理电路 |
CN109684101B (zh) * | 2018-12-12 | 2023-07-07 | 中国航空工业集团公司西安航空计算技术研究所 | 一种fc_ae_asm协议处理引擎电路 |
CN111010353A (zh) * | 2019-11-19 | 2020-04-14 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于光纤通道的自适应无忧网络实现方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1578263A (zh) * | 2003-06-27 | 2005-02-09 | 英特尔公司 | 用于将网络节点连接到交换结构的方法和系统 |
-
2009
- 2009-12-31 CN CN200910254633A patent/CN101795266A/zh active Pending
-
2010
- 2010-07-30 CN CN 201010241664 patent/CN102035822B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1578263A (zh) * | 2003-06-27 | 2005-02-09 | 英特尔公司 | 用于将网络节点连接到交换结构的方法和系统 |
Non-Patent Citations (1)
Title |
---|
AMERICAN NATIONAL STANDARDS INSTITUTE,INC.: "《FIBRE CHANNEL AVIONICS ENVIRONMENT-ANONYMOUS SUBSCRIBER MESSAGING Rev 1.1》", 6 December 2005, article "FIBRE CHANNEL AVIONICS ENVIRONMENT-ANONYMOUS SUBSCRIBER MESSAGING Rev 1.1", pages: 1-10 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110098869A (zh) * | 2019-05-09 | 2019-08-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种光纤通道消息传输方法 |
CN110098869B (zh) * | 2019-05-09 | 2021-06-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种光纤通道消息传输方法 |
CN110602033A (zh) * | 2019-07-01 | 2019-12-20 | 西安勺子智能科技有限公司 | 冷链车车载北斗编码与传输方法 |
CN110602033B (zh) * | 2019-07-01 | 2022-08-30 | 西安勺子智能科技有限公司 | 冷链车车载北斗编码与传输方法 |
CN113132065A (zh) * | 2019-12-30 | 2021-07-16 | 西安诺瓦星云科技股份有限公司 | 数据通信方法、装置及系统、存储介质和视频处理设备 |
CN115460164A (zh) * | 2022-08-20 | 2022-12-09 | 西安翔腾微电子科技有限公司 | 一种基于arinc664协议的组包方法 |
CN115460164B (zh) * | 2022-08-20 | 2023-11-10 | 西安翔腾微电子科技有限公司 | 一种基于arinc664协议的组包方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101795266A (zh) | 2010-08-04 |
CN102035822B (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102035822B (zh) | 航电asm协议控制器及控制方法 | |
US11916781B2 (en) | System and method for facilitating efficient utilization of an output buffer in a network interface controller (NIC) | |
CN101151846B (zh) | 对并行排队层级结构中的流量进行整形的方法和系统 | |
CN1981484B (zh) | 具有多条调度巷道的流水线调度器及用在其中的调度方法 | |
CN103339903B (zh) | 用于接收和转发数据分组的装置和方法 | |
KR101400329B1 (ko) | 통신 네트워크 시스템 | |
CN101771598A (zh) | 一种实时以太网通信调度方法 | |
CN114827014A (zh) | 一种报文处理方法和装置 | |
CN106712907A (zh) | 数据传输方法及设备 | |
CN104579864B (zh) | 用于飞机的数据通信网络 | |
CN107079017A (zh) | 一种报文转换方法及装置 | |
US20150106473A1 (en) | Data communications network for an aircraft | |
CN109684269A (zh) | 一种pcie交换芯片内核及工作方法 | |
CN102624633A (zh) | 一种基于时间触发的SpaceWire网络通信方法 | |
CN109905321A (zh) | 一种用于自定义高速接口与以太网交互的路由控制系统 | |
CN105610730A (zh) | Cpu与网络设备之间的消息交互方法及系统 | |
CN113259268A (zh) | 一种支持冗余架构的网口与串口数据转发网关及方法 | |
CN101631327A (zh) | 微波业务数据发送、接收方法及装置、收发系统 | |
CN101494595B (zh) | 数据报文转发方法、系统以及同轴线路终端、光网络单元 | |
CN109450825A (zh) | 用于交换机的数据调度方法和装置 | |
CN107086960B (zh) | 一种报文传输方法和装置 | |
CN101707623A (zh) | 一种小内存系统中的文件发送方法及装置 | |
CN110830386A (zh) | 报文保序的方法、装置和系统 | |
CN1917519B (zh) | 高级数据链路控制协议串行数据的并行传输方法及其系统 | |
WO2018001139A1 (zh) | 一种pet控制网络通信系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |