【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。这些连接引脚是：
# TDI（测试数据输入）
# TDO（测试数据输出）
# TCK（测试时钟）
# TMS（测试模式选择）
# TRST（测试复位）可选。
JTAG链的一个例子
因为只有一条数据线，通信协议有必要像其他串行设备接口，如SPI一样为串列传输。时钟由TCK引脚输入。配置是通过TMS引脚采用状态机的形式一次操作一位来实现的。每一位数据在每个TCK时钟脉冲下分别由TDI和TDO引脚传入或传出。可以通过加载不同的命令模式来读取芯片的标识，对输入引脚采样，驱动（或悬空）输出引脚，操控芯片功能，或者旁路（将TDI与TDO连通以在逻辑上短接多个芯片的链路）。TCK的工作频率依芯片的不同而不同，但其通常工作在10-100MHz（每位10-100ns）。
当在集成电路中进行边界扫描时，被处理的信号是在同一块IC的不同功能模块间的，而不是不同IC之间的。
TRST引脚是一个可选的相对待测逻辑低电平有效的复位开关——通常是异步的，但有时也是同步的，依芯片而定。如果该引脚没有定义，则待测逻辑可由同步时钟输入复位指令而复位。
尽管如此，极少消费类产品提供外部的JTAG端口接口，但作为开发样品的残留，这些接口在印刷电路板上十分常见。在研发后，这些接口常常为反向工程提供了非常良好的途径。
JTAG-Zustandsautomat
== 常用的扩展 ==
关于制造商的扩展：英飞凌，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 date=20210118135738 ，born out of the  openwince date=20201023011303  project's  JTAG Tools date=20210202182008 ，supports a large set of inexpensive IEEE 1284 parallel printer port and USB JTAG cables
*  JTAG-ARM9 date=20050405231603  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 date=20200911132455  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 date=20210114175653  JTAG development systems.
*  JTAG DFT Analysis date=20101101015451  JTAG Design for Test software.
*  JTAG Technologies date=20201126183944  Test and programming development systems.
*  TopJTAG Probe date=20201130051448  Interactive JTAG/boundary-scan software for circuit debugging and visualization.
*  Green Hills Software date=20210115094938  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 date=20201020083419  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 date=20100201133333  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 date=20200209031534  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 date=20201203195743  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 date=20201204141012  Development System
*  Göpel electronic date=20210114175658  SCANFLEX
*  Corelis date=20210114175654  ScanExpress
*  yaJFP date=20120503210215  Zheyuan Technlogies