分类: 嵌入式
2010-06-29 20:04:15
关于arm的jtag,老是听到一些奇怪的词,一会儿是hjtag,easyjtag,wiggler,sdt,他们都是什么呢?且看:
======================================================================
关于JTAG的原理,大家可以参考OPEN-JTAG 开发小组写的《ARM JTAG 调试原理》。JTAG、BDM 都比较类似,实际上是将仿真功能嵌入到芯片内部,接上比较简单的调试工具就可以进行开发了,省掉了高价的仿真器。
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. Wigger, SDT250JTAG, 2410JTAG
此类器件仅做简单的PC并口到JTAG接口的电平转换。它们的区别仅在于JTAG信号PIN和PC并口 PIN的对应关系不同, 其主要用来在PC机上通过JTAG 接口烧写目标板上的 Flash, 常用软件如 Flashpgm 等, 如加上 JTAG.exe 等 SERVER 软件,也可用 SDT 等软件进行源代码级的调试, 只不过速度会比较慢。
2. EasyJTAG
与 Wigger等相比,多了JTAG输入输出信号缓冲,内部有颗JTAG Bus Master芯片,而且与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协议的转换(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 核。
4. 兼容型 Multi-ICE
此类产品又分两大类:
1) 完全兼容型
与ARM公司生产的原版ARM并口仿真器Multi-ICE不同之处仅在于价格和稳定性, 还有的厂家的产品只支持原版 Multi-ICE 两种供电方式中的一种(从 JTAG 接口供电或外接 5V 供电);相同之处是必须使用类似 Multi-ICE.exe 和 Multi-ICE.dll 的软件。
2) 部分兼容型
此类产品在硬件上做了并口到JTAG的协议转换, 但由于通过并口与PC机连接,数据接口也都只能为 8位。
5. RealView ICE
此为ARM公司生产的原版ARM网口和USB仿真器, 支持全系列的ARM核, 通过网口或USB口与PC机连接, 内部有MCU和FPGA, 由于MCU与PC连接是通过网口或USB连接,故速度要比 Multi-ICE 快很多,下载速度可高达 600kByte/s,同时支持 GDB 源代码调试。
6. 各厂家做的网口及 USB ICE
一般来说国外产家的产品要稳定并且支持的 ARM 核要多,有的甚至同时支持 MIPS 及PowerPC 核。
网上流行的多是 wiggler的电路图,可以配合 Flashpgm使用。周立功公司有一篇《使用 Flash Programmer 软件操作 EasyARM2200 外部 Flash》的文章,具体介绍了如何使用 Flashpgm软件。
===================================================================
先给大家介绍个大概情况,现在国内都有什么著名的ARM开发工具和解决方案,价格从高低排:
目前我知道的最牛X的调试工具,可以调试ARM、MIPS、PPC、ColdFire、XScale等多种处理器。无需更换硬件,只需要买不同的软件授权就可以调试不同的CPU。JTAG下载速度可以上兆,以太网接口。因为太贵了(BDI2000好像要人民币50000吧),我没怎么研究它到底配合什么软件来调试,不过GDB它是肯定支持的,它一直是我心目中的神话啊。
J-Link是IAR公司为ARM开发的调试工具,支持RDI协议的调试工具,如Keil、ADS、IAR等;支持GDB调试;什么SWD之类的用得很少,有没有都一样;但J-Link不支持ARM10以上的内核。JTAG下载的速度可以达到400~500K,正版价格大约5000人民币(全功能)吧,这么贵基本也不考虑了。
ARM公司的原创调试工具,支持全系列ARM芯片,现在多少钱我也不知道了,反正在2000~3000人民币这个级别。我这里指的是国内做得比较好的那些,比如Realview之类的。仅仅支持ADS、SDT之类的裸奔代码调试,JTAG下载速度130K左右。虽然这几年Multi-ICE是国内 ARM调试绝对的霸主,但现在ARM公司已经停止对ADS的维护了,Multi-ICE会开始走向没落。
国内有很多Multi-ICE的盗版,功能和Multi-ICE原版一样,并口的、USB的都有,价钱几百块人民币,淘宝上到处都有。但是和J- Link盗版相比,不推荐购买。
最近这段时间,J-Link盗版渐渐开始多起来了,淘宝上也很多,功能和原版没有区别。价格大约在几百人民币左右,从性价比来看,推荐购买。我之后还会写一篇用J-Link调试ARM的文章,当你入门之后,绝对无法忍受今天介绍的这个低成本方案的JTAG下载速度,那时就买个J-Link来爽爽。
U-Link是Keil公司做的用于ARM和某些增强型8051调试的工具,由于Keil公司做U-Link的时候没有加密,导致现在盗版满天飞,只需要100多块钱就可以买到一个。现在Keil已经被ARM收购,U-Link也是ARM一家的了。U-Link正版在盗版的排挤下,根本没有什么买的必要;U-Link仅仅支持Keil,而且JTAG下载速度仅有20~30K。
Wiggler是世界上最泛滥的一种调试工具,它非常简单,只需要一片74HC244,一个9013,几个电阻就可以。本来Wiggler是 Macraigor()制作的,可以支持 Macraigor的OCDRemote这个GDB Server,可以支持ARM、PPC、ColdFire、MIPS、XScale等多种CPU。后来因为它结构太简单,被人破解后搞得全世界都是,于是 Macraigor怒了,现在用OCDRemote必须是Macraigor原厂的Wiggler了……尽管如此,后人又在Wiggler的硬件基础上开发了很多的调试工具,例如H-Jtag;另外也有其他的调试工具增加了对Wiggler的支持,例如OpenOCD。Wiggler电缆的成本特别低,当然它的性能也和成本一样低;用H-Jtag下载速度大约20~30KB/s,用Linux虚拟机下的OpenOCD下载速度大约2KB/s。不过对于囊中羞涩的学生们来说,是一个非常不错的入门工具。本文就针对Wiggler进行介绍。
======================================================================