侯昌磊,赵 蕾,孙德荣
(中国西南电子技术研究所,成都 610036)
传统战术通信装备是为了满足特定任务需求而设计实现的,不同电台装备的工作频段、调制方式和通信协议存在很大差异,导致系统间不能互联互通,功能实现与硬件紧耦合,波形的可移植性差和维护升级难。联合战术无线电系统(Joint Tactical Radio System,JTRS)引入软件无线电概念,要求电台的功能尽量由软件而不是硬件来实现,一个软件无线电硬件平台可以支持多个波形,一个波形可以部署到不同的硬件平台上,通过动态配置部署波形到硬件平台,实现软件无线电通信系统的可重配置、可升级、良好的互通性,保证不同通信系统间的实时信息交换[1]。美军基于软件无线电技术开展了长期的研究工作,制定了软件通信架构(Software Communications Architecture,SCA)标准来支持SDR的功能性和可扩展性。SCA是一套约束系统设计的规则,定义了开放的、与具体实现无关的软件体系架构,对SDR系统软件组件的接口、功能和传输机制特性等进行约束。本文后续提到的软件无线电系统均是遵循SCA体系标准的软件无线电系统。为了提高波形应用的互操作性和可移植性,联合战术网络中心(Joint Tactical Networking Center,JTNC)还定义了一系列的设备与服务的JTRS API编程接口。
随着软件无线电技术的迅速发展,越来越多厂家开展了基于软件无线电标准的技术研究和产品研制。基于SCA的联合战术通信装备开发模式与传统方式不同,分工更专业和精细,硬件设备、平台软件和波形组件往往由不同厂商研制。硬件平台需具备部署多种波形的电性能能力,平台软件需为应用波形提供符合软件无线电标准的核心框架、传输机制和操作系统等平台软件,波形在实现功能同时还需符合软件无线电标准,才能将波形成功部署到硬件平台上最终形成联合战术通信设备。但是,各生产厂商对软件无线电标准的理解不同,产品实现存在差异,导致软件之间不能相互兼容,设备集成需花费大量时间。目前国内对软件无线电系统的符合性研究不多,仅有针对某个点的研究(核心框架或硬件抽象层),因此,亟需开展软件无线电系统标准符合性测试的系统性研究。
为了评价软件无线电系统的标准符合性,本文设计并搭建了一个软件无线电标准符合性测试系统,在构建的测试系统上开展平台软件和波形符合性测试验证。
软件无线电标准符合性测试系统示意图如图1所示。测试系统分为两部分,运行在测试主机上的测试软件和运行在待测设备上的测试用例软件。测试系统通过以太网与待测设备连接,调用待测设备上软件的接口进行平台软件和波形的符合性测试[2]。通过标准符合性测试的波形软件在移植到其他通过标准符合性测试的设备时,不需要改动代码或者改动很小,在新开发环境下重新编译就可以部署在新设备上。
图1 软件无线电标准符合性测试系统示意图
软件无线电标准体系架构如图2所示,标准分为SCA标准和JTRS API两大类[3],分别定义了软件无线电系统的软件体系架构和应用编程接口,这些标准是软件无线电标准符合性测试系统的设计与实现的依据。SCA标准对核心框架、传输机制、操作系统和域描述文件进行定义和约束;JTRS API基于SCA标准对常用的外设设备、服务和硬件抽象层(Modem Hardware Abstract Layer,MHAL)进行定义和约束,目的是为波形软件提供统一的访问接口。
图2 软件无线电标准体系架构
软件测试有白盒测试和黑盒测试两种测试方法,白盒测试需要熟悉软件的代码实现和开发环境,测试覆盖代码的逻辑、算法和执行路径等;黑盒测试又称为功能测试,不关心内部实现,从用户角度对软件进行测试,验证其功能是否与规格一致。软件无线电标准符合性测试系统采用黑盒测试,遍历正常输入和异常输入,对比行为和输出结果是否与标准一致,正常输入时能完成定义的功能,异常输入时可以抛出异常或给出错误提示,视为符合标准,反之不符合标准。
待测设备或软件是否符合标准取决于声明的产品配置实现是否与标准一致。产品配置指产品量级或功能单元集,比如产品A是可控制和可配置的符合SCA的应用组件,产品B是中量级核心框架、轻量级应用环境配置(Application Environment Profiles,AEP)POSIX接口、全量级公用对象请求代理体系(Common Object Request Broker Architecture,CORBA)的符合SCA的平台软件。
软件无线电系统符合性测试流程如图3所示。首先检查待测方提交的软件及文档清单是否齐全,通常包括编译环境、库文件、可执行文件、域描述文件和使用文档等;部分测试项测试需针对设备运行环境开展测试用例的适配,在测试设备中运行测试用例程序;根据待测方声明的软件产品配置创建测试方案,自动生成测试用例,执行测试用例,根据用例执行结果给出测试结果,并自动生成测试报告[4]。
图3 软件无线电系统符合性测试流程
软件无线电系统标准符合性测试项如图4所示,包括软件平台测试和波形测试,每个大项下包括若干个小项。测试系统既可以对整机设备测试,也可以对单个测试项进行测试。
图4 软件无线电系统标准符合性测试项
软件平台包括操作系统、传输机制、硬件抽象层、核心框架和设备与服务等软件,根据应用场景不同选择不同的量级。软件平台功能单元量级配置如图6所示,分为轻量级、中量级和全量级三个级别[5]。轻量级需实现AEP和部署功能单元,中量级在轻量级基础上增加管理注册功能单元,全量级在中量级基础上增加管理释放和管理注销功能单元,其他为可选项。每个功能单元是接口集合。软件平台产品测试前应说明实现的量级,测试时测试系统对量级对应的测试项进行测试,可选项一旦实现就应按照规范进行测试。
图5 软件平台功能单元量级配置
图6 操作系统AEP定义
2.1.1 操作系统符合性测试
操作系统为应用组件提供线程调度、内存管理、网络协议和C标准库支持。JTNC针对SCA领域定义了AEP、LwAEP、ULwAEP三个量级函数集[6],如图7所示,不同的量级支持的函数集合不同。操作系统符合性测试内容主要包括API的接口齐备性、接口符合性和功能正确性。接口齐备性指实现的接口函数数目齐全,接口符合性指函数名称、参数类型和个数以及返回值是否与标准一致。这两项在测试用例适配编译时完成。功能正确性指测试注入不同的输入时,软件行为和输出应符合标准要求。
操作系统测试时,首先测试主机测试软件依据量级自动生成测试方案,遍历测试方案中的测试用例,向运行在GPP上的测试用例程序发起调用请求;测试用例程序调用操作系统函数,根据测试程序执行情况给出测试结果,最后自动生成测试报告。
2.1.2 传输机制符合性测试
JTNC不再强制使用CORBA作为传输机制,还可选用Data Distribution Service(DDS)、Internet Communication Engine(ICE)等中间件,但是目前JTNC仅对CORBA中间件需实现的接口有约束,定义了Full、Lightweight和UltraLightweight三个量级的接口集配置[7]。传输机制测试内容包括接口齐备性、接口符合性、功能正确性和传输性能。
CORBA测试需在目标设备上适配传输机制测试程序,首先使用接口定义语言(Interface Definition Language,IDL)编译器生成stub和skeleton文件,再与测试代码一起编译生成测试程序,编译的同时可对CORBA接口齐备性、接口符合性进行检查。测试时,测试主机测试软件依据量级自动生成测试方案,遍历测试方案中的测试用例,向运行在GPP上的测试用例程序发起调用请求;测试用例程序再调用CORBA接口,根据测试程序执行情况给出测试结果,最后自动生成测试报告。传输机制是组件间重要的通信中间件,传输性能直接影响应用波形和整机设备的性能,因此应进行传输带宽、时延和抖动测试。传输机制测试还应对本地调用和远程调用分别进行测试。
2.1.3 硬件抽象层符合性测试
硬件抽象层与传输机制一起作为组件间通信机制,为组件间提供一致的通信接口,解决GPP、DSP和FPGA三类波形组件间的通信问题。硬件抽象层测试内容包括接口齐备性、功能正确性、传输性能和RFChain。硬件抽象层的传输性能直接影响应用波形和整机设备的性能,因此应进行传输带宽、时延和抖动测试。硬件抽象层还定义了控制前端射频的标准ICD,即RFChain,控制的发起方可以是GPP、DSP,也可以是FPGA。
GPP测试程序适配,根据GPP硬件抽象层的域描述文件提供的信息,访问域管理器获取硬件抽象层设备的提供者端口句柄,建立与MHAL设备的使用者端口的连接;GPP测试程序使用提供者端口句柄向DSP和FPGA发送数据,GPP测试程序通过使用者端口从DSP和FPGA接收数据。DSP和FPGA测试程序适配,将测试代码与待测方提供的库文件编译;测试主机测试软件控制运行在GPP、DSP和FPGA上的测试用例程序进行数据收发测试,并将测试结果返回到主机测试软件,最后自动生成测试报告。
2.1.4 核心框架符合性测试
核心框架测试内容包括域管理器、设备管理器、应用工厂、应用管理器、基础设备、文件服务等组件[8]的接口符合性和功能正确性。接口符合性包括函数名称、参数、返回值及异常触发。被测核心框架需提供核心框架库或者可行执行文件、覆盖测试要求的测试设备和测试波形,测试系统通过CORBA调用核心框架的各组件接口,测试设备和测试波形作为核心框架的输入元素。
测试时,首先解析DCD文件,启动域管理器、设备管理器、设备和服务,测试系统通过corbaloc获取测试组件的对象引用,调用组件对象的接口,根据调用结果判断接口和功能是否符合标准。以域管理器的组件注册器registerComponen测试为例,该函数的作用是将设备管理器组件注册到域管理器组件的注册器,函数声明是void CF::ComponentRegistry::registerComponent(in ComponentType registeringComponent)raises(InvalidObjectReference,RegisterError);首先获取域管理器组件注册器的对象引用,实例化设备管理器测试用例,调用registerComponent函数注册设备管理器到组件注册器,然后查看设备管理器数量是否增加1,如是则表明该函数功能符合标准,除此之外还需做异常捕获测试,比如registeringComponent 传入的对象引用非法应抛出InvalidObjectReference异常,其他导致注册失败情况均需抛出RegisterError。
软件无线电系统的波形软件由核心框架部署到硬件平台,波形部署和卸载时间是系统的重要指标,因此需要对这两个指标进行测试。部署时间包括安装应用、创建应用和启动应用的时间,卸载时间包括停止应用、释放对象和卸载应用的时间。
2.1.5 设备与服务符合性测试
软件无线电标准对一些常用的设备与服务对外提供的接口进行了定义,比如EthernetDevice、AudioPortDevice、TimingService、SerialPortDevice、GpsDevice、VocoderService和FrequencyReferenceDevice等。测试内容主要包括域描述文件符合性、接口符合性、功能正确性和属性管理,域描述文件包括spd、dcd、prf(可选)。需对域描述文件格式和内容进行符合性检测。
测试时先启动设备或服务,测试系统通过传输机制获取设备或服务的对象引用,设备或服务通常对外提供provides和uses两类端口如图7所示,测试程序建立与设备或服务的连接,保证测试程序和被测设备服务获取访问对方的端口对象引用,按照接口定义调用接口,根据执行结果判断是否符合标准,最后生成测试报告。
图7 设备、服务测试示意图
波形测试分为组件级测试和应用级测试。组件测试内容包括域描述文件符合性、接口符合性和功能符合性,组件域描述文件包括spd、dcd、prf。需对域描述文件格式和内容进行符合性检测。组件的接口符合性分为两类,如图8所示,一类是编程接口符合性,组件在访问操作系统、传输机制、标准设备与服务、核心框架时,应严格按照标准定义不超量级使用,测试的要点是组件访问这些平台软件时调用的接口是否符合标准;另一类是作为应用组件应该实现如表1所示的基本应用接口(部分为可选项)供核心框架调用,测试的要点是通过远程调用看组件是否实现基本应用接口。应用测试将组件按照sad域描述文件装配、加载起来,经过一系列处理输出信号是否能达到预期。
图8 组件编程接口
表1 组件基础应用接口
为了验证测试系统的可行性,在由FPGA、DSP和GPP等芯片构成的硬件平台上,对平台软件进行测试。针对具体芯片开发适配测试操作系统、传输机制、硬件抽象层的测试用例,开发测试核心框架和波形测试的陪测波形和陪测设备,最后对平台软件和波形软件进行了符合性测试。测试系统工作时软件组件部署如图9所示,FPGA芯片上部署硬件抽象层、FPGA波形组件和FPGA测试组件,DSP芯片上部署硬件抽象层、DSP波形组件和DSP组件,GPP芯片上部署操作系统、核心框架、传输机制、硬件抽象层、设备与服务、GPP波形组件和GPP测试组件,测试系统主机上部署测试系统软件。
图9 测试系统软件部署图
本文对软件无线电系统的标准符合性进行研究,提出了一种软件无线电系统标准符合性测试系统的实现方式,给出了软件平台和波形的测试方法和实现技术途径,设计实现了一套软件无线电标准符合性测试系统,并进行了测试验证,测试结果表明测试系统可实现对从单一软件产品到整机设备产品的符合性测试;通过符合性测试的软件无线电设备和软件间可以互相兼容,可以大大缩短联合战术通信装备的波形移植开发和系统集成周期。