基于ICE仿真器的多核系统软件调试
引言:软件调试是开发嵌入式系统中难度大、最直接影响产品质量的重要环节。由于UML语言无法满足对嵌入式系统的时实性要求,所以ICE(在线仿真器In Circuit Emulator)作为嵌入式系统的实时调试工具。
在各种领域得到了广泛的应用。本文结合日本横河数字计算机公司的Advice系列仿真器详细介绍了多CPU的嵌入式系统的调试。
对于开发嵌入式系统,软件调试一直是一个难度大、直接影响产品质量的重要环节。利用UML语言进行系统设计,对软硬件进行仿真,作为一种调试方法,对硬件设计完成前的上流设计工作的调试,是一种比较有效的方法。但是,由于它是一种计算机上的虚拟调试环境,无法满足对嵌入式系统的时实性要求,所以ICE(在线仿真器In Circuit Emulator)作为嵌入式系统的实时调试工具,在各种领域得到了广泛的应用。
ICE仿真器是用来仿真CPU核心的设备,它可以在不干扰运算器的正常运行情况下,实时的检测CPU的内部工作情况。像桌面调试软件所提供的:复杂的条件断点、先进的实时跟踪、性能分析和端口分析这些功能,它也都能提供。在开发8位处理器时,通常采用传统的ICE,通过插座或者相应的夹具替代CPU来进行仿真和开发工作。而对于16位或者32位的嵌入式处理器来说,因其过高的时钟频率(50MHZ 至400MHZ以上)和复杂的封装形式(如BGA)导致传统的ICE很难胜任开发工具的工作。现在越来越多的CPU(如ARM系列)借助于边界扫描接口(JTAG口)来提供调试信息,供开发者进行开发。JTAG口通常是一个14Pin或20Pin的插座,可直接从CPU获取调试信息。JTAG仿真器的一端通过JTAG连接电缆与目标板相连,另一端则与主机的调试环境相连(如图1所示)。与主机的连接方式通常有三种。一是并口方式,一是USB口方式,另一种是网口方式。

图1:调试连接示意图
通过JTAG接口连接好系统后,使用相应的调试环境(Debugger)就可以开始进行嵌入式系统的调试了。调试过程与PC软件开发调试的过程非常相似,可以进行复杂的条件断点、实时跟踪、性能分析和端口分析这些功能。调试环境如图2所示。

图2:调试界面
随着手机、PDA等智能终端的各种多媒体功能的不断增加,CPU的处理越来越复杂,单核CPU已经难以完成这样复杂的工作,需要多CPU协调工作来完成各项任务。以手机为例,随着数码像机、MP3播放器、视频播放器等功能的增加,单CPU已经无法承担这样复杂而繁重的工作,致使系统响应速度急剧下降。这种情况下,就需要采用双CPU或多CPU系统 ,将负责应用功能的CPU同负责射频通讯功能的CPU分开。这样不仅增强了系统的运行能力,同时因为在待机状态下,只有通信功能CPU工作,这样也可以保持较低的功耗。
对于这种多CPU的嵌入式系统的调试,目前常用的方式是每一个CPU都需要单独连接一台仿真器(ICE),并在计算机上针对每一个CPU打开一个单独的界面。这种调试方式的关键就是如何保证仿真器间的硬件同步和各个调试界面间的软件同期。
日本横河数字计算机公司是一家专门提供嵌入式开发工具和解决方案的日本知名企业,对多CPU系统调试具有非常丰富的实践经验。自1989年成立以来,其研制的Advice系列仿真器,在日本无线终端开发市场上占有接近80%的市场份额。采用Advice仿真器进行多CPU同期调试,可以通过仿真器间的外部触发接口的通信来保证仿真器间的硬件同步,多核调试服务器软件可实现软件间的同步,这样就可以同时控制多个CPU进行同期的联动调试。调试是通过多核调试服务器,进行统一协调控制,各调试终端通过以太网或USB和服务器连接,多个调试界面可以同在一台计算机上,也可以分开在多台计算机上。
PC (A) 多核调试服务器
IP地址:10.20.156.120
PC (B)
IP地址:10.20.156.127
PC (C)
IP地址:10.20.156.115

图3;多核调试示意图


进行多核调试时,首先需要启动多核调试服务器,然后在其它终端上设定多核调试服务器的连接方式。
1、 命令执行的同步
在多核调试服务器上执行Reset、Go、Stop等命令,各终端上的Debugger软件就会同步执行相同命令。也可以根据需要对Reset、Go、Stop等命令的同步进行单独设定。

2、 选择需要同步的CPU。

上图是多核调试服务器控制着三台调试终端(IP地址分别是:10.20.156.120;10.20.156.127;10.20.156.115),对三个CPU(两个ARM和一个XTENSA)进行同步跟踪调试,可以对需要进行Reset同步、Go同步、Stop同步的设备进行单独设定。以上图为例,A、B、C三台终端可同时进行初始化,A、C可同步运行,A、B可以同步停止。这样就可以根据需要灵活地进行各种同步设定。这种同步可以是相同CPU间的,也可以在不同种类的CPU之间进行。
3、断点同步

断点同步是多核系统调试的重要内容之一。在对多CPU系统进行调试时,当其中一个CPU在一定条件下发生中断,其它的CPU也能同步地停止运行,这样就可以对系统的当前状态进行准确的分析和研究。可以通过设定终端的IP地址来指定需要同步的CPU,并且可以选择需要同步的断点类型。以上图为例,终端A(10.20.156.120)与设在终端B(10.20.156.127)上的两个软断点同步(由图可知两个软断点分别设在文件sample.c的第67行和第77行)。当CPU B运行到sample.c的第67行和第77行时,会因为设定了软断点而发生中断,暂停运行。多核调试服务器会同步发出指令给终端A,使CPU A也同步停止运行。
这种多CPU的嵌入式系统,成本高、结构设计复杂、易受外界条件影响,而且在调试当中一个CPU发生故障时,其他CPU的情况状态很难把握,问题发生的原因也很难确定。
为了解决这些问题,一些芯片厂商设计出了多核处理器,也就是说,在一个芯片当中含有多个CPU核。例如:多个ARM内核;ARM内核+DSP内核;多个ARM内核+多个DSP内核。这些核像一个个CPU一样,互相协调、工作。这样既降低了成本,又提高了系统的集成度和稳定性。
横河数字计算机的最新产品AdvicePro,是一款专业级的ICE仿真器,具有超高速的命令执行速度和内存、闪存读写速度,闪存下载速度可达每秒2兆字节以上。这种高速性使得一台ICE仿真器同时跟踪多个CPU内核的运行成为可能。它通过JTAG扫描链来自动检测硬件系统的内核,用户可以根据需要来显示多个链接的内核,同时可以为每个内核打开一个窗口,因此可以使用多个窗口显示多个链接的内核。用户可以通过配置来对各个被调试的内核进行异步控制或同步调试。例如单独控制每个内核运行;也可以通过设置寄存器和系统参数来对各个被调试的内核进行同步跟踪测试。
今后随着芯片技术的发展,在不断提高CPU运行速度的同时,单CPU内所包含的核的数量也会不断增加,对多核调试设备会产生更高要求,尤其在响应速度和数据传输量等方面。从另一方面,为了能够提供更好的开发和调试环境,芯片制造者会在芯片上设计出更有效的调试、代码跟踪用接口。

本文来源:嵌入式在线 作者:上海横河国际贸易有限公司 市场部 孟繁普
关于 工业控制 的相关解决方案
- 2007-12-20基于ICE仿真器的多核系统软件调试
- 2007-12-19基于AVR单片机的负荷缸多路遥控开关编解码实现
- 2007-12-19数字放大器的单端设计
- 2007-12-19使用新SRAM工艺实现嵌入式ASIC和SoC的存储器设计
- 2007-12-19基于单片机控制的新型智能电梯语音系统设计
工业控制 相关产品动态
- 2007-10-30研华推出无风扇坚固车载/嵌入式平台DVS-355
- 2007-09-13艾讯 8.4 吋无风扇触控式平板液晶电脑GOT-3840TL新上市
- 2007-05-31罗克韦尔推出最新增强型系列工业控制器
- 2007-04-18Hittite新推出3款宽带压控振荡器
- 2007-04-17研祥智能助力北京绿色奥运

