8 JTAG Debug Transport Module
This Debug Transport Module is based around a normal JTAG Test Access Port (TAP). The JTAG TAP allows access to arbitrary JTAG registers by first selecting one using the JTAG instruction register (IR), and then accessing it through the JTAG data register (DR).
8.1 JTAG Background
JTAG refers to IEEE Std 1149.1-2013. It is a standard that defines test logic that can be included in an integrated circuit to test the interconnections between integrated circuits, test the integrated circuit itself, and observe or modify circuit activity during the component’s normal operation. This specification uses the latter functionality. The JTAG standard defines a Test Access Port (TAP) that can be used to read and write a few custom registers, which can be used to communicate with debug hardware in a component.
8.2 JTAG DTM Registers
JTAG TAPs used as a DTM must have an IR of at least 5 bits. When the TAP is reset, IR must default to 00001, selecting the IDCODE instruction. A full list of JTAG registers along with their encoding is in Table [table:jtag_registers]. If the IR actually has more than 5 bits, then the encodings in Table [table:jtag_registers] should be extended with 0’s in their most significant bits. The only regular JTAG registers a debugger might use are BYPASS and IDCODE, but this specification leaves IR space for many other standard JTAG instructions. Unimplemented instructions must select the BYPASS register.
8.3 Recommended JTAG Connector
To make it easy to acquire debug hardware, this spec recommends a connector that is compatible with the MIPI-10 .05 inch connector specification, as described in the MIPI Alliance Recommendation for Debug and Trace Connectors, Version 1.10.00, 16 March 2011.
The connector has .05 inch spacing, gold-plated male header with .016 inch thick hardened copper or beryllium bronze square posts (SAMTEC FTSH or equivalent). Female connectors are compatible 20μm gold connectors.
Viewing the male header from above (the pins pointing at your eye), a target’s connector looks as it does in Table [tab:mipiten]. The function of each pin is described in Table 1.
VREF DEBUG | 1 | 2 | TMS |
---|---|---|---|
GND | 3 | 4 | TCK |
GND | 5 | 6 | TDO |
GND or KEY | 7 | 8 | TDI |
GND | 9 | 10 | nRESET |
If a platform requires nTRST then it is permissible to reuse the nRESET pin as the nTRST signal. If a platform requires both system reset and TAP reset, the MIPI-20 connector should be used. Its physical connector is virtually identical to MIPI-10, except that it’s twice as long, supporting twice as many pins. Its connector is show in Table [tab:mipitwenty].
VREF DEBUG | 1 | 2 | TMS |
---|---|---|---|
GND | 3 | 4 | TCK |
GND | 5 | 6 | TDO |
GND or KEY | 7 | 8 | TDI |
GND | 9 | 10 | nRESET |
GND | 11 | 12 | RTCK |
GND | 13 | 14 | nTRST_PD |
GND | 15 | 16 | nTRST |
GND | 17 | 18 | DBGRQ |
GND | 19 | 20 | DBGACK |
The same connectors can be used for 2-wire cJTAG. In that case TMS is used for TMSC, and TCK is used for TCKC.