【摘要】:调试是嵌入式系统开发过程中必不可少的重要环节。ROM仿真器可以缩短调试周期、灵活设置断点和仿真多种接口。这种设计确保ICE始终保持对系统运行的控制,甚至在目标系统崩溃后也是如此,保护调试代理不受目标系统错误的破坏。JTAG命令独立于处理器的指令系统,可以完全控制处理器的动作,因此JTAG调试方式是目前最有效的调试方式,与ICE相比成本低,与软件仿真器相比功能强,局限性小,可以查找硬件的故障点。
调试是嵌入式系统开发过程中必不可少的重要环节。调试的方法也是多种多样,这里将详细叙述以下几种调试方法。
(1)ROM仿真器
ROM仿真器就是用RAM以及附加电路仿真ROM。ROM仿真器是一个有两根电缆的盒子,一端连接到主机串口,下载新的程序到ROM仿真器;另一端插在目标系统的ROM插座上,目标平台认为它在访问ROM,而它实际访问的是ROM仿真器的RAM,该RAM中含有用户所下载的用于测试的程序,如图1-8所示。
图1-8 ROM仿真系统
ROM仿真器的用途是为程序开发过程(编辑、编译、下载、调试)节省时间,不用频繁进行插拔、擦除、烧写、校验等重复性耗时操作。使用ROM仿真器,可将生成程序用ROM仿真器下载到目标系统,然后运行该程序,并根据运行结果对主机程序进行修改。ROM仿真器可以缩短调试周期、灵活设置断点和仿真多种接口。
(2)在线仿真
在线仿真(In Circuit Emulator,ICE)是最直接的仿真调试方法。ICE提供自己的CPU和内存,不再依赖目标系统的CPU和内存。电缆或特殊的连接器使ICE的CPU能代替目标系统的CPU。ICE的CPU一般与目标系统的CPU相同。ICE和目标系统通过连接器组合在一起,这个系统在调试时使用ICE的CPU和内存、目标板上的I/O接口。完成调试之后,再使用目标板上的CPU和内存实时运行应用程序。目标系统程序驻留在目标内存中,而调试代理存放在ICE的内存中。当处于正常运行状态时,ICE处理器从目标内存读取指令。当调试代理控制目标系统时,ICE从自己的本地内存中读取指令。这种设计确保ICE始终保持对系统运行的控制,甚至在目标系统崩溃后也是如此,保护调试代理不受目标系统错误的破坏。
这种调试方法的优点是具有实时跟踪能力,缺点是价格较高,特别是高速CPU在线仿真器一般价格昂贵。
(3)在系统编程(www.chuimin.cn)
在系统编程(ISP)是指直接利用系统中带有JTAG接口的器件,如CPU、CPLD、FPGA等,执行对系统中程序存储器芯片内容的擦除和编程操作。一般而言,高档微处理器均带有JTAG接口,系统程序存储器的数据总线、地址总线和控制信号直接接在微处理器上。编程时,使用PC接口通过专用电缆将系统电路板与PC联系起来,在PC上运行相关程序,将编程数据及控制信号传送到JTAG接口的芯片,再利用相应指令从微处理器的引脚按照Flash芯片的编程时序输出到Flash存储器。这种编程方法的条件是系统中必须存在带有JTAG接口(或与之兼容)的芯片,如微处理器。优点是系统板上不需要增加其他与编程有关的附属电路,减小了电路板的尺寸,同时避免了对微小封装芯片的手工处理,特别适用于对电路板尺寸有严格限制的手持设备。缺点是编程速度慢,对于代码长度小的编程比较适合。
(4)JTAG调试
JTAG(Joint Test Action Group)是一种国际标准测试协议(与IEEE 1149.1兼容)。JTAG仿真器包括硬件和软件两部分。硬件有两个接口,一个接口连接到计算机上,有串口、并口、网络口、USB口等;另一个接口与目标处理器的JTAG引脚相连。软件把调试命令和数据通过仿真器发送到目标处理器中,然后接收目标处理器的状态信息。通过分析状态信息,可以了解目标处理器的工作情况。通过JTAG命令,用户可以控制目标处理器的运行(单步、断点、寄存器检查等)。
现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线,分别为模式选择(TMS)、时钟(TCK)、数据输入(TDI)和数据输出(TDO)线。JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test AccessPort,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程再装到板上的方法也因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG命令独立于处理器的指令系统,可以完全控制处理器的动作,因此JTAG调试方式是目前最有效的调试方式,与ICE相比成本低,与软件仿真器相比功能强,局限性小,可以查找硬件的故障点。
目前大多数嵌入式处理器厂商在其处理器上集成了JTAG接口,如ARM。不管ARM内核的处理器来源于哪个厂家,其JTAG接口都是兼容的。JTAG标准仅仅定义了与处理器一起使用的通信协议,而JTAG循环如何连接到核心元器件,以及作为运行控制或观察元器件的命令集做什么,都由厂商自己决定。
(5)软件仿真器
软件仿真器利用软件来模拟处理器硬件,模拟的硬件包括指令系统、外部设备、中断、定时器等。用户开发的应用软件像下装到目标系统硬件一样下装到软件仿真器中进行调试。
功能强大的软件仿真器可以仿真处理器的每一个细节,包括外设和中断,简单的至少可以仿真CPU的指令系统。有的软件仿真器提供了对指令的执行时间的仿真,其使用的软件时钟有两种:一种是实时时钟,利用CPU的时钟运行嵌入式处理器的指令,只仿真指令的执行结果,不仿真执行时间;另一种是仿真时钟,用户可以设置仿真时钟与处理器的时钟相同,不仅可以仿真指令的执行结果,也可以仿真指令的执行时间和软件的执行时间,如ARM公司的AXD仿真器。高档仿真器可建立一个较大的实时系统的模型,甚至能仿真不存在的硬件。因此开发者可以就一个硬件还没有开始设计的项目进行软件开发,并验证软件的正确性、实时性等指标。
相关推荐