随着电子技术的发展和芯片处理能力的增强,数字信号处理技术[1]获得了空前的发展。由多处理芯片组成的阵列信号处理系统,使通讯、雷达、声纳进入数字化飞速发展的时代。但如何基于多处理芯片的信号处理系统建立实时的软件开发环境一直是个难题。以往的软件开发环境一般都与DSP&CPU芯片紧密结合在一起,每一型DSP&CPU芯片都配备了专用的开发环境。这些开发环境一般都针对单独处理器进行开发,而且相互之间互不兼容,当一个系统中使用了多种类型的DSP&CPU芯片时,往往无法同时使用这些开发环境,也就无法进行系统级开发。对于此,我们开发了一种系统级的软件开发工具,它可以支持多型处理器同时开发,使系统级开发变得简单易行。这种统一的软件开发环境使开发人员始终面向同一个开发环境,易学易用,提高了开发效率。
多处理器实时开发环境建立在以开放的Eclipse平台[2,3]为框架的基础之上,所以其主要的设计思路紧密结合了Eclipse平台及其插件进行构建及其设计,采用以配置文件为中心的支撑框架,各个功能模块围绕配置文件展开设计与实现。也就是说,通过配置文件构建起硬件平台的描述、数据流处理的描述、工程环境的描述等等,然后各个功能模块根据相关的描述进行设计与实现。可以看出,配置文件的设计在多处理器实时开发环境中的重要性,对配置文件的改动涉及到功能模块实现的改动。
配置文件采用XML格式[4]进行描述。以配置文件为中心的设计思路是软件标准化的途径。通过配置文件描述多处理器实时开发环境所有可配置的内容,包括目标硬件的描述、工程的描述、开发环境的描述等等,然后围绕配置文件展开软件的设计与开发,实现具体的执行逻辑。这种软件设计思路具有很好的目标硬件可扩展、可维护性、可定制性等特点。下面具体说明一下硬件拓扑的配置文件。
在多处理器实时开发环境项目建立的过程中,硬件拓扑图描述文件将被建立起来,作为基于该项目开发的起点与基础。硬件拓扑图文件主要描述了项目中可编程的硬件单元及其互连关系,可编程硬件单元一般包括处理器、存储器、路由器等。硬件拓扑图描述文件名定义为HardTopology.xml。下面给出硬件拓扑配置文件的部分信息:
<?xml version="1.0"?> XML文件版本
<HardTopology>
<Name>Hard Topology</Name> 硬件拓扑图名称
<Information/> 硬件拓扑图描述信息
<Issuer>by ZKHX</Issuer> 发行者
<Version>1.0</Version> 版本
<Router portnum="" id=""> 路由器(端口数量、ID
<Portn> 端口n
<Connect type="processor" id=""> 链接的硬件单元
<Class/> 硬件单元的类别
<Speed/> 数据流通信速度
</Connect>
</Portn>
</Router>
<Processor portnum="" linknum="" id=""> 处理器(端口数量、ID)
<Portn> 端口n
<Connect type="router" id=""> 链接的硬件单元
<Class/> 硬件单元的类别
<Speed/> 数据流通信速度
</Connect>
</Portn>
</ Processor>
<Memory portnum="" id=""> 存储器(端口数量、ID)
<Portn> 端口n
<Connect type="router" id="">
<Class/>
<Speed/>
</Connect>
</Portn>
</ Memory >
</HardTopology>
……
多处理器实时开发环境分为三层框架体系结构,目标层为目标程序运行的多型号、多处理器硬件平台及其软件结构,通信层为主机开发环境与目标机程序通信的结构,主机开发环境层为实时开发环境的软件结构。多处理器实时开发环境构建在Eclipse框架下,其各个功能模块以Eclipse插件或者可执行工具的形式存在。为了满足需求中对多型号、多处理器的支持,以及良好扩展性的支持,实时开发环境设计为开放式的框架结构。系统总体结构如图1所示:
图1系统总体设计图
对于不同型号、多处理器硬件平台运行的目标程序可能不同,实时操作系统、处理器算法程序应一一对应于不同型号、多处理器硬件平台。通信层负责主机开发环境与目标机程序之间的通信,对于不同型号、多处理器平台提供不同的主机-目标机驱动程序,并在驱动程序之上封装一层主机-目标机通信抽象层,达到主机与目标机通信协议的统一,这样建立在通信抽象层的主机开发环境不针对于某型号多处理器硬件平台,具有良好的适用性。同时在通信层提供远程调试模块,支持多处理器程序的远程开发与调试。主机开发环境为开发人员提供基于Eclipse框架下统一的开发环境,开发人员在多处理器拓扑图及其源代码框架上进行开发,而无需过多关心多型号、多处理器硬件平台及其配置。
根据硬件平台的配置文件,实时开发环境可以构建出多处理器拓扑图,开发人员可以在多处理器拓扑图上进行开发,可以完成开发阶段的如下工作:
1.定义数据流处理的链路,既数据流在多处理器之间的流动方向及其流入、流出尺寸规格,同时定义用于数据流的内存分配,对于流入或者流出的数据可以定义单缓存或者双缓存方案。对于周期处理算法,还可以定义每个处理器节点的处理周期。
2.定义处理器节点的任务,既处理器可以调度的执行单元,可以定义任务的名称及其参数、任务堆栈的大小、任务执行的优先级等。
3.定义处理器节点的资源,如信号量、邮箱等。
4.定义任务或者处理算法的内存分配,既处理器节点变量的定义。在内存定义分配时,实时开发环境可以根据硬件配置文件实时判断内存分配的可行与否,给出提示信息。
5.定义目标程序(处理器节点的任务)调试的方案,在目标代码中生成调试程序。
在多处理器拓扑图上完成开发阶段的工作后,即可自动生成代码框架,然后开发人员在生成的代码框架上继续开发。在代码框架自动生成的环境中,事先定义好代码框架生成的模板,同时开放代码框架模板并给出说明,这样开发人员可以自行定义不同类型多处理器硬件平台、及其操作系统的代码框架模板。代码框架模板的内容主要包括:支持的数据类型、数据流通信的代码、邮箱代码、信号量代码、中断代码、调试程序代码等。
以代码建模为中心的开发模式分顺序开发流程和增量开发流程,如下图2和图3所示:
图2 顺序开发流程 |
图3 增量开发流程 |
在多处理器程序调试阶段,除了传统的调试视图,还可以增加多处理器拓扑图的调试视图。可以通过多处理器拓扑图的调试视图观察多处理器程序执行的情况,包括数据流通信情况、处理器节点任务的执行时间、内存使用情况等。
在目标机硬件诊断阶段,也可以通过多处理器拓扑图动态显示硬件的诊断结果,既直观又容易定位。
可以看出,在多处理器程序开发的主要步骤都可以围绕多处理器拓扑图进行,同时多处理器拓扑图也是很好的目标程序说明文档。这种开发模式称为以代码建模为中心的开发模式[5]。
本文作者创新点:本文设计的多处理器实时开发环境是一款开放式、基于标准的多处理器实时开发环境。在通用环境下,使得多处理器软件开发的各个阶段更趋标准化,它不仅能够显著提高开发人员、项目团队的工作效率,而且能够带来性能、集成以及实用型的独特组合,适合于多型号、多处理器目标系统的开发,包括了软、硬件系统仿真功能,工程管理和系统构建,版本管理,编辑器,命令解释器,调试工具,系统分析工具,系统观察工具等功能模块。这种统一的软件开发环境使在基于多处理器目标机的系统级开发变得简单易行。
致谢: 该文得到了湖北省科技攻关计划项目基金(编号:2004AA210B01)的支持,在此特予致谢。本文的研究是做为该项目的一个子课题来进行的,其中第一作者参与了该项目的具体开发。
[1]许家玉,经亚枝.基于DSP+FPGA的遗传算法硬件实现[J].微计算机信息,2005,(01) .
[2]刘洪星,谢玉山.Eclipse开发平台及其应用[J].武汉理工大学学报(信息与管理工程版),2005,(02)
[3]黄凯.基于Eclipse体系的构件开发管理平台的设计实现[J].科学技术与工程,2005,(14)
[4]魏晓云,陈杰,曾云. DSP技术的最新发展及其应用现状[J].半导体技术,2003,(09)
[5] 张进军,张维勇,薛来文.一种基于插件的软件体系结构[J].合肥工业大学学报(自然科学版),2005,(04)