JTAG调试.docx
- 文档编号:9657304
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:19
- 大小:221.94KB
JTAG调试.docx
《JTAG调试.docx》由会员分享,可在线阅读,更多相关《JTAG调试.docx(19页珍藏版)》请在冰豆网上搜索。
JTAG调试
JTAG仿真器原理
调试的基础是检测,而检测有“无损(non-intrusive)”和“无损(intrusive)”之分。
理想的检测手段应该是不使被测对象的状态(包括时序)因此而造成任何改变,否则测到的数据就不准确了。
可是,严格意义上的无损检测不可能实现,因此实际上是“测不准”的。
人们所能做到的只是尽量减少对被测对象的状态改变,将误差减少到可以接受的程度。
这还是比较容易理解的。
不过原来看ARM资料的时候,调试手段一大堆,但是都没有深刻的印象,以致于以前还一直在怀疑,为什么下载的jflash-s3c2410,不能通过仿真器下载呢?
现在想想,其实对于什么是调试器,什么是仿真器,调试的模型是什么都是非常模糊的,所以下决心首先从概念上理解调试模型。
之后随着技术深入,可以逐步深入理解调试技术。
现代调试技术大致可以归为指令级仿真调试和硬件仿真调试两种。
1指令级仿真调试
我想这个比较容易理解。
指令集仿真调试属于纯软件仿真,比如ARM公司的ARMulator。
因为有的时候嵌入式软件的开发需要在目标系统(硬件)并不存在的条件下进行,所以需要这种通过软件来模拟目标系统的CPU。
现在有个开源项目skyeye,也是这样一个指令级仿真调试工具。
这一系列的软件以数据结构来模拟目标机CPU中各个寄存器和其他资源,以及目标系统的有关资源(比如内存等),并且通过软件模拟,即逐条指令地解释执行目标机可执行映象中的程序。
例如,“movr1,#0”,就代表往寄存器r1的数据结构中写0,如此。
模拟执行的速度当然慢一些,但是可以验证逻辑,在某些条件下是一种重要的手段。
2硬件仿真调试
现在比较成熟的技术有如下四种:
·Ad-hoctest
·Scan-basedtest
·Build-in-selftest
·Boundary-scantest
因为不是专业研究这个方向,对这四个测试技术的区别也没大有必要深究。
现在重点来看第四种技术,Bounary-scantest,即边界扫描技术。
ARM普遍采用了边界扫描技术,协议标准为IEEE1149.1,简介原来的文章也谈到过了,就不必多说了。
关于JTAG,它的作用主要有如下两个方面:
⏹映象的下载。
嵌入式系统软件的开发,在Host上完成目标映象之后,要在“裸机”上实现第一个程序的“自举”下载固化到flash中,就需要通过JTAG接口下载。
当然,完成bootloader之后,也可以采用JTAG接口下载,另外也可以采用USB或者TFTP下载。
后续的下载方式就多了。
但是现在看来,“自举”下载方式还是比较单一的,ARM一般还得依赖于JTAG接口下载bootloader。
⏹软件(以及硬件)的调试。
更重要的是,目标系统的调试也要在宿主机的控制/辅助下进行,而JTAG接口为宿主机与目标系统之间的通信、控制提供了重要的手段。
【但是需要注意的是,这并不是绝对的。
通信手段倒是还可以借助于网络实现,调试也可以通过gdb远程串口调试。
这里的意思是,它是当前采用的调试的一种重要的手段。
】
现在可以分析基于JTAG技术的ARMDebugArchitecture。
下面给出一个结构图:
·DebugHost
·Protocolconverter
·DebugTarget
也就是ARMDebugArchitecture分为三层,这也可以认为是一个完整的调试系统。
当然这是理论上的划分,在实际实现中也可以在形式上有所变通。
下面先解释一下这三层结构。
·DebugHost
HostcomputerrunningARMorthirdpartytoolkit.
这是调试系统的Host前端。
也就是我们常见到的IDE的debugger,比如ARM提供的ADW(ARMDebuggerforWindows,相应的unix版本为ADU,即ARMDebuggerforUnix)。
它所提供的功能是提供一个良好的图形交互界面,使用户可以方便的进行调试操作,也可以完成下载等。
另外,它实际上完成调试命令的驱动部分。
ARM制定了一个协议,就是ADP(AngelDebugProtocol),这是一个比较复杂的协议,分为三层,主要就是保证可靠稳定的与目标机进行通信。
·Protocolconverter
forexample,multi-ICE。
这部分完成host端协议到jtag协议的转换。
转换过程是双向的。
这个在这里也不太容易说,可以通过后面仿真器来进行分析。
·debugtarget
developmentsystemcontaininganARM7TDMIprocessor
也就是你的目标SoC。
有了这个模型作为基础,就可以对现有的调试工具进行一个大体的分析了。
在这里,仿真器又可以称为调试代理,它充当了protocolconverter的角色。
·第一层次简易JTAG小板
大多只是具备下载功能。
其中,debughost可以是jflash-s3c2410这样的工具,它实际上就是用软件实现JTAG时序,完成“串并”和“并串”转换。
即把目标JTAG向量中的每个字节都逐位地转换成JTAG接口各条引线上的串行的波形,或者反过来。
而jtag小板,只是完成一个基本的电平转换电路,最差的只有几个电路,普通的就是一个74HC244做驱动。
简单的说,就是:
host(jflash-s3c2410等)-->并口-->jtag小板-->SoCJTAG接口。
这样完成了下载功能。
如果在host端软件增强,可以完成一些调试功能。
相对而言,这样技术是用纯软件去实现JTAG时序,效率比较低。
市场上的wiggle、H-jtag、2410jtag等都是如此,只是在对应的引脚设置和host软件上有所不同。
·第二层次 cpld/fpga实现jtag状态机
用软件模拟jtag时序效率低,那么可以通过cpld等可编程器件实现jtag时序,那么host的软件只要简单的写字节就可以了。
这样,效率就高的多了。
·第三层次mcu+cpld/fpga实现基于以太网/USB的仿真器
其中,mcu用来实现tcp/ip协议,完成host调试协议的解析,cpld/fpga实现jtag状态机。
这种组合方式的效率又远远高于第二层次。
现在的realview就是采用这种方案,原有的ads系列则不提供更新了。
我把使用的powerICE拆开看了一下,发现里面核心芯片就是cpld。
由此可见,这个简化版的仿真器也只是第二层次的产品,硬件实现jtag时序,hostIDE进行调试协议处理。
原来的jflash-s3c2410不能够使用就很明显了,不同层次,也不会兼容。
市场常见仿真器
下面对目前国内市场上常见的几种仿真器一一做点介绍。
由于对仿真器和市场了解有限,在此仅抛砖引玉,欢迎大家探讨。
1.Wigger,SDT250JTAG,2410JTAG
此类器件仅做简单的PC并口到JTAG接口的电平转换。
它们的区别仅在于JTAG信号PIN和PC并口PIN的对应关系不同,其主要用来在PC机上通过JTAG接口烧写目标板上的Flash,常用软件如Flashpgm等,如加上JTAG.exe等SERVER软件,也可用SDT等软件进行源代码级的调试,只不过速度会比较慢。
2.EasyJTAG
与Wigger等相比,多了JTAG输入输出信号缓冲,内部有颗JTAGBusMaster芯片,而且与PC并口之间的数据接口是8位连接,因此比前者的速度快。
但不幸的是支持的软件较少(Flashpgm,JTAG.exe都不支持),需要自己开发软件相关软件,故市场上很少见,而且需注意的是有人将wigger与它相混淆。
3.Multi-ICE
为ARM公司生产的原版ARM并口仿真器。
支持全系列的ARM核,与wigger,EsayJTAG一样,通过并口与PC机连接,且数据接口也为8位。
由于其内部有颗FPGA做并口到JTAG的协议转换,速度要比前两者都要快很多,下载速度可在120kByte/s左右。
此器件有两种供电方式,一为外接5V电源(当目标板的电源功率不够或想减少仿真器对目标板的影响时用),另一为通过JTAG接口从目标板上取电(因而使用方便)。
Multi-ICE的系统构架是由硬件实现PC并口到JTAG协议的转换(JTAGBusMaster控制器),而在PC机上用Multi-ICE.exe服务软件及并口驱动实现JTAGTAP多路访问、控制接口及不同ARM核的支持,用Multi-ICE.dll或Multi-ICE-gdb.exe来支持RDI(ADS或SDT等)或GDB(gdb或xgdb等)接口的调试器与Multi-ICE.exe之间的TAPop接口的操作。
在如此的架构下,使得ARM公司可以在不提供Multi-ICE硬件升级的前提下,能通过更新Multi-ICE.exe及Multi-ICE.dll等软件来实现支持最新的ARM核。
4.兼容型Multi-ICE
此类产品又分两大类:
1)完全兼容型
与ARM公司生产的原版ARM并口仿真器Multi-ICE不同之处仅在于价格和稳定性,还有的厂家的产品只支持原版Multi-ICE两种供电方式中的一种(从JTAG接口供电或外接5V供电);相同之处是必须使用类似Multi-ICE.exe和Multi-ICE.dll的软件。
2)部分兼容型
此类产品在硬件上做了并口到JTAG的协议转换,但由于通过并口与PC机连接,数据接口也都只能为8位。
5.RealViewICE
为ARM公司生产的原版ARM网口和USB仿真器,支持全系列的ARM核,通过网口或USB口与PC机连接,内部有MCU和FPGA,由于MCU与PC连接是通过网口或USB连接,故速度要比Multi-ICE快很多,下载速度可高达600kByte/s,同时支持GDB源代码调试。
6.各厂家做的网口及USBICE
一般来说国外产家的产品要稳定并且支持的ARM核要多,有的甚至同时支持MIPS及PowerPC核。
usb2Demon仿真器
【特点介绍】
Theusb2DemonisaBDM/JTAGinterfaceusedinthedesign,debug,andprogrammingofmicroprocessorandmicrocontrollerbasedembeddedsystems.Onesideoftheusb2DemoninterfacestoaUSB1.1orUSB2.0portofahostPCandtheothersideconnectstoanOCD(On-ChipDebug)portonthetargetsystem.AswithallMacraigorinterfacedevices,theusb2Demoncansimultaneouslydebugupto255devicesona singlescanchain.Inaddition,upto16usb2Demonscanbeconnectedtoasinglehostmachine.
Theusb2Demonisdesignedtobeamajorupgrade fromtheWigglerseriesofOCDconnectionsand,formanytargets,isalsosignificantlyfasterthanaRaven.ItsupportsconfigurableJTAG/BDMclockratesuptp20MHz.
Theusb2DemoniscompatiblewithWindowsandLinuxhosts.SupportedversionsofLinuxareRedHat7.2–9andFedoraCore2.
【TheoryofOperation】
Theusb2DemonoperatesasaconverterbetweenthetargetJTAG/BDMsignalsandhostdebuggingcommands.PowerissuppliedbytheUSBinterfacesothatnoexternalsupplyisnecessary.ThebuffersthatinterfacetothetargetOCDsignalsarepoweredbythetargetitself,allowingtheusb2Demontoautomaticallymatchtargetvoltagesbetween5.0Vand2.2V.
【SupportedProcessors】
AMCC:
PPC405,PPC440
AMD:
SC520,Athlon,Duron,AU1000,AU1100,AU15x0
ARM:
7TDMI,710T,720T,740T,9TDMI,920T,922T,940T,946T,1136J-S
Broadcom:
BCM1250,BCM7115
Freescale:
MC9328MX1,56300,56600,56800,StarCore,683xx,MPC603e,
MPC8xx,MPC5xx,MPC5554,MPC740,MPC745,MPC750,MPC755,
MPC8240,MPC8245,MPC8247/8248,MPC8250,MPC8255,
MPC8260,MPC8264/65/66,MPC8270/71/72,MPC8280,MPC8540,
MPC8560,MPC8541,MPC8555
IBM:
PPC603e,PPC740,PPC750
IDT:
RC323xx
IntelXScale®PXA21x,PXA25x,PXA26x,PXA27x,IOP3xx,IXC1100,IXP42x,IXP46x,
Technology:
IXP24xx,IXP28xx,80200,80219,8032x,8033x
MIPS:
4Kc/p/m/e,5Kc
NEC:
VR5432,VR5500
NetSilicon:
NetARM+10,NetARM+40,NetARM+50,NS7520,NS9750
PLX:
IOP480
Phillips:
PR1900
Toshiba:
TX49
Transmeta:
Efficeon
Triscend:
E5,A7
H-JTAG仿真器
H-JTAGUSB仿真器是一款高速USB接口仿真器。
仿真器采用USB接口供电,无需外接电源。
支持10K~15MHZ的JTAG时钟,,可提供最高可达750KB/S的下载速度与最高可达550KB/S读取速度。
与H-JTAG/H-FLASHER配合使用,可以实现高速调试与下载。
该仿真器灵活,高效,稳定性好,能够全面满足用户的需求。
【硬件特性】
构架:
USB2.0控制器+FPGA
供电:
USB接口供电
TCK:
10K~15MHz
接口:
USB2.0高速接口
JTAG:
标准20-PINJTAG接口
电压:
1.8~5.0VJTAG接口电压
注:
H-JTAGUSB仿真器仅支持USB2.0高速接口
【RAM最高读写速度:
】
ARM7-下载速度最高可达750KB/S读取速度最高可达550KB/S
ARM9-下载速度最高可达750KB/S读取速度最高可达520KB/S
XSCALE-下载速度最高可达750KB/S读取速度最高可达520KB/S
CORTEX-M3-下载速度最高可达420KB/S读取速度最高可达340KB/S
H-JTAGServer
-支持所有主流的处理器(ARM7,ARM9,XSCALE,CORTEX-M3)
-支持各种主流的IDE,实现无缝链接(ADS,IAR,KEIL,RVDS)
-支持灵活的初始化配置
-支持ARM和THUMB模式
-支持LITTLE-ENDIAN和BIG-ENDIAN
-支持MMU和CACHE启用模式下的调试
-支持各种WINDOWS平台NT/2000/XP/VISTA
-支持并口,提供低成本可靠稳定的解决方案
-支持高速H-JTAGUSB仿真器,提供高效可靠的解决方案
H-FLASHER
H-FLASHER是针对ARM处理器专门设计的一款烧写软件。
通过与H-JTAG的配合使用,支持各种ON-CHIPFLASH,NORFLASH和NANDFLASH的烧写与校验。
H-FLASHER同时还支持加密操作,二次校验和SMART模式,满足用户开发与生产的不同需求。
H-FLASHER通过灵活的设计,提供了极大的易用性与稳定性,是用户开发与生产中理想的烧写工具。
-支持ON-CHIPFLASH,NORFLASH和NANDFLASH,提供高速稳定的烧写
-支持自动下载到内部和外部FLASH进行调试,方便快捷,简化调试
-提供灵活的初始化脚本,支持不同硬件平台的初始化配置
-提供自动校验,烧写同时,自动进行校验操作
-提供自动二次校验,烧写完成后,自动进行二次校验操作
-提供自动复位功能,烧写完成后,自动执行系统复位操作
-支持FLASH加密,烧写完成后,自动设置加密,保护用户程序
-支持SMART模式,提供自动保存与恢复,保证烧写地址覆盖空间外的数据不受影响
-支持BIN和HEX等不同格式的烧写文件
-支持配置文件的保存与装载,方便用户保存与交换配置文件
-灵活的接口设计,易于扩展,可以针对用户的需求进行定制,提供高效的烧写解决方案
J-Link仿真器(主芯片AT91SAM7S64)
【特点介绍】
1,可以兼容1.65-5.5V的JTAG电平,可以直接调试诸如STR735的5VARM芯片;
2,输出具备三态;
3,USB接口电路方面加入了ESD保护;
4,采用更低功耗电源设计;
●USB2.0接口;
*支持任何ARM7/ARM9核CortexM3supported,包括ithumb模式;
*下载速度达到600kbyte/s;
*DCC速度到达800kbyte/s;
*与IAR Workbench可无缝集成;
*通过USB供电,无需外接电源;
*JTAG最大时钟达到12M;
*自动内核识别;
*自动速度识别;
*支持自适应时钟;
*所有JTAG信号能被监控,目标板电压能被侦测;
*支持JTAG链上多个设备的调试;
*完全即插即用;
*20Pin标准JTAG连接器;
*宽目标板电压范围:
1.2V-5.0V(无需接口板即可支持到5V);
*多核调试;
*包括软件:
J-Mem,可查询可修改内存;
*包括J-LinkServer:
(可通过TCP/IP连接到J-Link);
*J-Flash,支持独立的Flash编程;
*SDK,进行基于J-Link的应用程序;
*RDI,使J-Link适合任何RDI兼容的调试器如ADS、Relview和Keil等;
*RDIFlashBP,可以实现在RDI下,在Flash中设置无限断点;
*RDIFlashDL,可以实现在RDI下的对Flash的独立编程;
*FlashSDK,可以容易编写自己的Flash编程程序;
*GDBserver,可以实现在GDB环境下的调试。
U-Link仿真器
TheKeilULINK2USB-JTAGAdapterconnectsyourPC'sUSBporttoyourtargethardware(viaJTAG,SWD,orOCDS)andallowsyoutodebugembeddedprogramsrunningontargethardware.
ULINK2offersallthefeaturesoftheoriginalULINKUSB-JTAGAdapterandaddsserialwiredebug(SWD)support,returnclocksupport,andareal-timeagent.ULINK2workswithstandardWindowsUSBdrivers.
【SupportedProcessors】
AnalogDevices(ARM7/ARM9/Cortex-M3Family)
ADuC7019,ADuC7020,ADuC7021,ADuC7022,ADuC7024,ADuC7025,ADuC7026,ADuC7027,ADuC7032,ADuC7033,ADuC7128,ADuC7129
Atmel(ARM7/ARM9/Cortex-M3Family)
AT91C140,AT91F40416,AT91F40816,AT91FR40162,AT91FR4042,AT91FR4081,AT91M40400,AT91M40800,AT91M40807,AT91M42800A,AT91M43300,AT91M55800A,AT91M63200,AT91R40008,AT91R40807,AT91RM3400,AT91RM9200,AT91SAM7A1,AT91SAM7A2,AT91SAM7A3,AT91SAM7S128,AT91SAM7S256,AT91SAM7S32,AT91SAM7S64,AT91SAM7SE256,AT91SAM7SE32,AT91SAM7SE512,AT91SAM7X128,AT91SAM7X256,AT91SAM7XC128,AT91SAM7XC256,AT91SAM9260,AT91SAM9261
FreescaleSemiconductor(ARM7/ARM9/Cortex-M3Family)
MAC7101,MAC7104,MAC7105,MAC7106,MAC7111,MAC7112,MAC7114,MAC7115,MAC7116,MAC7121,MAC7122,MAC7124,MAC7125,MAC7126,MAC7131,MAC7134,MAC7135,MAC7136,MAC7141,MAC7142,MAC7144
Infineon(8051Family)
TLE7809,TLE7810,TLE7824,TLE7826,XC856-13FF,XC856-16FF,XC856-9FF,XC866-1FR,XC866-2FR,XC866-4FR,XC886-6FF,XC886-8FF,XC886C-6FF,XC886C-8FF,XC886CLM-6FF,XC886CLM-8FF,XC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JTAG 调试