胡靖宇 薛楠 杜建华 曾晓东
摘要:随着现代航电系统的飞速发展,机载网络环境日趋复杂,对于航电系统的数据传输速率和数据处理速度要求日益增高,传统的数据拷贝方式已经无法满足大量的网络数据需求和系统的实时性,高速率高可靠性的DMA控制器显得极其重要。因此本文提出一种基于DMA控制器的数据拷贝方式来提升FC网络数据处理效率的方法,DMA控制器能够减轻处理器的负担,缩短数据拷贝时间,提高整体性能,来保障整个系统的实时性及可靠性。
关键词:数据传输;FC网络;DMA控制器
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)29-0011-03
随着航空电子的高速发展和广泛应用,飞机航电系统日益向着综合化、一体化、高效化,可灵活配置的方向发展[1]。由于机载网络技术也在不断跨上新台阶日渐趋于复杂,特别是采用FC光纤网络之后,网络传输数据量日益增大,便对系统实时性及可靠性都提出了更高的要求。以memcpy函数作为数据传输的方式相对比较简单,但该方式要以CPU为主控制系统来进行操作,所有的数据传输工作都需要多个指令周期来完成。因此,存在传输效率低、CPU 负担过重等问题,不适合进行大批量数据的传输[2]。在数据高速交互的系统中,快速、精确的数据传输是设计的关键[3]。
所以在光纤网络数据的传输过程中就有很大可能会出现瓶颈,为解决该问题,本文研究了一种DMA 传输方式,设计了基于FC网络的DMA控制器进行数据处理,保证数据传输过程中的可靠性及实时性,满足航电系统的联试需求。
1 DMA控制器简介
DMA(Direct Memory Access)即直接存储器存储,是一种高速的数据传输的方式。数据传输过程可以从一段内存到另一段内存,也可以从内存到适配卡。DMA方式的关键点在于,利用其进行数据传输的时候,不需要CPU的参与,也就是说不占用CPU执行任务的周期,不会抢占CPU的资源。DMA在初始化完成之后,可以脱离CPU,独立完成数据的传输功能。
DMA控制器是一种能够在系统内部进行数据搬家的独立外部设备,其功能为通过一种专用的数据总线将存储器与每个具备DMA传输能力的外部设备连接起来。常用的DMA控制器由一条地址总线、控制寄存器和数据总线构成。DMA控制器进行任意的资源访问时必能产生中断,无需处理器介入,这样便大大提高了传输效率。通常情况下,多个DMA控制器可以共用一个CPU,每一个控制器又会有多个DMA通道,以及与外部设备相连接的数据总线。
本文采用的是PowerPC处理器内部集成DMA控制器,该处理器目前已在国外数据处理与信号处理中采用。一片处理器中提供一个内核,主频最高可达1.25 GHz[4]。该DMA控制器包括一条地址总线、一条数据总线和控制寄存器,驱动软件在对DMA控制寄存器初始化时,采用了查询工作方式。即向DMA控制器发起数据传输命令后,由程序主动查询DMA传输完成情况判断。其结构如图1所示
2 FC网络介绍
FC(光纤通道)网络是综合计算机通道和数据网络概念提出的一个不同于传统的通道和网络结构的互联方案[5],是一种具有高实时性、可靠性、带宽、性价比的开放式通信技术,是用交换或仲裁环拓扑处理介质访问冲突,采用信用策略控制网络流量。
2.1 FC拓扑结构
光纤通道标准定义了三种基本的拓扑结构:点到点、仲裁环和交换结构[6]。其中交换结构在目前的航空电子系统中使用最为普遍,源于其更优于其余两种拓扑结构的可扩展性、隔离性和稳定性,交换结构中各个网络终端节点通过网络交换机组成星形网络拓扑结构。本文所研究的FC网络便采用此拓扑结构。
2.2 FC-AE-ASM标准
针对航空电子系统的应用特点,SAE组织定义了FC-AE标准,包含了以下五种协议[7]:FC-AE-ASM、FC-AE-LP、FC-AE-RDMA、FC-AE-1553和FC-AE-VI。其中在机载领域中应用最为广泛的还是FC-AE-ASM协议。
FC-AE-ASM针对航空电子系统领域中各设备以及产品之间的通信和数据传输等要求,提供了高实时性、高可靠性和安全性等特点的一种通信协议。ASM接收方按预定的速率进行数据采集,不特别关注数据的来源,系统中所有的消息采用消息标识来进行区分。FC-AE-ASM协议通过FC帧格式的数据域封装ASM帧头实现协议映射的,每个数据帧中的前16个字节作为ASM帧头,其帧格式如表1所示。
3 系统方案设计
FC通信当前采用的是FC-AE-ASM协议,它采用异步传输模式进行通信,发送方不需要接收方的等待和应答可自主选择发送数据,接收方也可以在需要时选择收取数据,其传输模式描述如图2所示。
在非阻塞传输模式下,其接收方式根据系统需要可以定义为查询和中断两种模式。本驱动采用的是中断方式,每当数据进入硬件FIFO就会产生一个中断,告知协议处理芯片FPGA,FPGA就会申请DMA传输控制,主要是占用PCIe总线和内存的独占权限,申请到后就开始DMA传输。由于FC传输数据有长消息(大于2096字节小于16M字节)和短消息(小于2096字节)等不同数据类型,故申请的存放发送接收数据的方式为动态申请内存(malloc),前后数据采用链表的管理关系,DMA传输也采用分散集聚DMA传输方式,因为分散集聚DMA申请的内存是物理不连续的,所以处理器在申请一定大小的内存时,会生成描述符链表,描述符链表中的每一个描述符都指向了一小块物理连续的内存,描述符中定义了控制状态信息和内存信息。其中,描述符最后32bit是一个指向下一个描述符的指针,这个指针将各个描述符连接成描述符链表,由此就可以映射到整个物理不连续的内存,其示意图见图3所示。
FC的DMA传输过程如图4所示,FC在分散集聚DMA的传输过程中,首先有FC數据到来时,发起FC数据读取命令,当数据进入硬件FIFO时,产生中断并申请DMA传输控制。DMA控制器从驱动读取描述符链表中的一个描述符并存到描述符引擎中,描述符更新引擎将此描述符的更新信息传到描述符链表中,然后描述符引擎通过指向下一个描述符的指针向驱动获取下一个描述符的信息,由此进行下一个描述符对应内存的数据传输。
在用户接收FC设备传输的数据过程中,为了尽可能减少数据拷贝到用户缓冲区的时间,最大限度地提高数据拷贝性能,当用户接收FC网络中发来的短消息和流数据时,驱动软件调用DMA数据传输接口,使用DMA控制完成总线数据到用户缓冲区的拷贝工作。经过反复试验与测试,最终数据结果表明,DMA传输方式比传统的内存拷贝方式(memcpy)传输速率及性能提高2倍以上,大大地缩短了数据处理时间,保证了整个系统的实时性和有效性。特别是在需要高实时性的航空电子领域中,机会稍纵即逝,能够保证用户或者地面站接收到航空器第一时间发来的数据是尤为重要的需求。可以让技术人员在最短的时间内做出对当前形势的判断,取得一定的先机。
4 总结
本文通过对DMA控制器和FC-AE-ASM标准的详细分析,提出了一种提升FC数据处理效率的方法,通过充分的实验室环境验证以及大量的测试工作,证明该研究具备良好的实时性和可靠性。可以作为航电系统中FC网络通信部分的平台服务软件,大大提升数据在内存搬家过程中的效率,满足高效系统的实时性和具体应用需求,特别在处理数据量较大的FC网络中具有明显优势,适用于现代航空电子系统。
参考文献:
[1] 支超有,唐长红.机载数据总线技术及其应用[M].北京:国防工业出版社,2009.
[2] 李军伟,戴紫彬,南龙梅.密码SoC中嵌入式链式DMA的研究与设计[J].电子技术应用,2014(9).
[3] 刘功杰.DMA控制器的一种硬件验证方法[J].计算机工程与科学,2009(31).
[4] 张伟栋,赵红. 基于PowerPC处理器的通用处理模块设计[J].微型机与应用,2015.
[5] 张峰,王家礼,方葛丰.微处理器系统功能测试[J].现代电子技术,2005(10) : 108-110.
[6] 熊华钢,王中华.先进航空电子综合技术[M].北京:国防工业出版社,2009.
[7] 牛文生.机载计算机技术[M].北京:航空工业出版社,2013.
【通联编辑:唐一东】