专利名称:Dma发送方法
技术领域:
本发明涉及一种通信技术,特别是涉及一种DMA (Direct Memory Access,直接存储器存取)发送方法。
背景技术:
随着航空电子系统架构的不断升级,计算机技术的飞速发展,单板计算机的处理能力大幅提高,系统的通信瓶颈将不再是处理模块,而是模块与模块间、系统与系统之间的数据通信带宽。航空电子总线技术正越来越被大家所关注。IEEE 1394B等一些高速串行总线正被逐渐应用到先进的航空电子系统设计中,它具有高速(最高支持3. 2Gbps)、热插拔、 点对点传输、易扩展、传输距离远等显著优点。根据在军事和航空交通领域中的应用,在IEEE 1394B总线的基础上,SAE (Society of Automotive Engineers,美国机动车工程师学会)于2004年12月制定了 AS5643标准, 规范了 1394B数据总线网络在军事和航空飞行器领域中的应用,定义了相关操作方式和信息流格式。AS5643标准定义了 CC (Control Computer,控制计算机)节点和REMOTE (远程) 节点。CC节点以固定的频率发送帧开始包(ST0F,Start Of Frame)作为网络中所有节点收发数据的时间基准。其他的REMOTE节点以STOF包为时间基准,按照CC节点规定的发送偏移和接收偏移来时间触发该节点的收发操作。原有的模块间数据传输模式(如ARINC629 总线传输速度2Mbps和155 总线传输速度1Mbps,ARINC^9总线传输速度100Kbps)存在速度慢、耗费系统资源和不易扩展的不足。
发明内容
本发明所要解决的技术问题是提供一种DMA发送方法,其实现了连续发送多个数据包,按照AS5643标准,实现AS5643网络的大容量数据的传输,并确保系统的确定性、实时性和可靠性。本发明是通过下述技术方案来解决上述技术问题的一种DMA发送方法,其特征在于,其包括以下步骤步骤301,根据应用层确定每个周期发送数据包长度和个数,个数记为N ;步骤302,为每个数据包创建描述符;步骤303,判断是否为第一个描述符,是则转至步骤304,否则转至步骤311 ;步骤304,把当前描述符作为新描述符队列的首尾;步骤305,把链路层上下文控制寄存器中的RUN位清零,表示结束对描述符的处理;步骤306,根据链路层上下文控制寄存器中的有效位来查看上一步骤执行的结果, 表示是否已经结束描述符的处理,“ 1”表示正在处理,要继续等待,“0”表示已经结束处理, 一直等到描述符处理结束;步骤307,把描述符地址写入链路层命令指针寄存器中,用于通知DMA控制器首个2 描述符的地址;步骤308,把链路层上下文控制寄存器中的RUN位置“1”,表示开始对描述符进行处理;步骤309,判断N个数据包是否发送完成,是则转至步骤314直接退出,否则转至步骤 310 ;步骤310,集中准备DMA发送描述符,不再等待DMA发送完成中断;直接转至步骤 302为下一个数据包准备描述符;步骤311,如果不是第一个描述符,则把当前描述符添加到描述符队列中,作为描述符队列的尾;步骤312,把描述符地址写入链路层命令指针寄存器中,用于通知DMA控制器描述符的地址;步骤313,由于不是第一个描述符,把链路层上下文控制寄存器中的WAKE位置 “1”,通知DMA控制器可以继续处理描述符;步骤314,完成发送N个数据包,退出。优选地,所述步骤301之前就对数据包长度进行优化。
优选地,所述步骤302将数据包地址赋给描述符。优选地,所述每个数据包的发送都要调用链路层中的DMA控制器。本发明的积极进步效果在于本发明利用IEEE1394B总线构建的网络基础上,以异步数据流包为载体,按照AS5643标准实现协议的过程中采用DMA收发机制,实现AS5643 网络的大容量数据的传输,并突出系统的确定性、实时性和可靠性。本发明在异步发送DMA 实现过程中,为实现数据包连续无间隔的发送,采用在每周期的发送时间槽内集中准备描述符列表,不等待DMA发送完成中断,再由DMA控制器连续地发送大容量数据包,保证确定性和实时性;同时,本发明对发送数据包长度进行了优化,并采用每周期集中对接收数据包进行解析处理,再释放接收缓冲区的方法,为实现连续数据包的完整可靠地接收。基于以上对DMA收发机制的改进和优化,提高了网络传输速度和带宽利用率,从而提高整个系统的传输和处理能力。
图1为本发明AS5643网络节点的协议层结构示意图;图2为本发明AS5643数据帧格式定义的示意图;图3为本发明连续发送N个数据包的DMA发送流程图;图4为本发明物理层修改协商速度流程图;图5为本发明整个DMA收发验证结构图。
具体实施例方式下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。要实现大容量数据在AS5643网络中确定、实时、可靠地传输,如图1所示,按照数据包从应用层、事务层、链路层到物理层的数据流向顺序,由上到下分别对DMA收发进行改进和优化。以下方式对CC节点和REMOTE节点都适用。
一、应用层数据包长度优化包括以下内容为了减少丢包率,增加带宽利用率,本发明从发送节点的应用层就对数据包长度进行优化。AS5643协议的帧格式如图2所示,假设有效消息长度为M Bytes (根据AS5643 标准规定M最小为8Bytes,以下单位都为Bytes),则AS5643协议包长A = M+16 (ASM包头)+16 (包尾)+4 (健康状态字)+4 (心跳计数器)=M+40,1394B协议包长=A+8 (1394包头)+4 (1394CRC) = A+12 = M+52,在400Mbps速度模式下,异步包最长2048,即A不能大于 2048,M不能大于2008。中断接收每个包的时间(单位为Ps)如下式(1)Tr 一 Tint+T1394bHeadDecode+TAS5643HeadDecode+TAS5643MDecode ..................^^ (1)其中,Tint表示中断机制本身处理时间,包括上下文保存切换、查找中断源以及调用处理函数等,T1394bHeadDe。。de表示对1394B数据包头解析的时间,TAS5643HeadDe。。de表示对AS5643 包头解析的时间,T
AS5643MDecode
表示对AS5643有效消息解析的时间。在Tr中,TAS5643B3ecode与包的大小M有关,假设记接收节点处理器端数据包的处理能
力系数为κ,κ越大表TJ^处 里目邑力越寻碧,贝丨J TAS5643MDecode 一 ^K, Tint+T1394bHeadDecode+TAS5643HeadDecode 为
固定值记为Tf。而每个数据包的发送时间Ts= (M+52)*8/400,也只与包大小M有关。则要使 Tr ( Ts,即 Tf+MK ( (M+52)*8/400,计算得(1_50K)M 彡(50Tf_52),最后得到 M 值的范
围分两种情况如果处理器处理能力弱,则K大,即当(1-50K) <0时,则M的范围为如下式 ⑵8 彡 M 彡(50Tf-52) / (1-50K)...........................式(2)如果处理器处理能力强,则K小,即当(1-50K) >0时,则M的范围为如下式(3)(50Tf-52)/(l-50K)彡 M 彡 2008...........................式(3)基于以上分析,要提高带宽利用率,保证数据包不丢失,本发明按照以上分析做了以下优化。a.不管接收节点处理能力强或弱,在满足式( 和式( 前提下保证不丢包,发送节点尽量用大包。这样减少了等时接收DMA中断次数,也提高了有效消息在整个1394B数据包中的比例,提高带宽利用率。如图2所示,1394B协议包长=M+52,例如有效消息长度 M为52,其实际的带宽利用率最大只能到50%。b.如果接收节点处理器端处理能力弱,或者数据解析复杂,如式(2)中, (50Tf-52) / (1-50K)很小甚至小于8 (AS5643标准规定M最小值),发送节点已经不能改进, 则根据AS5643标准中固定帧周期的特性,在每个周期该通道所有数据包接收完成后再对接收数据包进行集中解析,然后释放接收缓冲区,不占用接收DMA中断的时间,即式(1)改进为 Tr = Tint。二、事务层DMA发送流程优化包括以下内容为了缩短发送包与包之间的时间间隔,提高带宽利用率,本发明从事务层对发送流程进行优化。每次发送一个数据包都要调用链路层中的DMA控制器,在协议初始化中已经申请一组描述符,用于满足为每个数据包申请一个DMA描述符。图3是本发明连续发送N个数据包的DMA发送流程图。本发明包括以下主要步骤步骤S301,根据应用层确定每个周期发送数据包长度和个数,个数记为N ;在步骤 301之前就对数据包长度进行优化。
步骤S302,为每个数据包创建描述符,其中把数据包地址赋给描述符;步骤S303,判断是否为第一个描述符,是则转至步骤S304,否则转至步骤S311 ;步骤S304,把当前描述符作为新描述符队列的首尾;步骤S305,把链路层ContextControl (上下文控制)寄存器中的RUN位清零,表示结束对描述符的处理;步骤S306,根据ContextControl寄存器中的ACTIVE (有效)位来查看上一步骤执行的结果,表示是否已经结束描述符的处理,“ 1”表示正在处理,要继续等待,“0”表示已经结束处理,一直等到描述符处理结束;步骤S307,把描述符地址写入链路层CommandPtr (命令指针)寄存器中,用于通知 DMA控制器首个描述符的地址;步骤S308,把链路层ContextControl寄存器中的RUN位置“ 1”,表示开始对描述符进行处理;步骤S309,判断N个数据包是否发送完成,是则转至步骤S314直接退出,否则转至步骤S310 ;步骤S310,虚线为优化前流程,每发送一个包要等待DMA发送完成中断,导致整个网络带宽利用率低下,本发明集中准备DMA发送描述符,不再等待DMA发送完成中断,即采用不等待DMA发送完成中断,而是直接转至步骤S302为下一个数据包准备描述符;步骤S311,如果不是第一个描述符,则把当前描述符添加到描述符队列中,作为描述符队列的尾;步骤S312,把描述符地址写入链路层CommandPtr寄存器中,用于通知DMA控制器描述符的地址;步骤S313,由于不是第一个描述符,把链路层ContextControl寄存器中的WAKE位置“1”,通知DMA控制器可以继续处理描述符;步骤S314,完成发送N个数据包,退出。以上步骤实现了连续发送多个数据包,极大地缩短了数据包与数据包的间隔。三、链路层DMA类型选择包括以下内容本发明采用1394B异步数据流模式作为数据包载体,该数据包的特性介于异步数据包和等时数据包之间。它拥有等时数据包相同的格式和特性,也一样需要得到一个通道号,但它与异步数据包一样是在公平间隔内发送,而等时数据包是在等时总线间隔期内发送。因此异步数据流包具有了以下优点a.消除了每次等时传输开始时,必须向等时资源管理器申请所需带宽的要求。b.突破了等时传输中在一个等时间隔(125 μ S)内一个通道只能发送一个数据包的限制,确保大容量数据包的连续发送;c.规避了异步传输时请求——响应一一确认复杂过程,确保实时性。针对以上异步数据流包的特点,采用异步发送DMA,发挥它与异步数据包发送一样在公平间隔内发送的优势,实现连续发送,大幅提高带宽利用率。考虑到格式与等时数据包一样,不需要向请求节点发送响应包,因此采用等时接收DMA来接收异步数据流包。四、物理层速度设置包括以下内容要实现DMA控制器正常工作,充分发挥DMA的优势,还必须还要有物理层硬件上的支持。AS5643标准规定了网络的端口最大速度为400Mbps,如果是800Mbps或以上,有可能影响数据包的完整性。如图4所示,设置端口速度的步骤如下步骤S401,设置物理层寄存器中的端口状态寄存器,设置MaX_p0rt_Speed(最大端口速度)为S400,即400Mbps ;步骤S402,要使端口重新协商速度,端口复位不能采用上下电节点复位的方式,本发明采用的方法是先设置端口状态寄存器中的Dis为1,禁止端口 ;步骤S403,把端口状态寄存器中的Dis位清零,重新使能该端口 ;步骤S404,激活该端口后,端口间的速度重新协商,以两个端口最大端口速度的小值作为新的协商速度,即S400。同时在DMA由IEEE 1394B链路层控制器来发起,通过PCI总线与主机端直接存储器访问,主机端PCI空间必须开启预取功能,对其读写速度至少要达到400Mbps,如图1所示,避免PCI速度成为整个系统传输速度的瓶颈。为了验证在AS5643协议中的采用本发明对DMA发送方法优化后的效果,整个DMA 收发验证结构图如图5所示,DMA收发验证结构是根据AS5643标准构建的网络,由一个CC 节点、四个REMOTE节点和一个FireSpy3810总线协议分析仪组成。每个节点的硬件条件都相同,为CPU为内核频率320MHz的MPC8270处理器,PCI的参数为33MHz和32bit,SDRAM 的参数为64MB和64bit,1394B物理层芯片的型号为TSB81BA3型,1394B链路层芯片的型号为 TSB82AA2 型。首先验证事务层发送DMA流程改进效果。STOF帧周期设为20ms,CC节点每个周期连续发送32个有效消息长度为M(Bytes)的包,这里固定为2008Bytes,由REMOTE节点1 接收。利用FireSpy3810总线协议分析仪来验证性能和效果。结果及分析见表1。其中的速度理论值400Mbps为AS5643标准规定的端口协商速度,包间隔理论值2060*8/400 = 41. 2 μ s,即数据包实际在线上占用的传输时间,实际包间隔是从FireSpy3810总线协议分析仪时序图中所得。表1异步发送DMA流程优化前后对比
包间隔(单位|as,理论值为41.2μδ)实际传输速度(单位 Mbps,理论值为占空比400Mbps)改进前161. 32060*8/161. 3 = 102. 11 2.9改进后42. 22060*8/42. 2 = 390.51 0. 024比较其中的占空比,很明显,用以上异步DMA发送机制及其优化来实现AS5643协议的发送,极大的提高了整个网络的数据传输速度,已经能够接近理论带宽,大大提高了带宽利用率,很好满足了 AS5643标准中规定的实时性和确定性。其次,验证应用层发送DMA数据包长度优化进行验证测试。具体地,通过REMOTE NODEl对来自CC NODE连续发送的32个AS5643协议包进行接收,以发送包大小M为参数,
7通过发送时间Ts(FireSpy3810获取)和接收Τ,时间(主处理器端定时器测定,包括数据解析时间,如数据包校验及拷贝)的对比,以及凡(接收到的包个数)来测试验证。表2异步发送DMA数据包长度优化对比
权利要求
1.一种DMA发送方法,其特征在于,其包括以下步骤步骤301,根据应用层确定每个周期发送数据包长度和个数,个数记为N ; 步骤302,为每个数据包创建描述符;步骤303,判断是否为第一个描述符,是则转至步骤304,否则转至步骤311 ; 步骤304,把当前描述符作为新描述符队列的首尾;步骤305,把链路层上下文控制寄存器中的RUN位清零,表示结束对描述符的处理; 步骤306,根据链路层上下文控制寄存器中的有效位来查看上一步骤执行的结果,表示是否已经结束描述符的处理,“ 1”表示正在处理,要继续等待,“0”表示已经结束处理,一直等到描述符处理结束;步骤307,把描述符地址写入链路层命令指针寄存器中,用于通知DMA控制器首个描述符的地址;步骤308,把链路层上下文控制寄存器中的RUN位置“1”,表示开始对描述符进行处理;步骤309,判断N个数据包是否发送完成,是则转至步骤314直接退出,否则转至步骤310 ;步骤310,集中准备DMA发送描述符,不再等待DMA发送完成中断;直接转至步骤302为下一个数据包准备描述符;步骤311,如果不是第一个描述符,则把当前描述符添加到描述符队列中,作为描述符队列的尾;步骤312,把描述符地址写入链路层命令指针寄存器中,用于通知DMA控制器描述符的地址;步骤313,由于不是第一个描述符,把链路层上下文控制寄存器中的WAKE位置“ 1 ”,通知DMA控制器可以继续处理描述符;步骤314,完成发送N个数据包,退出。
2.如权利要求1所述的DMA发送方法,其特征在于,所述步骤301之前就对数据包长度进行优化。
3.如权利要求1所述的DMA发送方法,其特征在于,所述步骤302将数据包地址赋给描述符。
4.如权利要求1所述的DMA发送方法,其特征在于,所述每个数据包的发送都要调用链路层中的DMA控制器。
全文摘要
本发明公开一种DMA发送方法,其包括以下步骤步骤301,根据应用层确定每个周期发送数据包长度和个数;步骤302,为每个数据包创建描述符;步骤303,判断是否为第一个描述符;步骤304,把当前描述符作为新描述符队列的首尾;步骤305,把上下文控制寄存器中的RUN位清零;步骤306,根据上下文控制寄存器中的有效位来查看上一步骤执行的结果;步骤307,把描述符地址写入链路层命令指针寄存器中;步骤308,把上下文控制寄存器中的RUN位置“1”;步骤309,判断N个数据包是否发送完成;步骤310,集中准备DMA发送描述符;还有步骤311至步骤314。本发明实现连续发送多个数据包,实现大容量数据的传输。
文档编号H04L12/56GK102420763SQ20111040421
公开日2012年4月18日 申请日期2011年12月7日 优先权日2011年12月7日
发明者楼俊荣 申请人:中国航空无线电电子研究所