一、JTAG 仿真(直接在目标板上的MCU的进行的程序运行调试)
JTAG(Joint Test Action Group)组织定了一个最初是用于测试生产出来的芯片是不是良品的测试接口和标准,在芯片的各个管脚上放上锁存器,然后串起来构成移位寄存器,可以监控芯片管脚的输入和输出;后来大家发现这东西用来搞芯片的在线调试不错,于是就出现了现在JTAG调试风行的局面。再说的明白些,也就是利用JTAG可以控制CPU内核,每个CPU都可以成为自己的“仿真器”,而不需要专用的设备。“人人都是食神。”——周星星语录。从理论上来说,世界上只需要一种仿真器,哦,确切的说应该叫做JTAG协议转换器,就可以调试所有的兼容JTAG标准的芯片;BDI2000这种超级贵的“仿真器”以及Wiggler这种什么都通吃的便宜货的存在是很合理的事情。
关于JTAG的原理,大家可以参考OPEN-JTAG 开发小组写的《ARM JTAG 调试原理》。JTAG、BDM 都比较类似,实际上是将仿真功能嵌入到芯片内部,ARM芯片一般都内置了JTAG调试逻辑,不需要CPU仿真器,需要的是一个JTAG协议转接器(虽然现在大家也都叫它仿真器)就可以进行开发了,省掉了高价的仿真器。
JTAG 调试用到了 TCK、TMS、TDI、TDO 和 TRST 这几个脚。其中 TRST 是用来对 TAP controller进行复位的,它不是必须的。通过在 TMS脚也可以使 TAP controller复位。
Test Clock Input (TCK) TCK为 TAP的操作提供了一个独立的、基本的时钟信号,TAP 的所有操作都是通过这个时钟信号来驱动的。TCK在 IEEE 1149.1 标准里是强制要求的。
Test Mode Selection Input (TMS) TMS信号用来控制 TAP状态机的转换。通过 TMS信号,可以控制 TAP在不同的状态间相互转换。TMS信号在 TCK的上升沿有效。TMS在 IEEE 1149.1 标准里是强制要求的。
Test Data Input (TDI) TDI 是数据输入的接口。所有要输入到特定寄存器的数据都是通过 TDI 接口一位一位串行输入的(由 TCK驱动)。TDI在 IEEE 1149.1 标准里是强制要求的。
Test Data Output (TDO) TDO 是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过 TDO 接口一位一位串行输出的(由 TCK驱动)。TDO在 IEEE 1149.1 标准里是强制要求的。
Test Reset Input (TRST) TRST 可以用来对 TAP Controller 进行复位(初始化)。不过这个信号接口在 IEEE 1149.1标准里是可选的,并不是强制要求的。因为通过 TMS也可以对 TAP Controller进行复位(初始化)。
1.
H-JTAG调试代理软件+并口电平转JTAG电平板(如2410JTAG/Wiggler/SDTJTAG)-->Target Board。
2410JTAG/Wiggler/SDTJtag此类器件仅做简单的PC并口到JTAG接口的硬件电平转换,协议转换由PC软件实现,故下载和调试速度慢。它们的区别仅在于JTAG信号PIN和PC并口PIN的对应关系不同而已,其主要用来在PC机上通过并口转JTAG接口来烧写目标板上的Flash, 常搭配软件如SJF/JFlash(linux)/Flashpgm等, 如加上H-JTAG等SERVER软件, 也可用于SDT/ADS/Keil/RVDS/IAR等软件进行源代码级的调试, 只不过速度会比较慢。
2.
并口/USB-->Multi-ICE-->Target Board(FPGA实现并口/USB到JTAG协议转换,下载调试速度快)。Multi-ICE的系统构架是由硬件实现PC并口到JTAG协议的转换(JTAG Bus Master控制器),而在PC机上用Multi-ICE.exe服务软件及并口驱动实现JTAG TAP多路访问、控制接口及不同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核。
3.
USB-->J-Link(IAR公司,內部通過MCU实现USB协议到JTAG协议的转换,速度较快)-->Target。
J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。支持RDI协议配合IAR EWARM,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9内核芯片的仿真,通过RDI接口和各集成开发环境无缝连接。搭配GDB Server,可以实现在GDB环境下的调试。
4.
USB-->U-Link(Keil公司,内部通过MCU实现USB协议到JTAG协议的转换,速度较快)-->Target
5.
USB-->LPC-Link(NXP公司)-->Target
二、ICE仿真(用一套硬件系统代替目标板上的MCU进行程序的运行调试)
此种调试工具通过仿真插头连接到电路板,完全模拟MCU的功能,所以价格昂贵,兼容性差,换一种MCU,就要更换一台ICE,多用在8位单片机(因为32BIT单片机结构复杂,难以模拟)如HOLTEK的8位单片机
|