JTAG 接口

JTAG

常见的JTAG cable 结构都比较简单,一端是DB25 ,接到电脑的并口上,中间经过74HC244 和一些电阻实现电平转换(5V<->3.3V?)( 也有比较猥琐的只用了几个100 Ohm 电阻的方案 ,似乎我这里用来烧CPLD 的就是一条这样子的...) ,另一端的JTAG header 接到目标板的JTAG interface

并口DB25 原先主要是用来连接打印机,其引脚定义如下:

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



可见,数据线Pin2~Pin9 可以用来发送数据,Pin10~Pin13 等可以用来接收数据。
JTAG
的数据传输形式是串行,主要使用了以下引脚:
TDI (Test Data In)
TDO (Test Data Out)
TCK (Test ClocK)
TMS (Test Mode Select)
TRST (Test ReSeT) optional.

因此,DB25-JTAG 实际上只利用了DB25 的少数几根线。但由于DB258 条数据线都可以作为output ,市面上就出现了各种使用不同Pin AssignmentJTAG 线。例如WigglerPin assignment:

TMS   : Pin3 (D1)

TCK   : Pin4 (D2)

TDI   : Pin5 (D3)

TDO   : Pin11 (Busy)

SRST  : Pin2 (D0)

TRST  : Pin6 (D4)


(
参见Wiggler的电路图 ,但最后的nSRSTnTRST 可能不一定用到,并且在H-JTAG 中的定义也不一样,TRSTPin2 ,没有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 connectorPin 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 GND



14Pin:

  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 GND



10Pin:

  TCK    1   2 Vcc

  TDI    3   4 Vcc

  TDO    5   6 GND

  TMS    7   8 GND

  nTRST  9  10 GND

 



关于JTAG 几个信号,在H-JTAG 主页上提供了一个文档 ,里面有对此进行介绍:

…… 下面,让我们从TAP(Test Access Port) 开始。
   TAP 是一个通用的端口,通过TAP 可以访问芯片提供的所有数据寄存器(DR )和指令寄存器(IR )。对整个TAP 的控制是通过TAP Controller 来完成的。TAP 总共包括5 个信号接口TCKTMSTDITDOTRST :其中4 个是输入信号接口和另外1 个是输出信号接口。一般,我们见到的开发板上都有一个JTAG 接口,该JTAG 接口的主要信号接口就是这5 个。下面,我 先分别介绍这个5 个接口信号及其作用。
Test Clock Input (TCK)
TCK
TAP 的操作提供了一个独立的、基本的时钟信号,TAP 的所有操作都是通过这个时钟信号来驱动的。TCKIEEE 1149.1 标准里是强制要求的。
Test Mode Selection Input (TMS)
TMS
信号用来控制TAP 状态机的转换。通过TMS 信号,可以控制TAP 在不同的状态间相互转换。TMS 信号在TCK 的上升沿有效。TMSIEEE 1149.1 标准里是强制要求的。
Test Data Input (TDI)
TDI
是数据输入的接口。所有要输入到特定寄存器的数据都是通过TDI 接口一位一位串行输入的(由TCK 驱动)。TDIIEEE 1149.1 标准里是强制要求的。
Test Data Output (TDO)
TDO
是数据输出的接口。所有要从特定的寄存器中输出的数据都是通过TDO 接口一位一位串行输出的(由TCK 驱动)。TDOIEEE 1149.1 标准里是强制要求的。
Test Reset Input (TRST)
TRST
可以用来对TAP Controller 进行复位(初始化)。不过这个信号接口在IEEE 1149.1 标准里是可选的,并不是强制要求的。因为通过TMS 也可以对TAP Controller 进行复位(初始化)。

  事实上,通过TAP 接口,对数据寄存器(DR )进行访问的一般过程是:
  1 通过指令寄存器(IR ),选定一个需要访问的数据寄存器;
  2 把选定的数据寄存器连接到TDITDO 之间;
  3 TCK 驱动,通过TDI ,把需要的数据输入到选定的数据寄存器当中去;同时把选定的数据寄存器中的数据通过TDO 读出来。


另外,可选信号nSRST 的定义如下(见参考资料1 ):
nSRST is a "system reset" signal and acts like conventional "Reset' button.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值