JTAG(Joint Test Action Group,聯合測試行動小組)是一種國際標准測試協議(IEEE 1149.1兼容),主要用於芯片內部測試。現在多數的高級器件都支持JTAG協議,如ARM、DSP、FPGA器件等。標准的JTAG接口是4線:TMS、 TCK、TDI、TDO,分別為模式選擇、時鍾、數據輸入和數據輸出線。 相關JTAG引腳的定義為:
TMS:測試模式選擇,TMS用來設置JTAG接口處於某種特定的測試模式;
TCK:測試時鍾輸入;
TDI:測試數據輸入,數據通過TDI引腳輸入JTAG接口;
TDO:測試數據輸出,數據通過TDO引 腳從JTAG接口輸出;
JTAG協議在定義時,由於當時的計算機(PC機)普遍帶有並口,因而在連接計算機端是定義使用的並口。而計算機到了今天,不要說筆記本電腦,現在台式計算機上面有並口的都很少了,取而代之的是越來越多的USB接口。USB接口是一種串口協議,那么能不能讓JTAG支持USB協議,用USB接口來調試ARM呢?這就要說到JLINK和ULINK了。
J-Link是德國SEGGER公司推出基於JTAG的仿真器。簡單地說,是給一個JTAG協議轉換盒,即一個小型USB到JTAG的轉換盒,其連接到計算機用的是USB接口,而到目標板內部用的還是jtag協議。它完成了一個從軟件到硬件轉換的工作。
ULINK是ARM/KEIL公司推出的仿真器,目前網上可找到的是其升級版本,ULINK2和ULINKPro仿真器。ULINK/ULINK2可以配合Keil軟件實現仿真功能,並且僅可以在Keil軟件上使用,增加了串行調試(SWD)
ST-LINK是專門針對意法半導體STM8和STM32系列芯片的仿真器。
總結下,不管是JLink,ULINK還是ST-LINK都是基於JTAG協議實現的,也就是把協議燒到了實際硬件里面,后面的ULINK和ST-LINK可能對自己平台做了些優化。
如今 JTAG 接口的連接有三種標准,即 14 針接口和 20 針接口和10針接口,其定義分別如下所示。
14針
1 、 13 VCC 接電源
2 、 4 、 6 、 8 、 10 、 14 GND 接地
3 nTRST 測試系統復位信號
5 TDI 測試數據串行輸入
7 TMS 測試模式選擇
9 TCK 測試時鍾
11 TDO 測試數據串行輸出
12 NC 未連接
20針
1 VTref 目標板參考電壓,接電源
2 VCC 接電源
3 nTRST 測試系統復位信號
4、6、8、10、12、14、16、18、20 GND 接地
5 TDI 測試數據串行輸入
7 TMS 測試模式選擇
9 TCK 測試時鍾
11 RTCK 測試時鍾返回信號
13 TDO 測試數據串行輸出
15 nRESET 目標系統復位信號
17 、 19 NC 未連接
10針
仿真器端口 AVR端口 備注
1. TCK TCK
2. NC NC
3. TDO TDO
4. Vtref VCC
5. TMS TMS
6. nSRST RESET
7. NC / Vsupply NC / VCC JTAG ICE仿真器:VCC;JTAG ICE mkII仿真器:NC
8. nTRST NC ATMEL尚且保留該端口,如今暫不使用它,未來可能會使用
9. TDI TDI
10.GND GND
實際上10針的只需要接4根線,4號是自連回路,不需要接,1,2接的都是1管腳,而8,10接的是GND,也可以不接。
值得注意的是有些單片機在內部直接將與JTAG接口地方集成了上下拉電阻,這樣就不用外接上拉或者下拉電阻了。上面的是在STM32單片機上手冊的說明,很明顯,它內部已經集成了上下拉電阻了。