APP下载

基于软件通信体系结构的DSP硬件抽象层研究与设计

2011-07-13石贱弟赵小璞

电子设计工程 2011年17期
关键词:缓冲区端点开发者

石贱弟,赵小璞

(中国电子科技集团公司 第七研究所,广东 广州 510310)

软件通信体系结构[1](SoftwareCommunicationsArchitecture,SCA)技术是美军目前正在开发的联合战术无线电系统[2]所强制采用的系统顶层设计规范。它代表了未来无线通信系统设计技术的发展方向,是美军软件无线电系统[3]架构的唯一标准。SCA描述了模块化软件可编程无线通信系统的软件体系结构和硬件体系结构,以及应用程序接口规范和安全规范,以实现硬件的模块化,波形软件的可移植性、可重用性和互操作性。SCA的专用硬件补充规范[4]引入了硬件抽象层连接(Hardware Abstract Layer Connectivity, HAL-C)的概念,它给组件提供了一种与硬件平台无关的统一的通信机制。HAL-C提供了一组通用通信API,它的实现能最小化硬件平台通信机制对软件设计的影响。这极大地减少了软件移植过程中代码的重写量,减少了软件的移植费用。它能有效地将系统波形开发与硬件平台开发分离。波形开发者根据硬件平台提供的接口进行波形组件的研发,硬件平台则为波形提供统一的接口。这样波形开发者可以不去关心底层硬件的细节,而专注实现波形的功能,以这种方式实现的波形组件具有很强的可移植性。

HAL-C主要规定了以下几个方面的内容:

1)HAL-C是能够在不同硬件体系或硬件平台上实现的硬件抽象,这种硬件抽象能够根据需要进行修改或者升级。

2)硬件平台能为多个硬件抽象层组件HC之间的通信提供高速的通信机制和方法,同时由于HAL-C是本地透明的,它同样支持在同一处理单元PE上的两个HC之间的通信。

3)提供了在组件外部指定HC组件相互连接的方法,而不是将连接方式在HC自身上定义,降低组件与硬件细节的藕合度。

SCA规范只是给出了HAL-C的总体要求,而没有说明HAL-C具体的设计方案、实现方法。论文在对软件通信体系结构补充规范引入的硬件抽象层连通性要求进行了深入研究的基础上,提出了一种基于软件通信体系结构的DSP硬件抽象层连通性的实现方法。

1 硬件抽象层连接的模型

典型的HAL-C模型如图1所示。

如图1所示,组件实现应用功能,这类组件由波形开发者根据HAL-C API进行设计,而在硬件平台上应当根据PE的具体环境实现这些HAL-C API。由硬件平台提供的HAL-C API给HC提供了一个底层的通信接口,这些底层API的主要目的是让相同或者不同PE上的HC能够通信。HC1,HC2之间的通信并不是直接进行,而是通过HAL-C提供的通信机制实现。HC1,HC2的开发者只需要把数据发送给HAL就可以了,具体数据如何从HC1传输到HC2则是硬件抽象层要完成的工作。

图1 HAL-C的典型模型Fig.1 HAL-C classical model

图1采用一个存储在HAL-C基层结构的简单传输模块Tx来描述数据的传输。有两种类型的传输需要描述。一种是存储在不同PE上的HC之间通过物理信道进行数据和控制信号的传输,如图1中HC2到HC3的数据传输。它可以通过不同的物理通道实现(如:PCI,RapidIO等),物理信道可以看作传输在硬件平台上的映射。另外一种传输是在硬件内部进行的传输,虽然组件自己可以实现数据的传输,但是若使用硬件抽象层连接来约束这种传输,能提高组件的通用性。

为了简化上面的连接模型,引入了端点的概念。一条从HC出发,通过传输模块的路径被指定为一条逻辑通道。HC使用HAL-C API来访问端点,用以发送和接收数据。HAL-C基层结构负责把数据通过逻辑信道移动到指定的端点。这就把以前HC开发者应该做的工作转移到硬件抽象层中来实现,使波形开发与硬件相关资源分离。

2 DSP上硬件抽象层连接应用接口

在通用处理器上,波形组件间通过CORBA[5-6]进行通信,不需要设计硬件抽象层。对于DSP器件而言,实现其硬件抽象层就是设计实现一个连接接入层,即HAL层。其为波形功能组件提供一套标准的连接API接口函数完成组件连接。接入层使用端口句柄来标识和管理组件的目的端口和源端口,提供标准的接口函数:获取端口句柄、发送数据、读取数据、注册回调函数。每个DSP上的HAL层维护一个端点信息表,包含了系统中所有相关端点的信息,用于HAL层完成数据传输。API如下所示:

3 DSP上硬件抽象层的设计

图2 DSP硬件抽象层实现示意图Fig.2 The realization schematic diagram of DSP HAL

图2表示硬件抽象层实现示意图,这里只给出了系统接收方向的数据流,系统发送方向的数据流刚好相反。图2中,数据从AD接收,放入由HC1和P0决定的缓冲区中,然后数据再依次经过DSP上的各组件信号处理后发送到GPP上的链路控制层LLC组件。图中的P0,P1,P2等表示端点,它们与HC代理组件上的端口相对应。所有这些端点都是HAL基础架构的组成部分。图中每个HC代理组件对应一个HC组件,由DSP逻辑设备创建HC代理组件。方案中的每一次halcSend()或 halcReceive()操作时,数据仅经过一个端点,如:HC2给HC3的P4端点传输时的halcSend(),数据只经过端点P4而不经过P3,之所以把HC2的P3端点标出,是为了与配置文件SAD中的连接关系对应起来。HC中只有最后一个HC组件与其HC代理组件间有业务数据通信,其他的HC代理组件与HC间只有控制信息。HC间的业务数据通信关系由HC代理间的配置关系决定,一旦配置好,HC间的业务数据来往只在DSP的HAL中进行,不上传到HC代理CORBA对象。PE表示处理单元,如:GPP、DSP、FPGA等。

典型的连接情况,如图2中HC2组件的P3端点与HC3组件的P4端点的跨DSP端点连接,其对应的建立连接过程的详细描述如图3所示,其中HC2组件的代理调用getPeerInfor()操作获得HC3组件的P4端口对应的BufPtr和BufLength等信息。HC2组件的代理把这些信息发送到PE1的HAL,PE1上HAL再将之映射为本地地址信息,并为之在本地分配相应的收发缓冲区,上述信息都填入PE1的端点表中。

图3 建立连接的序列图详细描述Fig.3 The detailed description of sequence diagram to establish connection

HC2的P3向HC3的P4传送数据,在P4有回调函数时的序列图如图4所示。其中HC2在调用halcSend时,PE1的HAL把业务数据拷贝到为P4端点所分配的本地收发缓冲区,然后再通过硬件通道传输到PE2的HAL上,即写入PE2地址在PE1上的映射地址。当PE2上的HAL检测到P4接收缓冲区中有数据写入,即回调HC3早前已注册的回调函数,将此业务数据传给HC3,完成数据传输。

图4 有回调函数时跨DSP发送数据的序列图Fig.4 The sequence diagram to send data between DSP with callback function

HC2将数据发送到PE2的P4端点,HC3调用halcReceive()操作前,数据已从PE1的HAL传送到了PE2的HAL上为P4端点分配的接收缓冲区,其序列图如图5所示。

DSP与GPP之间的连接和通信实现过程分析:

图5 无回调函数时跨DSP发送数据的序列图Fig.5 The sequence diagram to send data between DSP without callback function

对于从DSP发往GPP情形,在建立连接阶段,应用工厂通过getPort()操作获取 CP3组件的端口P4和HC2 Proxy组件的端口 P3,通过调用 connectPort(P4)建立 HC2 Proxy组件与CP3组件间的连接。再判断P4端口是否是指定的端口类型,如果是就把端口P4在GPP上的缓冲区地址等信息经过映射后填入DSP PE1上的端点表中,用于数据的传输。在数据传输阶段,HC2首先通过 HalcGetEndpoint()获取组件CP3、端口4所对应的端点句柄,然后把数据发往该端点句柄中的本地缓冲区中,后台循环线程把本地缓冲区中的数据拷贝到映射地址对应的缓冲区中,即通过硬件把数据发送到了组件CP3的缓冲区中。如图6所示。

图6 DSP与GPP之间的连接和通信Fig.6 The connection and communication between DSP and GPP

4 结束语

使用本文提出的DSP硬件抽象层连接HAL-C的实现方法后,算法组件开发者只需要知道该组件处理的数据从哪个组件的哪个端口来,处理完后要发送到哪个组件的哪个端口。HC算法组件开发者不需要知道数据是怎么获取过来的,也不需要知道数据具体是怎么传送到目的组件的端口的,发送数据和接收数据的组件可以在同一个PE上,也可以在不同的PE上,对它来说是透明的。组件间的连接关系在SAD文件中定义。波形组件连接的关系改变不需要改动GPP上的代理层软件和DSP上的HAL层软件。

该设计方法具有如下特点:兼容SCA核心接口模型、满足硬件抽象层补充规范中要求的HAL-C API、对数据拷贝次数少,对于跨处理器通信和同一处理器内部通信两种方式,其对波形组件提供的接口及流程是一致。

[1]Joint Tactical Radio System (JTRS)Joint Program Office.JTRS-5000SoftwareCommunicationArchitectureSpecification[S].SCA V3.0.USA:JTRS Joint Program Office,2004.

[2]Place J,Kerr D, Schaefer D.Joint tactical radio system[C]//IEEE Military Communications Conference,2000,19:209-213.

[3]杨小牛,楼才义,徐建良.软件无线电原理与应用[M].北京:电子工业出版社,2001.

[4]Specialized Hardware Supplement to the Software Communication Architecture (SCA) Specification[S].SCA V3.0.USA:JTRS Joint Program Office,2004.

[5]Michi Henning,Steve Vinoski.基于C++CORBA高级编程[M].徐金梧,徐科,吕志民,译.北京:清华大学出版社,2000.

[6]朱其亮,郑斌.CORBA原理及应用[M].北京:北京邮电大学出版社,2001.

猜你喜欢

缓冲区端点开发者
非特征端点条件下PM函数的迭代根
不等式求解过程中端点的确定
基于网络聚类与自适应概率的数据库缓冲区替换*
“85后”高学历男性成为APP开发新生主力军
16%游戏开发者看好VR
基丁能虽匹配延拓法LMD端点效应处理
关键链技术缓冲区的确定方法研究
栝楼产业开发者谢献忠
初涉缓冲区
AVS标准中的视频码流缓冲区校验模型分析