一种面向多核DSP的集成开发环境的研究与实现

2015-05-29 12:45朱艳林广栋
电脑知识与技术 2015年10期

朱艳 林广栋

摘要:该文提出了一种面向多核数字信号处理器的集成开发环境软件。该开发环境基于Eclipse的开源代码基础,开发相应插件,集成多核DSP的汇编工具链、C编译器及调试工具。针对多核DSP的多核并行特性,对Eclipse的CDT/DSF框架进行了改造和扩展,以支持多核调试。为面向多核DSP应用的开发人员提供了一个集成编译、工程管理、调试管理的可视化开发环境,提高开发的速度和质量。

关键词:集成开发环境;多核;Eclipse;DSP

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)10-0099-03

DSP是一种用于处理数字信号处理的专用处理器。在电子技术各个领域,例如雷达、声纳、语音通信、数字通信等,正广泛使用DSP处理器搭建的系统处理日益庞大的数字信息。

为了解决计算能力需求与功耗增加之间的日益突出的矛盾,近几年DSP的设计正在向增加处理核数量的方向发展[1], 多核DSP以较低的功耗提供了更强的计算处理能力。但是多核DSP的并行特性也给DSP的开发者带来了新的挑战,不仅需要新的编程模型和代码框架,还需要新的支撑工具环境支持多核并行编程和调试。

Eclipse及C/C++ Toolkit(CDT)是目前在嵌入式领域广泛使用的集成开发环境,集成了编译、工程管理、代码分析索引、源码调试等多种开发功能。Eclipse和CDT还是可扩展的,为开发者提供了丰富的接口,在Eclipse平台上嵌入新的组件,并能与平台无缝集成。

本文提出一个面向多核DSP的集成开发环境,集成了多核DSP的汇编工具链、C编译器及调试工具。为面向多核DSP应用的开发人员提供了一个集成编译、工程管理、调试管理的可视化开发环境,提高开发的速度和质量。

1 概述

多核DSP的集成开发环境的架构如图1所示。集成开发环境基于Eclipse和C/C++ Development Tool(CDT)构建。Eclipse是一个开放源代码的、基于Java的可扩展开发平台。开发者能够将开发套件、图形功能以及任何必须的功能通过统一的插件接口集成到同一个开发环境中。CDT是Eclipse社区的一个子项目,致力于开发在Eclipse环境下C/C++语言开发环境的插件,该插件提供了C/C++开发需要的工程管理、编译管理、调试管理等功能框架。

多核DSP集成开发环境在Eclipse和CDT的基础上,开发汇编插件、C编译插件和调试插件,分别用于集成多核DSP的汇编工具链、C编译器和调试工具。工程管理插件用于管理工作空间中的多核DSP工程,提供新建工程、工程属性配置、工程模板生成等。

图1 多核DSP的集成开发环境的架构图

在多核DSP集成开发环境中,用户能够新建面向多核DSP的汇编语言工程或C语言工程,环境在编译工程时能够自动选择汇编工具链或C编译器进行编译。代码编译成.out可执行文件后,用户可以进行源代码调试,环境支持针对一个核的调试,也支持对多个核的同步调试。用户可以执行在指定单核上的单步、运行、暂停等调试命令,也可以对指定的DSP核组合同步执行这些调试命令。用户也可以设置断点、观察点,查看和修改寄存器、内存、变量等调试数据,进行反汇编等调试操作。集成开发环境提供内存绘图的功能,使用户能够已曲线图来查看内存数据。

多核DSP集成开发环境的用户界面如图2。

2 系统设计

2.1 汇编工具链及C编译器的集成

为了集成第三方汇编工具链和编译器,CDT提供了受管构建系统(Managed Build System, MBS),使用户能够在Eclipse标准用户接口中创建、移除、重构自定义工程,并且提供一个工程属性页面使用户能够配置各种编译选项。

MBS提供了org.eclipse.cdt.managebuilder.core.buildDefinitions扩展点,定义包括工程类型projectType、配置configuration、工具链toolchain、构建器builder、工具tool、工具选项类型category、工具选项option、输入输出类型inputType、outputType等DOM元素,用于定义构建工程所需要的各个方面。用户只需要配置plugin.xml插件脚本文件扩展该扩展点,就可以集成第三方工具链,并且能够指定相应的构建工具、构建顺序、编译选项、输入输出文件类型等信息。MBS能够自动根据用户的配置生成正确的创建文件makefile,并调用外部构建工具(默认的是GNU的make)完成工程编译工作。

多核DSP集成开发环境基于MBS集成了多核DSP的汇编工具链和C编译器occ[2]。系统扩展了org.eclipse.cdt.managebuilder.core.buildDefinitions扩展点,定义了两个projectType元素,分别对应汇编工程和C语言工程,在两个元素下分别定义汇编和C语言两个工具链,并为每个工具定义输入输出文件类型和工具选项。

2.2 工程管理设计

为了提升工程管理功能的用户体验,系统没有使用MBS默认的org.eclipse.cdt.managedbuilder.ui.newWizardPages扩展点,而是使用了Eclipse原始的org.eclipse.ui.newWizards扩展点,来定义在新建工程时所显示的配置页面。多核DSP集成开发环境的新建工程配置页面允许用户指定工程名称、工程路径、目标DSP芯片类型、开发语言(汇编语言或C语言)、是否需要嵌入式操作系统支持等工程选项。工程生成时集成开发环境会根据用户的配置来选择合适的工程类型projectType,并且根据用户的选择来配置相应的工具选项。

DSP工程由源文件和链接描述文件等文件构成,为了给用户提供一个可用的工程模板,系统扩展了org.eclipse.cdt.core.templates和org.eclipse.cdt.core.templateAssociations扩展点,为汇编工程和C语言工程分别定义了工程模板,并把工程模板与MBS中定义的工程类型projectType联系起来。这样,用户在新建工程时系统能够自动在硬盘上生成源文件和链接描述文件模板。

2.3 多核调试

多核DSP的调试管理是基于调试服务框架(Debugger Services Framework, DSF) [3]设计的。DSF是Eclipse提供的一个新的应用程序接口,用于在Eclipse中集成外部调试器,代替传统的标准调试接口CDI。DSF不仅能够帮助开发者更加弹性灵活的配置调试界面,使用DSF还能够达到更高的调试性能,特别适合速度较慢或远程调试的目标机。

DSF是面向服务的框架,基于OSGi(Open Service Gateway Initiative)规范。OSGi是一个基于java的软件平台,支持软件的模块化、即插即用的动态服务及可扩展性。调试相关的各种功能以服务的形式嵌入集成开发环境,包括调试后台服务、运行控制服务、断点管理服务、寄存器管理服务等,各个服务通过DSF的接口注册到服务注册表,并由调试会话类DsfSession统一管理同一个调试会话中的所有服务及服务之间的通信。

多核DSP集成开发环境的调试功能设计架构如图3所示。多核DSP集成开发环境集成了多核DSP主机调试器MCCD [4],实现具体的调试功能。调试环境与MCCD之间通过文本格式的进程间通信管道传输调试命令与调试返回信息,该调试信息遵循MI接口格式,但针对多核DSP的特点扩展了调试命令及信息。当使用软件模拟器(Simulator)调试时,主机调试器通过socket与模拟器之间进行通信,当调试目标是硬件电路板时,主机调试器通过以太网接口与调试链接服务软件交换调试报文,调试链接服务软件通过JTAG控制多核DSP芯片进行调试工作。

MI接口原本是GDB的一种用户接口,称为机器解释(Machine Interpretation) 。是一种基于文本行的、面向机器的文本接口,尤其适用于当调试器作为一个较大系统一部分而存在的场景。多核DSP集成开发环境对MI接口进行了扩展,使MI接口支持针对每个核的单独控制和调试数据读取。同时增加了包括同步运行、同步暂停、同步暂停等多核调试运行控制命令。

在多核DSP集成开发环境中,用户可以为每个核配置相应的可执行加载文件并启动调试。调试视图中会显示每个核的运行状况及堆栈信息。当用户在调试视图中选择任意核或其下面的条目时,由于调试视图为整个调试透视图提供调试上下文,寄存器视图、变量视图、反汇编视图也会根据当前上下文反映当前选中核的信息;运行、暂停、单步跳入/跳出/跳过按钮也会根据选中的上下文对当前选中核进行控制操作。根据多核DSP的特点,调试环境提供了组运行、组暂停等同步调试功能,并提供核心组的配置及选择的功能。

2.4 内存绘图功能

DSP是针对数字信号处理所专门设计的处理器,用户经常需要通过波形查看输入和输出数据,以了解数据的特性。为此,多核DSP集成开发环境设计了内存绘图的功能,用户能够指定内存起始地址、内存长度、内存间隔、数据格式,开发环境读取这些数据,并绘制曲线图,如图4所示。

3 结束语

本文提出了一种面向多核高性能数字信号处理器的集成开发环境软件。为多核DSP的开发应用者提供了一个集成编译、工程管理、调试管理的可视化开发环境。为用户提供了一个界面友好、功能完备的软件开发环境,支持工程管理和编译,支持单核调试和多核调试,实现了多核同步运行控制、针对每个核的调试数据查看等调试功能。下一步的工作是在面向多核实时操作系统的多任务系统级调试研究。

参考文献:

[1] Karam L J, Alkamal I. Trends in multicore DSP platforms[J]. IEEE Signal Processing Magazine, 2009, 26(6): 38-49.

[2] 王昊, 王向前. BWDSP SIMD WHIRL中间表示生成研究[J]. 中国集成电路, 2015(3): 30-35.

[3] Introduction to Programming with DSF[EB/OL]. http://help.eclipse.org/indigo/topic/org.eclipse.cdt.doc.

[4] 林广栋, 黄光红. 一种统一的调试信息管理方法[J]. 中国集成电路, 2014(11): 33-37.