摘要:本文介绍了一种由多个DSP构建的并行处理系统,探讨了多DSP系统中实现交叉调试的方法,详细讨论了调试器和目标机调试的具体内容,给出了调试模式下的程序方式。实际应用显示,该交叉调试系统能够有效满足多DSP系统的调试需求,拥有较好的多处理器支持性能和较高的性价比。
1 引言
随着数字技术的快速发展,多处理器并行技术在大规模数据处理系统中正逐渐被广泛运用。特别是雷达、声纳、电子对抗等高端电子应用领域,单片CPU或DSP由于运行速度和计算能力有限,已难以满足应用需求,由多处理器构建的并行系统具有很好的伸缩性和灵活性,为大规模数据处理应用提供了一种可靠的解决方案。多处理器构建的系统应用与开发中,调试是非常重要的一环,调试系统的性能及完备程度深刻影响着软件开发的效率和质量。
目前,大多数嵌入式系统采用基于JTAG口的硬件仿真器实现程序调试,JTAG技术在单片或单核处理器调试中拥有便捷和高效的性能,在多处理器系统中使用JTAG调试,需要将各个处理器的JTAG口串接起来实现。采用基于JTAG的串行技术存在许多缺点:(1)JTAG仿真器同时支持的处理器数量有限,实现多处理器并行调试比较困难;(2)实时眭不强,JTAG链上串联多个处理器时,处理速率会严重下降;(3)多处理器系统需要更多的硬件仿真器支持,成本较高。相对JTAG硬件仿真器,在多处理器系统中采用软件方式实现交叉调试具有易操作、易实现、速度快和开发成本低等特点。本文在自主研发的某款DSP构建的多DSP系统基础上,提出了相应的交叉调试技术及其实现方法。
2 多DSP系统组成及调试内容
2.1多DSP系统组成结构
多DSP系统由主机和工控机组成,是一个层次化的组成结构。主机由PC机构建,用于应用程序的开发、调试、数据存储以及与用户的交互。工控机的功能是实现大规模数据并行处理,由多块数字信号处理板和一块公共板组成,板与板之间通过总线(CPCI)实现互联。每块数字信号处理板卡由多块DSP构建,是数据处理的部件,DSP之间通过自带的互连接口(如Link口)实现互联,可依据需要构建成不l-J网络拓扑结构。公共板负责工控机的运行控制,实现运算数据的缓存、实现主机和DSP的通信等,是主机和数字信号处理板之间的桥梁,公共板与数字信号处理板之间通过总线(CPCI)连接,和主机之间通过网线或USB线连接。多DSP系统的组成结构如图1所示,数字信号处理板(DSP处理板)由5块DSP组成,公共板中内嵌了独立的通信模块分别实现与主机和DSP处理板的通信链接。
2.2数字信号处理板组成结构
数字信号处理板是数据运算与处理的部件,每块处理板由5块DSP组成,为使得数字信号处理板具有通用性和易用性,板卡上的连接方式采取混合连接方式。DSP之间既通过自带的Link口实现点对点互联,构成星型的并行系统;同时,各个DSP也通过簇总线将各自连接在一起实现共享,实现紧耦合和松耦合相结合的互连结构,数字信号处理板组成结构如图2所示。多块数字信号处理板的并行可极大的满足大容量、高速率数据处理的性能要求。
数据信号处理板以FPGA作为中介实现对外数据交换,数据传输采用CPCI总线完成。CPCI总线有J1/J2/J3/J4四个接口,其中J1和J2为64位数据传输接口,J3和J4为自定义方式接口。设计中,通过CPCI的J3口将数据读入到FPGA内部的FIFO,内部DSP芯片接受到数据后,按照预定的算法进行任务分配和并行处理,处理完毕后通过DSP0写人FPGA内部的FIFO,之后PCI接口模块从FIFO中读取数据,经过时序转换后将数据发送到CPCI总线,经儿和J2口传输到外部的其他功能模块。
数字信号处理板以工控机为平台,工控机内部可以嵌入多个板卡,板与板之间的数据传输与通信通过总线(CPCI)完成,可实现即插即用。数字信号处理板依据需要可配置成不同功能处理模块,实现不同数字信号处理。主机通过工控机内的公共板监控和访问到数字信号处理板内的各个DSP的运行状态。
2.3多DSP系统的交叉调试内容
多DSP系统是一个层次化的结构,其调试相对单DSP系统调试要复杂得多,不仅要支持对单个DSP的调试,还要支持多个DSP并行调试。具体需要实现的调试内容有:①系统管理,主要是多DSP系统的结构信息,包括各个DSP所处的板卡位置、互联关系、逻辑名称、程序信息等,相关信息应该能够比较方便地建立、修改、存储和重新导入;②配置启动,在开发者指定各个DSP的运行程序后,调试器应该能够将程序配置到各个DSP并启动运行,并且可以依据需要重新复位指定的DSP;③数据观察和修改,在程序运行期间,调试系统应该能够读出各个DSP内部存储器中的数据,并以图形、表格等方式根据不同的数据类型进行显示;④动态交互,各个DSP的应用程序应该能够通过调试系统与用户完成相应的信息交互,如运行信息显示、用户输入请求等;⑤多板卡/多DSP并行运行与调试,包括多个板卡的并行调试和每个板卡内部多个DSP的并行运行与调试。
3 多DSP系统交叉调试系统的实现
交叉调试系统实现方式是采用分层结构,具体分为调试器、监控程序和调试代理三个部分,实现主机和DSP之间的远程交叉调试。调试器运行在主机上,负责用户调试命令的解析、调试信息的生成,以及寄存器内容、变量、表达式值的查看和修改等;监控程序运行在公共板中,用于主机调试命令解析和目标机(DSP)调试信息的转换,即将主机发布过来的调试命令转换为目标机的调试控制逻辑命令,将目标机的运行信息经过封装传输到主机,同时实现主机和目标机的通信与数据传输;调试代理程序运行在具体的DSP上,进入调试状态时,负责控制和接管DSP的运行状态,修改或读取寄存器的信息等。交叉调试系统组成结构如图3所示,主机和工控机采用网络/USB通信,工控机内部采用CPCI进行通信。
3.1调试器的实现
调试器程序占用空间较大,运行在主机上,依据实现功能分成5部分:用户接口模块、调试功能模块、通信模块、目标机信息模块和操作系统支持模块,采用模块化结构,组成结构如图4所示。用户接口的功能是接收和分析调试命令信息,把调试命令以规定的形式传递给调试功能模块。用户接口功能具体又细分为调试界面模块、调试命令分析模块和显示模块。调试界面是用户输入调试命令的界面,嵌入在集成开发环境中;调试命令分析模块用来分析调试命令,如果调试命令正确,就用适当的形式把调试命令传递给调试功能模块;如果命令错误,就把错误信息传递给显示模块;显示模块的功能是显示返回给用户的各种信息。调试功能模块是调试器的部分,主要通过各种调试原语实现具体的调试功能。调试原语是指构成各种调试命令操作的原操作,操作对象是调试信息。调试信息是用来存储调试过程中收集到的与调试有关的信息,包括符号表、链接表、字符表等调试信息,在调试过程中调试原语要读取和维护调试信息。目标机信息模块用于管理目标机的完整信息,采用规范的XML文件进行描述和定义,如目标机的类型,寄存器数量和读写属性,地址、内存、流水线的详细信息等,调试器通过查询XML文件即可获取目标机的完整信息,其内容以列表方式在显示界面中显示。
通信模块的作用是实现主机和工控机的通信,支持TCP3P协议和USB协议。同时,该模块兼具可扩充性,可以依据需要增加其它通信方式的通信模块,以扩充宿主机和工控机的通信方式。操作系统支持模块的主要功能是封装了调试器中需要操作系统支持的功能,目的是使其它模块与操作系统无关,便于调试器在不同平台之间的移植。
3.2调试代理组成与目标机调试方式
调试代理是嵌入到DSP中的一段控制程序,功能是执行调试器的调试命令和返回DSP运行状态信息等。调试代理主要由调试命令执行模块、通信模块、程序控制模块和操作系统接口模块组成。通信模块与调试器的通信模块相对应,采用支持总线的通信协议,功能是接收公共板卡监控程序解析后的调试命令。程序控制模块的功能是根据调试命令来控制被调试的二进制代码的运行过程。调试命令执行模块的功能是依据调试命令,控制程序的执行过程,协调通讯模块和代码控制模块之间的协作。
操作系统接口模块功能是支持基于操作系统的调试,将其它模块和嵌入式操作系统进行隔离。调试代理的这种结构可以较好地解决多目标机的问题,在目标机端,只有操作系统支持模块是与目标平台相关的,因此,在向一个新的目标机移植时,只需要修改这个模块即可,目标机的调试代理模块组成结构如图5所示。
目标机调试支持两种方式:基于裸板调试和基于操作系统调试。裸板调试主要发生在嵌入式系统的开发初级阶段,一般采用“片上调试”技术。片上调试实现是在调试器的操作系统接口模块中开发对应的“片上调试”协议,并在调试功能模块中添加相应的功能实现。
3.3调试程序的
加载程序的方式主要有两种:和引导。两种加载方式的主要区别是DSP开始执行代码的时机不同:采用方式时DSP直到所有的指令和数据都已经写人内存后才开始执行代码;采用引导方式时DSP在接收到引导内核后就立即开始执行。引导的加载方式比较灵活,适用于加载方无法直接访问被加载方存储器的情况。
本文针对多DSP系统的自身特点,采用了引导模式,引导程序加载步骤为:(1)以某个DSP(DSP0)为主片,通过默认的Link口将主内核引导程序存放到本DSP中,引导程序加载完毕后产生相应的DMA中断,DSP从地址0开始执行内核引导程序,由内核引导程序实现从DSP(DSPl。4)的内核引导程序和用户代码的加载;(2)从DSP(DSPl~4)分别依照顺序实现3个部分内容,将内核引导程序的加载本DSP的空间中、运行引导程序实现用户代码的加载,实现用户程序替换内核加载程序;(3)从片加载完毕后,主片实现用户程序替换内核加载程序,对DSP进行复位,以便执行用户程序。
4系统设计与应用
本文在国内某款具有自主知识产权的DSP基础上,设计了一个多板卡多DSP应用系统。该芯片接口丰富,具有优越的性能指标:(1)运行速度为2ns指令周期(500MHz),每周期可多执行16条指令;(2)内部有4个运算模块,支持16bit/32bit定浮点运算;(3)每秒可执行30GFLOPS运算或4.8GFMACPS运算;(4)有4个Link口,每个Link口可提供达1.2GB/s的传输速率;(5)可通过总线或Link口方便地构成星型、网络状等多处理器系统。
应用系统的每个板卡包括5个DSP,多个板卡集成在工控箱中,每个工控箱配置一个公共板卡用于调试和数据传输。
在设计的多DSP系统处于调试状态下时,该交叉调试系统可以方便快捷的查看不同处理板内各个DSP内部的寄存器、PC值、存储器内容和流水线等信息,可有效满足多DSP系统调试需要,实现多个板卡的并行调试。特别是标准XML文件对处理板和DSP各种信息的管理,用户可快速以信息匹配的方式获得程序运行的变量、寄存器和表达式内容等各种DSP状态信息。同时,实现了处理板和DSP信息管理的模块化,增加了调试器对不同类型目标机/DSP的支持程度。
5 结论
针对多DSP并行系统,提出了层次化交叉调试的设计方案,在给出多DSP系统硬件架构模型的基础上,讨论了软件调试系统的具体实现方法。调试系统采用模块化结构,各个模块松散耦合,便于编码实现和平台之间的移植。经过验证,该调试系统可满足多DSP系统的调试需求,有效减轻多DSP系统的调试工作量;能有效解决多目标多DSP系统的并行调试问题,有效解决JTAG模式下难以实现多DSP交叉调试问题,可同时支持片上调试和基于操作系统调试两种方式,具有一定可操作性。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。