DJTG: JTAG controller subsystem
This subsystem implements a JTAG controller.
The port properties on DJTG are as follows:
bit 0: supports
SET_SPEED
commandbit 1: supports
SET_TMS_TDI_TCK
command
SET_SPEED
Sets the clock frequency.
subsystem:
0x02
(DJTG)command type:
0x03
(short)command payload: 32-bit word (requested frequency in Hz)
response payload: 32-bit word (actual frequency in Hz)
This command returns the actual frequency used, as adjusted by the device to match hardware capabilities.
GET_SPEED
Gets the clock frequency.
subsystem:
0x02
(DJTG)command type:
0x04
(short)command payload: none
response payload: 32-bit word (frequency in Hz)
SET_TMS_TDI_TCK
Sets the current state of the pins.
subsystem:
0x02
(DJTG)command type:
0x05
(short)command payload: 3 bytes:
byte 0: TMS state
byte 1: TDI state
byte 2: TCK state
response payload: none
GET_TMS_TDI_TDO_TCK
Gets the current state of the pins.
subsystem:
0x02
(DJTG)command type:
0x06
(short)command payload: none
response payload: 4 bytes
byte 0: TMS state
byte 1: TDI state
byte 2: TDO state
byte 3: TCK state
CLOCK_TCK
Clocks TCK for the specified number of cycles, transferring no data.
subsystem:
0x02
(DJTG)command type:
0x07
(long)command payload: 6 bytes
byte 0: TMS state
byte 1: TDI state
byte 2-5 (32-bit word): cycle count
response payload: none
long data OUT: none
long data IN: none
PUT_TDI_BITS
Shifts out data sent through OUT EP3 on the TDI pin. Optionally also shifts in data from TDO to IN EP4.
subsystem:
0x02
(DJTG)command type:
0x08
(long)command payload: 6 bytes
byte 0:
0: only shift out data on TDI
1: shift out data on TDI and shift in data from TDO
byte 1: TMS state
byte 2-5 (32-bit word): bit count
response payload: none
long data OUT: data to shift out on TDI,
bit_count.ceil_div(8)
bytes long, packed LSB-firstlong data IN: if shifting in enabled, data shifted in from TDO,
bit_count.ceil_div(8)
bytes long, packed LSB-first; otherwise, none
GET_TDO_BITS
Shifts in data from TDO to IN EP4.
subsystem:
0x02
(DJTG)command type:
0x09
(long)command payload: 6 bytes
byte 0: TMS state
byte 1: TDI state
byte 2-5 (32-bit word): bit count
response payload: none
long data IN: data shifted in from TDO,
bit_count.ceil_div(8)
bytes long, packed LSB-first
PUT_TMS_TDI_BITS
Shifts out data sent through OUT EP3 on the TMS and TDI pins. Optionally also shifts in data from TDO to IN EP4.
subsystem:
0x02
(DJTG)command type:
0x0a
(long)command payload: 5 bytes
byte 0:
0: only shift out data on TDI+TMS (OUT EP4)
1: shift out data on TDI+TMS and shift in data from TDO (OUT EP4 + IN EP4)
byte 1-4 (32-bit word): bit count
response payload: none
long data OUT: data to shift out on TDI+TMS,
bit_count.ceil_div(4)
bytes longlong data IN: if shifting in enabled, data shifted in from TDO,
bit_count.ceil_div(8)
bytes long, packed LSB-first; otherwise, none
For shifting out, TDI and TMS are interleaved LSB-first as follows:
bit 0: TDI for cycle 0
bit 1: TMS for cycle 0
bit 2: TDI for cycle 1
bit 3: TMS for cycle 1
…
PUT_TMS_BITS
Shifts out data sent through OUT EP3 on the TMS pin. Optionally also shifts in data from TDO to IN EP4.
subsystem:
0x02
(DJTG)command type:
0x0b
(long)command payload: 6 bytes
byte 0:
0: only shift out data on TMS
1: shift out data on TMS and shift in data from TDO
byte 1: TDI state
byte 2-5 (32-bit word): bit count
response payload: none
long data OUT: data to shift out on TMS,
bit_count.ceil_div(8)
bytes long, packed LSB-firstlong data IN: if shifting in enabled, data shifted in from TDO,
bit_count.ceil_div(8)
bytes long, packed LSB-first; otherwise, none