JTAG

**JTAG** 是**聯合測試工作群組（Joint Test Action Group）** 的簡稱，是在名為**標準測試存取埠和邊界掃描結構**的 IEEE 的標準 1149.1 的常用名稱。此標準用於驗證設計與測試生產出的印刷電路板功能。

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

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

## 電氣特性

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

1. TDI（測試資料輸入）
2. TDO（測試資料輸出）
3. TCK（測試時鐘）
4. TMS（測試模式選擇）
5. TRST（測試復位）可選。

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

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

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

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

## 常用的擴充

關於製造商的擴充：英飛凌，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_)