构建可靠的、可升级的软件无线电

来源:百度文库 编辑:神马文学网 时间:2024/04/29 17:22:33


作者:Paul N. Leroux,QNX Software Systems公司技术分析师
paull@qnx.com (9/1/05)
QNX Neutrino RTOS提供了任务关键型SDR器件所需的动态升级能力、容错和硬实时性能。文章英文版PDF 350 KB
Xilinx® Virtex™-II Pro和Virtex-4 FX FPGA具有千兆位级收发器、用于并行信号处理的乘法器阵列、和可重配置逻辑,是构建灵活的、有成本效应的软件定义无线电(SDR)的理想平台。 例如,通过支持局部重配置(快速配置或重配置部分FPGA的能力),这些FPGA可以利用一组处理资源同时支持多种波形。 因此,系统设计者可以消除每个通道的冗余硬件,降低其SDR器件的功耗。
直到最近,大多数SDR设计中的CPU是作为分立元件而存在的,通过高速互连与FPGA架构通信。 Virtex-II Pro和Virtex-4 FX器件采用不同的方法,将高性能PowerPC™核直接植入FPGA。 这种方法不仅在CPU和FPGA架构之间提供了高速访问端口,而且还减少了元件数目并释放了板空间。
同等重要的是,嵌入式PowerPC核允许SDR设计者和软件工程师利用一组基于标准的、现成的RTOS阵列和工具链,如QNX Neutrino RTOS和QNX Momentics开发套件。
起初,SDR中的术语“软件”可能会引起误解。 它表示一个器件,其中运行在CPU上的软件处理信号发生和检测、调制和解调、加密和解密、信号频率选择之类的功能。 实际上,大多数这种功能运行在FPGA架构内的信号处理器上。
不过,SDR器件仍须依靠基于CPU的软件来下载和管理信号处理器的新波形,处理语音捕捉和回放,管理信息的显示并协调大量的其他命令和控制任务。 由于典型的SDR器件的复杂性和动态特性,该软件必须提供可靠性、可升级性和实时性能的强大组合。 本文中,我们将探讨QNX Neutrino微内核RTOS是如何帮助系统设计者和软件工程师实现上述要求,同时大大缩短开发时间和减少开发工作的。
进行升级
借助于Xilinx FGPA,您可以实现SDR的一个关键目标:可以动态应用到多种无线电环境中的单个、可重配置硬件平台。 但是,如果运行在FGPA的PowerPC核上的系统软件不提供相应的可升级性和可重配置性,这个目标就不能达到或受到很大影响。
不巧的是,此类动态要求向传统的RTOS提出了严重挑战。 问题来自于传统的嵌入式设计,在产品的整个寿命周期内,其中的软件一般保持稳定,变化很小或不变。 大多数为此类产品设计的RTOS,仍反映过去的要求。 因此,除非移除服务,否则采用的系统的维护、升级或扩展将很难开展。
为解决这个问题,QNX Neutrino使用一个真正的微内核架构(如图1所示)。 微内核RTOS有两种显著特性,对于构建一个动态的、可靠的SDR器件来说都至关重要: OS内核仅包含基本服务的小核,如定时器、信息和调度。 所有高级服务和程序(如驱动器、文件系统、协议堆栈、用户应用),都在内核外部作为独立的、存储器保护的元件而运行。 大多数软件成分通过信息传送进行通信,这是一种定义明确的通信机理,在保持程序相互安全隔离的同时,允许程序交换数据。
正确实现时,信息传送也用作虚拟“软件总线”,允许几乎所有的软件成分(不管是器件驱动器、协议堆栈或者应用)可以高速地移除、增加或升级。 因此,不需要系统复位或服务中断,SDR器件就可以支持新功能。
网络服务
借助于QNX Neutrino的虚拟软件总线,SDR器件可以不间断地工作,即使是在利用新波形、应用、驱动器或其他软件成分进行升级时,也是如此。 不过,仍然存在一个问题:当服务器提供一个新波形或服务时,远程的SDR器件实际上是如何发现它并了解如何使用它的?
为了发现并激活新波形和滤波器,SDR器件可以使用公共对象请求代理体系结构(CORBA)中间设备。 事实上,美国国防部(DoD)在其联合战术无线电系统 (JTRS)计划中,强制使用CORBA来实现该目的。 CORBA中间设备的实例是Objective Interface的ORBexpress,这是一个可以运行在QNX Neutrino上的高效的、实时实现程序。
设计时考虑到不同系统间的互用操作,CORBA可以在一个公司内部、通过一个闭合的网络提供分布式处理,非常适用于波形的提供。 不过,由于它不能穿过因特网防火墙,因此,不适合在广域网 (WAN) 上访问高级服务,如DoD预见的全球信息网格 (GIG)。 以网络为核心进行的战争 (NCOW)系统为例,多功能现场无线电必须通过GIG访问新的战略信息服务(在可以提供此类信息服务时)。 对于这样的应用,QNX的网络服务实现方法提供了理想的解决方案(如图2所示)。
网络服务提供对网络能力(如访问远程资源的通用资源识别符[URI])的全存取能力,与多种安全协议兼容,包括HTTP-S和强加密的IPSec。 网络服务对防火墙也是友好的,通过与HTTP的定义明确的传送约束,它们可以利用现有的因特网安全协议,并可以在因特网的任何地方被访问。 由于网络服务基于开放的标准(如XML、SOAP、WSDL、HTTP和UDDI),所以它们提供了一种供应商中立的、与语言无关的、不受平台约束的访问远程服务和数据的方法。
简而言之,网络服务可以在一个WAN上跨越多个公司,并消除穿过防火墙的复杂性,允许JTRS无线电访问GIG上具有高级VPN安全性的服务和路由。
为了帮您利用网络服务,QNX已开发出一种网络服务技术开发套件(TDK)。 使用该TDK,嵌入式开发者可以在原始C或C++中实现基于WSDL、SOAP、XML的网络服务应用,而无需处理XML的复杂性和协议变换。 而且,TDK符合网络服务互用性组织 (WSI) 基本规范1.0。因此,利用TDK开发的应用可以与其他基于标准的实现(如Microsoft .NET)互用。 同样重要的是,QNX设计的TDK可以满足SDR器件和其他嵌入式系统的严格资源约束。
使命:很关键
对于大多数SDR器件而言,必须保证可靠性。 软件缺陷很可能影响器件的主要用途:发送信号。 如果由于某种原因,发生了软件缺陷,器件应该可以从容地从中恢复,而无需系统复位。
该要求向传统操作系统提出了挑战,传统的操作系统将大多数系统服务(驱动器、文件系统、协议堆栈)绑定到操作系统内核上。 利用这种方法,任何系统服务中的单个编码错误都可能破坏其它服务或内核自身使用的存储器,引发系统大范围故障。
相对而言,一个类似于QNX Neutrino的微内核操作系统作为独立的存储器保护元件,在内核外运行所有这些服务。 这种架构提供两种关键的可靠性优势。 首先,在错误进入使用的系统之前,能比较容易地隔离和纠正编码错误。 例如,如果正在开发的任何服务或应用试图访问其进程放置程序外部的存储器,操作系统将识别起作用的进程,指明故障的位置,并创建一个可以利用源代码级调试工具查看的进程转储文件。 该转储文件包括调试器需要的所有用来识别引发问题的源代码行的信息和其它诊断信息。 将它与传统操作系统相比,在传统操作系统中,这类错误可以使整个系统崩溃,而对于导致这个后果的原因,却不留下一丝痕迹。
其次,微内核架构使平均修理时间(MTTR)大大缩短。 例如,考虑当使用的系统中出现驱动器故障时,会发生什么情况:操作系统会终止驱动器、收回驱动器使用的资源,然后重新启动,这常常在几毫秒内完成。 从开始到结束,整个过程比需要重新启动整个系统的传统解决方案快几个数量级。
通过使用QNX的关键处理监视技术,在问题升级之前检测问题,使您确定操作系统应该采取的正确恢复行动,这使这个过程更简单(如图3所示)。
实时的优势所在
作为真正的RTOS,QNX Neutrino提供了协调多个并发SDR应用和服务所需的硬实时能力。 例如,它可以处理命令和控制程序、基于映射的战略显示(在JTRS无线电中)、多个调制和加密方案以及多个其它应用,同时确保时间关键任务(如主处理器和信号处理器之间的语音信息包的传送)可以按及时、可预测的方式发生。
为了实现可预见的活动,QNX Neutrino提供了大量的特性,包括基于优先权的可抢占式调度程序、可抢占式内核、嵌套中断、避免优先权倒置的机制和调度算法的灵活选择。 这些特性帮助您确保高优先级的线程始终如一地满足它们的最终期限,而不管有多少其它的线程在争夺CPU时间。
允许单组资源支持多个波形,是Virtex-II Pro和Virtex-4 FX FPGA的主要优势。 同样,一个成熟的RTOS(如QNX Neutrino)让您可以最大限度地利用处理器资源,同时将总成本降至最低。 无需使用昂贵的高端CPU,避免了与之相伴的散热问题,可以得到必需的处理能力。 而且,QNX Neutrino的实时能力提供了更大的设计灵活性:您可以选择将应用从DSP移到主机CPU中,反之亦然。 利用通用操作系统,任何具有实时约束的任务都必须委托DSP完成。
与生俱来
SDR是处理多个不断发展的传输标准的关键。 但是,SDR自身一度需要通用标准,以确保不同的SDR平台间的软件的再用性和互用性。 为了解决这个问题,DoD的JTRS联合计划处(JPO)开发出了软件通信架构(SCA),并规定所有的JTRS开发项目都使用它。 软件定义无线电论坛从此采用SCA,对象管理集团(OMG)计划将它作为一个商用标准进行推广。
为确保波形与商用现成技术(COTS)的可移植性和兼容性,SCA根据两个现有的行业标准规定了一个操作环境:CORBA中间设备和便携式操作系统接口(POSIX)操作系统。
QNX Neutrino是SCA实现的理想操作系统。 首先,它满足POSIX 1003.1-2001,具有广泛的POSIX选项集,包括实时扩展和线程。 这不仅满足了SCR的要求,而且可以很轻松地将基于Linux、Unix和其它POSIX的开放源程序转到QNX Neutrino的高效实时架构中。 同样重要的是,QNX Neutrino微内核从设计伊始就支持POSIX,POSIX是“与生俱来的”。这样的方法不需要其它操作系统使用的复杂POSIX适配层,实现了较高的性能和较低的存储器要求。
另外,强有力的POSIX支持大大简化了将任何实时CORBA实现(如ORBexpress)转到QNX Neutrino的任务。 问题的关键是,实时CORBA提供了使与SCA兼容的器件动态地了解新波形的框架。
结论
QNX Software Systems公司与Xilinx密切合作,为Virtex-II Pro ML300评估平台、ML310 Virtex-II Pro开发平台和ML403 Virtex-4 FX评价平台开发出了板支持包(BSP)。 这些BSP与QNX Neutrino RTOS的6.3版兼容,根除了软件/硬件集成问题,使您可以立即开始应用开发。
了解BSP或者QNX Neutrino如何帮助您实现SDR项目方面的更多信息,请访问www.qnx.com或拨打QNX电话:(800) 676-0566 (北美)或+1 (613) 591-0931。