JTAG...
Wednesday, September 20, 2006 1:53:26 PM
| 25 Pin D-Sub | SPP SIGNAL | DIRECTION IN/OUT |
| 1 | /Strobe | In/Out |
| 2 | Data 0 | Out |
| 3 | Data 1 | Out |
| 4 | Data 2 | Out |
| 5 | Data 3 | Out |
| 6 | Data 4 | Out |
| 7 | Data 5 | Out |
| 8 | Data 6 | Out |
| 9 | Data 7 | Out |
| 10 | /ACK | In |
| 11 | Busy | In |
| 12 | Paper Out | In |
| 13 | Select | In |
| 14 | /Line Feed | In/Out |
| 15 | /Error | In |
| 16 | /INIT | In/Out |
| 17 | /Select In | In/Out |
| 18-25 | Ground | GND |
TMS : Pin3 (D1) TCK : Pin4 (D2) TDI : Pin5 (D3) TDO : Pin11 (Busy) SRST : Pin2 (D0) TRST : Pin6 (D4)(参见Wiggler的电路图,但最后的nSRST和nTRST可能不一定用到,并且在H-JTAG中的定义也不一样,TRST是Pin2,没有SRST) H-JTAG里还有另外一种接法--STD,定义如下:
TMS : Pin3 (D1) TCK : Pin2 (D0) TDI : Pin8 (D6) TDO : Pin13 (Select) SRST : N/A TRST : Pin4 (D2)而S3C2410的烧写程序SJF2410用的是:
TCK : Pin2 (D0) TDI : Pin3 (D1) TMS : Pin4 (D2) TDO : Pin11 (Busy)这个可以在源代码中的jtag.h文件里看到。 除了DB25那边的Pin Assignment有多种方案,JTAG connector也有20pin, 14pin, 12pin, 10pin等几种标准。这里一块ARM9开发板配的DB25-JTAG转换板就十分好玩,上面也是只有一块244,但是有Wiggler, STD, S3C2410三个20pin接口。由于20pin connector的Pin Assignment是固定的,三个接口对应的是DB25那边的三种接法,因此开发板可以根据pc上运行的程序不同选择不同的接口来接。 20Pin Connector的定义如下(参考此图):
Vcc 1 2 NC nTRST 3 4 GND TDI 5 6 GND TMS 7 8 GND TCK 9 10 GND GND 11 12 GND TDO 13 14 GND NRESET 15 16 GND NC 17 18 GND NC 19 20 GND14Pin:
nTRST 1 2 GND TDI 3 4 GND TDO 5 6 GND TMS 7 8 GND TCK 9 10 GND nSRST 11 12 n/a DINT 13 14 Vcc(DINT pin is used to raise Debug Interrupt. Many chips has no this pin.) 12Pin:
nTRST 1 2 GND TDI 3 4 GND TDO 5 6 GND TMS 7 8 GND TCK 9 10 GND nSRST 11 12 GND10Pin:
TCK 1 2 Vcc TDI 3 4 Vcc TDO 5 6 GND TMS 7 8 GND nTRST 9 10 GND
关于JTAG几个信号,在H-JTAG主页上提供了一个文档,里面有对此进行介绍:
另外,可选信号nSRST的定义如下(见参考资料1): nSRST is a "system reset" signal and acts like conventional "Reset' button.……下面,让我们从TAP(Test Access Port)开始。
TAP是一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR)。对整个TAP的控制是通过TAP Controller来完成的。TAP总共包括5个信号接口TCK、TMS、TDI、TDO和TRST :其中4个是输入信号接口和另外1个是输出信号接口。一般,我们见到的开发板上都有一个JTAG接口,该JTAG接口的主要信号接口就是这5个。下面,我先分别介绍这个5个接口信号及其作用。
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进行复位(初始化)。
事实上,通过TAP接口,对数据寄存器(DR)进行访问的一般过程是:
1 通过指令寄存器(IR),选定一个需要访问的数据寄存器;
2 把选定的数据寄存器连接到TDI和TDO之间;
3 由TCK驱动,通过TDI,把需要的数据输入到选定的数据寄存器当中去;同时把选定的数据寄存器中的数据通过TDO读出来。
参考资料: [1] http://www.linux-mips.org/wiki/JTAG [2] http://en.wikipedia.org/wiki/Jtag [3] http://docwiki.gumstix.org/JTAG [4] http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/JTAG_Cable [5] http://www.bluewaternz.com/corporate/uni/unikit/jtag/








Anonymous # Friday, September 22, 2006 5:17:13 AM
Anonymous # Friday, September 22, 2006 5:18:41 AM