A VR JTAG ICE
用户手册
Rev3.2R
2005-07
第一章、 J TAG ICE相关信息
A VR JTAG接口是具有4线测试存取通道(TAP)的控制器,完全符合
IEEE1149.1 规格要求。IEEE1149.1已经发展成为具有能够有效地测试电路板连通性的测试标准(边界扫描)。Atmel公司的AVR 器件扩展了它一些功能,包括能够支持完整的编程和调试。
在线代码运行器Mcuzone提供采用标准的JTAG接口,并与ATMEL官方的JTAG ICE完全兼容的AVR调试工具,使用户能够以极低的成本对具有JTAG调试接口的目标AVR芯片进行实时在线仿真和编程。
AVR OCD(On Chip Debugging 在芯片调试)协议使用户对AVR 单片机的内部资源能够进行完全的实
时监控。
下面简单介绍一下JTAG ICE相关信息。
JTAG ICE与OCD系统:
下面简单介绍通过JTAG 接口进行在芯片调试(OCD)的概念及其与传统仿真方式之间的差异。
OCD与传统仿真方式的比较:
传统的仿真器可以对单独的或一组器件(前提是该组器件必须有很大的相似性)进行仿真。例如,我们仿真ATmega16,仿真器硬件就会设法效仿该器件的准确行为。越接近目标器件的实际动作,仿真器性能越好。下面的框图简单地描述了传统仿真方式的仿真通道。
传统的仿真器的仿真头一般价格比较昂贵,动辄几百,而且经常出现仿真不同的目标芯片需要更换不
同仿真头的情况,另外在使用传统的仿真器进行仿真的时候还经常出现一个问题,就是仿真的时候一切工作正常,但是当把程序写入到目标芯片后却怎么也运行不起来,使用传统仿真器的用户一般都会遇到这个问题,此外使用传统仿真器的时候由于部分仿真器本身的原因可能会占用掉目标芯片的一部分资源,比如串口和若干的堆栈空间。
而JTAG ICE则使用一种不同的方式实现目标系统仿真。JTAG ICE能够与目标AVR片内的芯片调试系统进行接口,并通过JTAG 接口监控AVR器件的行为。
所有带有JTAG 接口的AVR器件(ATmega16及以上),都具有OCD 模块,该模块能控制目标芯片执行相关操作。所以当JTAG ICE发生一个传统的仿真行为时,JTAG ICE 将会控制目标芯片执行指令代码。下面是OCD系统的框图。
使用OCD系统,可以精确实现器件的时序和电特性。但从另一方面来说,传统的仿真器通常具有更好的可视性,可以更好地控制器件的内部资源。例如,应用AVR OCD系统就不能实现类似象跟踪缓冲器这样的功能。
另外使用由于OCD的性能限制,在使用AVR JTAG ICE进行调试的时候对于某些资源的访问有限制,具体内容将在后面讨论。
调试代码时,知道JTAG ICE 和传统的ICE 操作的不同之处是很重要的。下面将介绍一些注意事项。
1.运行模式
在该模式下,代码完全独立地在AVR器件中运行而不受JTAG ICE 的控制。JTAG ICE会不断地检查代码是否已执行到断点。当代码执行到断点时,OCD 系统会中断代码的执行,并把所有可能需要的数据(PC 指针、IO 寄存器、EEPROM、通用寄存器组和SRAM)通过JTAG 接口由JTAG ICE传送给软件开发环境(IDE),如AVR STUDIO。由于代码独立运行不受JTAGICE 控制,所以在断点发生前JTAG ICE无法跟踪代码的执行状态。
2、停止模式
在执行到断点时,程序将被挂起,但IO的操作则仍在运行,就好象没有运行到断点时一样。假定,当断点达到时,SPI传输刚刚开始,如果使用一个传统的在线仿真器,将中断SPI的传输,如果单步执行代码,那么将这在MOSI引脚上精确地单步输出相应的位值。如果使用JTAG ICE 来做AVR 的仿真,AVR 的SPI 将会全速执行完这一传输。
3、断点
AVR 的OCD系统具有两类断点:软件断点和硬件断点
3-a、软件断点
软件断点是代码中的“BREAK”指令。执行这个指令时,程序将被挂起。要继续执行程序,必须从OCD逻辑中给出“start”命令。值得注意的是,并非所有的AVR 器件都支持“BREAK”指令。当在AVR Studio 中添加一条断点指令时,这条指令也将被编译并物理地写入到AVR的闪存中。当执行到这条指令时,程序将会中断。
3-b、硬件断点
在OCD系统中有四个寄存器,任一个都可以存储一个存储器地址。JTAG ICE 需要使用一个寄存器存储单步断点,其余的3 个寄存器能以不同的组合来产生有效的中断条件。由于软件断点要重写整页的flash 数据,在断点经常改变时推荐使用硬件断点.但是,正如前面所说,硬件断点仅有三个,当在IDE中设置超过三个的硬件断点时,将出现警告.
4、寄存器的可见性(IO 寄存器)
从IO可见性上看,JTAG ICE 有一定限制。可见性指的是察看所有的IO寄存器中的内容。当AVR 器件运行到断点时,所有IO 寄存器中的内容被读出,并显示在前端软件开发环境中。由于读某些寄存器的操作可能改变另一些寄存器中的内容,所以这些寄存器不允许被访问。(例如读USART 数据寄存器将要清RXC 位)。
相关内容可以参见文末。
5、单步调试
当一些控制信号被使能后,某些寄存器(WDT,EEPROM等)必须在指定的时钟周期内被读写才是有效的。因为在停止模式,IO时钟和外设仍然全速运行。单步执行这样的代码则无法得到正确的时序。因为在单步操作过程中已经执行过了无数个IO 时钟周期。为了能满足时序要求,正确地读写这些寄存器,在单步调试这样的代码时应该尽量地使用“宏”、“函数”或“执行到光标”这样的操作。
6、支持的器件
JTAG ICE 支持所有带有JTAG 接口的AVR单片机。随着新器件的不断推出,JTAG ICE也将通过升级的软件开发环境对这些新器件提供支持。一般Mcuzone在出货的时候提供当前最新版本的固件,如果
日后需要更新,Mcuzone 将提供永久免费升级服务。
第二章 快速入门
本章将介绍以下内容:
1,硬件环境
讲述JTAG和PC以及目标板的连接
2,软件开发环境
包含以下子内容:
2.1 AVR STUDIO的启动
2.2 AVR JTAG ICE属性设置
2.3 AVR JTAG ICE的选项卡介绍
在开始使用AVR Studio前,应将目标板、AVR JTAG ICE和PC机先连接起来。为保证AVRStudio的正确自检,推荐在打开AVR Studio前应该先完成硬件连接。
一、硬件环境:
1、将JTAG ICE连接到PC机上
JTAG ICE 使用标准的RS-232口(V1和V2版本)或USB(V3版本)口通信。将JTAG ICE(V1和V2版本)的串口线连接到PC机的一个空闲COM端口或将JTAG ICE(V3版本)连接到PC机的USB口。AVR Studio将通过COM端口(V3
采用了USB到COM的桥接设计,对AVR STUDIO而言也可以认为是一个COM口)自动检测端口上存在的JTAG ICE 仿真器。如果有其它程序占用COM 端口(如串口调试助手,超级终端等),那么在启动AVR Studio前应先关闭这些程序,否则AVR STUDIO将不能正确检测到JTAG ICE。
2、将JTAG ICE和目标电路板相连
至少有6 根线从JTAG ICE 连到目标板上,包括
T CK,TDO,TDI,TMS,VTREF,GND。可选的线包括:VSUPPLY,NSRST。VSUPPLY 用于通过目标板为JTAG ICE供电或者通过JTAG ICE为目标板供电(V1可以从目标板供电也可以通过外部3-5V稳压电源插头进行供电;V2板载LDO,可以从目标取电,也可以通过外接外负内正,7-9V DC的Adaptor为目标板提供3.3V电源,或者使用外部3-5V的稳压电源插头进行供电;V3直接从USB口取电,并可以
为目标板提供3.3V或者5V电压)。NSRST 用于监控目标复位线。仿真时不需要该信号。但如果应用程序在MCUCSR中设置了JTD位,JTAG接口将无效。为使JTAG ICE 对目标AVR 重新编程,就需要控制复位引脚。
下面将对在目标板和JTAG ICE 间的6线连接做介绍。(在下图中用实心线画出的6 根)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。