JTAG

聯合測試工作組（JTAG, Joint Test Action Group），是個工業標準，用於驗證設計與測試生產出的印刷電路板功能。

1990年，JTAG正式由電機電子工程師學會（IEEE）進行文檔標準化，編號為IEEE 1149.1-1990。在1994年，加入了補充文檔對邊界掃描描述語言（BSDL）進行了說明。從那時開始，這個標準被全球的電子企業廣泛採用。邊界掃描幾乎成為了JTAG的同義詞。

在設計印刷電路板時，目前最主要用在測試積體電路的副區塊，而且也提供一個在嵌入式系統很有用的偵錯機制，提供一個在系統中方便的"後門"。當使用一些偵錯工具像電路內模擬器用JTAG當做訊號傳輸的機制，使得程式設計師可以經由JTAG去讀取整合在CPU上的偵錯模組。偵錯模組可以讓程式設計師偵錯嵌入式系統中的軟體。

## 電氣特性

JTAG的介面是一種特殊的4/5個接腳介面連到晶片上，所以在電路版上的很多晶片可以將他們的JTAG接腳通過Daisy Chain的方式連在一起，並且Probe只需連接到一個「JTAG埠」就可以訪問一塊印刷電路板上的所有IC。這些連接引腳是：

- TDI（測試數據輸入）
- TDO（測試數據輸出）
- TCK（測試時鐘）
- TMS（測試模式選擇）
- TRST（測試復位）可選。

<image>

因為只有一條數據線，通信協議有必要像其他，如SPI一樣為串列傳輸。時鐘由TCK引腳輸入。配置是通過TMS引腳採用狀態機的形式一次操作一位來實現的。每一位數據在每個TCK時鐘脈衝下分別由TDI和TDO引腳傳入或傳出。可以通過加載不同的命令模式來讀取晶片的標識，對輸入引腳採樣，驅動（或懸空）輸出引腳，操控晶片功能，或者旁路（將TDI與TDO連通以在邏輯上短接多個晶片的鏈路）。TCK的工作頻率依晶片的不同而不同，但其通常工作在10-100MHz（每位10-100ns）。

當在積體電路中進行邊界掃描時，被處理的信號是在同一塊IC的不同功能模塊間的，而不是不同IC之間的。

TRST引腳是一個可選的相對待測邏輯低電平有效的復位開關——通常是異步的，但有時也是同步的，依晶片而定。如果該引腳沒有定義，則待測邏輯可由同步時鐘輸入復位指令而復位。

儘管如此，極少消費類產品提供外部的JTAG埠接口，但作為開發樣品的殘留，這些接口在印刷電路板上十分常見。在研發後，這些接口常常為反向工程提供了非常良好的途徑。

<image>

## 常用的擴展

關於製造商的擴展：英飛凌，MIPS EJTAG，飛思卡爾COP, ARM ETM (Extended Trace Macrocell), OnCE etc.

## 廣泛的應用

- 幾乎所有的嵌入式系統都具有JTAG埠。
- PCI總線接口包含JTAG引腳。一種特殊的JTAG卡可以用來刷新被破壞了的BIOS。

## 客戶端軟體

可以通過使用一些支持JTAG的應用程式來訪問JTAG接口。

### 免費軟體

- Very cheap interface working with the CICLaMaB program
- OpenCores JTAG module是一個IP核，它可為你的設計提供JTAG。它是OpenCores工程的一部分。
- UrJTAG，born out of the openwince project's JTAG Tools，supports a large set of inexpensive IEEE 1284 parallel printer port and USB JTAG cables
- JTAG-ARM9 provides a JTAG access program for the ARM9 processor.
- JTAG for the LART aimed at the LART processor
- JTAG base layer is an attempt at creating a JTAG library
- The uCLinux for Blackfin project have a JTAG-backend for the GNU Debugger and a version specifically for Blackfin based on the openwince work
- JTAG toolkit is a free software JTAG tool suite, including API library and several examples
- OpenOCD is an GPL Open Source GDB Server that currently supports ARM7 and some ARM9 Targets

### 私有軟體

- JTAG ScanWorks JTAG development systems.
- JTAG DFT Analysis JTAG Design for Test software.
- JTAG Technologies Test and programming development systems.
- TopJTAG Probe Interactive JTAG/boundary-scan software for circuit debugging and visualization.
- Green Hills Software MULTI Debugger and Green Hills Probe, Software and hardware supports JTAG and BDM based development on ARM, XScale, PowerPC, MIPS, ColdFire, Blackfin, ARC, TI C6000, v800, StarCore, SH, M32R, and LSI ZSP.
- Ronetix PEEDI, JTAG Emulator and Flash Programmer for ARM7/9, XScale
- SEGGER Microcontroller Systeme GmbH j-link, USB to JTAG interface for ARM cores（J-Flash, J-Mem, RDI Pro Bundle）
- SEGGER Microcontroller Systems LLC j-trace, a USB to Trace Mictor and JTAG interface for ARM cores
- Lauterbach Datentechnik GmbH produce JTAG-based in-circuit emulators the most popular being TRACE 32
- Macraigor Systems LLC JTAG Commander and OCD Commander
- Abatron AG's BDI-2000 acts as a GDB server on your LAN, giving you source-level debugging via JTAG.
- JTAG Emulator Embedded Toolsmiths Guardian-SE JTAG Emulator connects a GDB server on your LAN to the JTAG interface on PowerPC, MIPS, XScale and Arm Processors. This allows: JTAG FLASH Programming, JTAG Emulation and JTAG source-level debugging via JTAG for PowerPC, MIPS, XScale and ARM Processors.
- XJTAG Development System
- Göpel electronic SCANFLEX
- Corelis ScanExpress
- yaJFP Zheyuan Technlogies

## 外部連結

- 什麼是JTAG那麼，我怎麼樣才能利用它呢？
- JTAG Tutorial 關於JTAG或邊界掃描的簡介。
- JTAG/Boundary-scan explained知識庫以及工業連接。
- JTAG FAQ
- OpenJTAG Wiki
- JTAG邊界掃描接口的一個簡明介紹
- JTAG Scan Educator - Ver. 2 (Rev. A) - 一個DOS下的教學軟體，JTAG Scan Educator，介紹了IEEE 1149.1邊界掃描標準的基本情況，包括框架協議，以及所需的指令集。
- K9JTAG - 一個便宜的為ARM微控制器的JTAG調試器而自製的並行埠。
- Boundary-Scan Testing/JTAG - www.SiliconFarEast.com
- Segger J-Link （JTAG仿真器）
- Segger-US J-Link（JTAG仿真器）
- Circuit Cellar Article (SOFTWARE BREAKPOINTS IN FLASH MEMORY FOR ARM MCUs)