文献标识码:A
DOI:10.16157/j.issn.0258-7998.2016.09.031
中文引用格式:杜虹,彭华,马金全,等. 基于异构信号处理平台的自动代码生成工具[J].电子技术应用,2016,42(9):118-121.
英文引用格式:Du Hong,Peng Hua,Ma Jinquan,et al. Automatic code generation framework for heterogeneous processing platform[J].Application of Electronic Technique,2016,42(9):118-121.
0 引言
随着通信信号处理技术不断发展,面临着无线通信体制更新换代速度快、软硬件升级频繁、研制成本高、开发周期长等问题[1]。为应对多体制通信处理的快速更新,基于软件化定义的异构通信处理平台成为了近年来的研究热点[2]。
虽然异构通信处理平台性能良好、适用性广,但是由于其涉及软硬件类型繁多,导致了开发过程复杂、开发周期长、分工合作衔接困难等问题[3]。在庞大复杂的平台系统中,一点改动就可能牵一发而动全身,导致程序的不一致性。为了降低软件开发强度,缩短开发周期,减少代码的重复书写,一直以来软件开发者都致力于代码自动生成方面的研究。作为复用技术的核心和基础,代码自动生成是提高软件开发效率的有效手段[4]。自动代码生成器不仅减小了开发人员的工作量,同时提高了工程的一致性,更易于分工与维护。
针对异构通信信号处理平台在实时性、分布式、可靠性等方面的要求,自动代码生成器需应对异构平台中的实时处理,以及编程一致的系统可靠性[5]。为了提高软件开发综合效率,实现组件的快速开发,缩短新算法从理论到应用的开发周期,本文提出了一种新型的代码自动生成器工具。该生成工具包括框架配置文件向导、描述要素宏定义文件实时更新、硬件驱动源代码框架生成、软件组件源程序框架生成、软件包组装以及装配粘合代码的自动生成等。实测分析表明,该生成工具对于异构通信平台软件快速开发、硬件迅速映射、用户便捷应用等方面有显著突破,是异构通信信号处理平台实现其实时性、分布式、可靠性的重要工具。
1 自动代码生成技术
目前,自动代码生成技术应用十分广泛,在UML建模[6]、模型驱动框架(MDA)[7]、数据库表创建[8]等方面都有所突破。但是在异构通信处理平台上的代码自动生成技术仍不完善,只在异构多核处理器方面有少量研究[9]。
基于异构通信信号处理平台的代码自动生成关键在于建模抽象技术[10]、复用技术[11]、Python引擎技术[12]。代码主要分为3种类型[13]:第一种是框架代码中的固定部分,无需做任何修改;第二种代码指大部分不用修改,只对有相应的输入来源和逻辑规律的代码进行修改;第三种是没有任何规律可循的特殊代码,这类代码须由专业人员填写,无法自动生成。第一种代码可直接使用,第三种代码留白待用,第二种代码即需要实现自动生成的主要代码。
代码自动生成主要由元数据、代码模板、数据模型和代码生成引擎组成,其流程如图1所示。
(1)元数据:元数据是对异构通信处理平台资源的一种描述,通过建模实现,是数据信息传递的基础。
(2)代码模板:代码模板是用户想要生成的源代码模型,它表示源代码中的共性部分,即无需修改的部分。
(3)数据模型:数据模型是代码自动生成框架的基础模型,具有高度的抽象性。它表示了源代码中的个性部分,即需根据规律自动生成的部分。
(4)源代码:源代码是代码自动生成的成果,即通过自动生成形成的可加入工程直接使用的完整代码。
2 异构平台的软件体系架构
异构通信处理平台包括对ATCA、VPX、CPCI、专用PC等已有硬件处理平台的兼容,可以统一地开发运行环境实现软硬件的无缝交互,实现多功能应用组件的高度共享。其软件体系架构分为硬件层、板级支持包层、操作系统与驱动层、硬件抽象层、核心服务层和应用层。
一般地,为了实现异构通信信号处理平台中多处理器和软件组件的升级继承与资源共享,其自动代码生成器需满足平台框架需求,具体层级分布如图2所示。通信处理平台的自动代码生成器提高了软件开发的综合效率,实现硬件驱动和软件组件的快速开发,缩短了新算法应用的实际周期,为通信领域的快速发展提供了良好的平台。
3 自动代码生成器实现
3.1 操作系统与驱动层代码生成
在操作系统与驱动层,异构通信处理平台的自动代码生成工具主要涉及硬件设备驱动的自动代码生成。处理器包括作为设备的处理器和平台中的处理器。每个硬件设备驱动都要实现如表1所示的功能。
驱动接口名称由功能名称和数据库存储的板卡类型号、处理器类型码和处理器号组成。板卡类型号表明处理器所在板卡信息,确定处理器归属。处理器类型码表明了处理器的类型、处理方式和编程模式。处理器号是对某板卡上具体处理器的确定。由以上三方面的信息共同确定系统中唯一一个处理器,由此定义驱动函数。
根据组合形成的函数名,通过函数模板实现驱动接口的定义、注册和函数框架生成。首先根据函数名形成相应的驱动接口定义文件,驱动接口注册文件和驱动接口函数文件。根据函数定义、注册、函数框架的函数模板,自动完成不同文件的驱动定义和注册。
3.2 核心服务层代码生成
3.2.1 配置文件向导
在核心服务层,异构通信处理平台的自动代码生成工具主要涉及配置文件向导和描述要素宏定义。配置文件向导主要是针对平台配置时的可视化向导,主要方面如表2所示。用户可根据可视化向导对平台进行配置,由具体模板模式以及用户对平台的配置信息,形成系统可识别的配置文件。
3.2.2 描述要素宏定义
描述要素是对平台系统的整体描述,包括软硬件物理元件、连接关系和功能描述。根据对异构通信处理平台建模,元数据结合特定编码形成宏定义,模板变量如表3所示。自动生成要素宏定义保证了系统扩展升级时的一致性,是实现平台高可靠性和可扩展性的保证。
3.3 应用层代码生成
3.3.1 软件组件函数框架
软件组件源代码主要包括对应用功能组件的定义和实现。软件组件的函数如表4所示。组件函数名由组件名称和功能名称组成,创建对唯一组件的初始化、数据处理和参数配置等。根据组件名,在数据库中查找组件对应的参数名和参数类型,为实现数据结构定义提供数据。根据组件名称,由组件名作为定义文件和函数文件的名称创建组件应用文件。
3.3.2 软件装配脚本
软件装配的脚本生成是通信处理平台的中心环节。根据通信处理流程形成的脚本文件,记录了组件功能和连接方式,是软件化处理的核心。Python脚本可直接解释执行,省去了编译时间;并且可与多种语言保持良好的兼容性和互操作性[14]。用Python做脚本文件可无缝调用C模块程序,既运用了C的快速计算功能,也兼具了Python简单的流模式记录特性,是软件装配脚本的良好选择。文本文件对操作系统的适应性更强,增加了系统可移植性,但是需要设计文本格式和解析引擎。
为保证系统实时性和可扩展性,软件装配的脚本采用双解析引擎,以txt文本和python文件共同作为装配脚本,如图3所示。两种脚本可视化应用对用户没有区别,可根据自己熟悉的编程模式选择脚本类型。在应用运行时,双引擎解析自动识别应用描述脚本,执行应用。
4 实测分析
为验证本文提出的自动代码生成器的有效性,将以一个QPSK调制解调信号处理流程为例,在实际系统上进行测试。
4.1 实验系统体系组成
本次实验系统的硬件平台以PC作为域管理器,ATCA和VPX作为处理平台。ATCA平台包括两块板卡,板卡上有DSP和FPGA。VPX包括一块板卡,板卡上有FPGA。其中,DSP类型为TMS320C6678,FPGA类型为XC5VLX50T,硬件平台拓扑如图4所示。
以QPSK调制解调信号处理流程为例。Txdemo组件的功能是产生1 024长度的二进制信号,并通过输出端口发送出去,Rxdemo组件的功能是接收信号,并且将信号保存到指定文件中,方便用户查看。首先由Txdemo信源发送数据,经QPSK调制模块调制,通过AWGN信道后,再由QPSK解调模块解调,最后将解调后的数据保存在Rxdemo中。其中,Txdemo组件和Rxdemo组件部署在PC上,QPSK调制模块和QPSK 解调模块部分别部署在ATCA的两块处理板上,AWGN信道部署在VPX的处理板上,具体部署如图5。
4.2 实验结果及分析
QPSK调制解调波形结果如图6所示。结果与实验预期结果相符,印证了框架的可行性,即自动代码生成的编程一致性和可靠性。应用模块分布在不同的处理器上,满足代码自动生成的异构平台分布性。在系统运行过程中,除了模块功能代码之外,均由代码自动生成实现。各模块的运行时间如表5所示。经计算,框架代码生成时间开销占应用总开销的2%,满足实时性要求。综合验证结果,基于异构通信处理平台的自动代码生成技术满足了系统对实时性、分布式、可靠性等方面的要求,证明了自动代码生成的有效性。
5 结论
本文基于异构通信处理平台框架,根据其对实时性、分布式、可靠性等方面的要求,实现了该框架的自动代码生成。实现了框架配置文件、要素宏定义文件、硬件驱动源代码框架、软件组件源程序框架以及装配粘合代码的自动生成,加强了平台中软硬件编程的一致性、缩短了开发周期,大大减少需要手工编写开发和测试代码的工作量,提高了软件开发的效率。
参考文献
[1] JTRS Draft Specification.Software communications architecture specification(rev.4.0)[R].Washington:JTRS Joint Program Office,2012.
[2] DICKENS M L.Surfer:Any-core software defined radio[J].Dissertations & Theses-Gradworks,2012,8(2):204-205.
[3] ADRAT M,ASCHEID G.Special issue on recent innovations in wireless software-defined radio systems[J].Journal of Signal Processing Systems,2015,78(3):239-241.
[4] Wang Miao,Qi Fengbin.Automatic code generation framework for Heterogeneous multi-core systems[J].Journal of Frontiers of Computer Science and Technology,2013,7(6):518-526.
[5] FAYEZ J A.Designing a software defined radio to run on a heterogeneous processor[D].Virginia:Virginia Polytechnic Institute and State University,2011.
[6] 曹雷,薛平贞.UML建模在嵌入式系统开发中的应用[J].现代电子技术,2013(16):41-44.
[7] 张清波.基于MDA模型驱动的代码生成的研究与设计[J].现代计算机:专业版,2015(9):73-79.
[8] 刘雪飞,吴伯桥,王申强.XML文档与数据库表信息互相转换的方法研究与实践[J].信息安全与技术,2013(7):67-69.
[9] TULIKA M,MIHAI P.Bahurupi:A polymorphic heterogeneous multi-core architecture[J].Acm Transactions on Architelture & Code Optimization,2013,8(4):73-94.
[10] CHEN Q,TIRUMALA S,JAIN A.Integrated circuit optimization modeling technology:US,US 8555233 B2[P].2013.
[11] HONG Y S,SONG H U.Refresh period signal generatorwith digital temperature information generation function:US,US7859931[P].2010.
[12] MUSHTAQ A,OLAUSSEN K.Automatic code generator for higher order integrators[J].Computer Physics Communications,2014,185(5):1461-1472.
[13] 张曦,汤俊,汤小为,等.基于TS201的信号处理软件框架及自动代码生成器[J].科学技术与工程,2013,13(18):5356-5360.
[14] SAUTER N K,HATTNE J,GROSSE-KUNSTLEVE R W,et al.New Python-based methods for data processing[J].Acta Crystallographica,2013,69(7):1274-1282.