OpenOCD
|
Go to the source code of this file.
Data Structures | |
struct | name_mapping |
struct | tms_sequences |
Macros | |
#define | B8(bits, count) {((uint8_t)B8__(HEX__(bits))), (count)} |
#define | B8__(x) |
#define | HEX__(n) 0x##n##LU |
#define | JTAG_DEBUG_STATE_APPEND(buf, len, bit) do { buf[len] = bit ? '1' : '0'; } while (0) |
#define | JTAG_DEBUG_STATE_PRINT(a, b, astr, bstr) |
Typedefs | |
typedef const struct tms_sequences | tms_table[6][6] |
Functions | |
enum tap_state | jtag_debug_state_machine_ (const void *tms_buf, const void *tdi_buf, unsigned int tap_bits, enum tap_state next_state) |
enum tap_state | tap_get_end_state (void) |
For more information,. More... | |
enum tap_state | tap_get_state (void) |
This function gets the state of the "state follower" which tracks the state of the TAPs connected to the cable. More... | |
int | tap_get_tms_path (enum tap_state from, enum tap_state to) |
This function provides a "bit sequence" indicating what has to be done with TMS during a sequence of seven TAP clock cycles in order to get from state "from" to state "to". More... | |
int | tap_get_tms_path_len (enum tap_state from, enum tap_state to) |
Function int tap_get_tms_path_len returns the total number of bits that represents a TMS path transition as given by the function tap_get_tms_path(). More... | |
bool | tap_is_state_stable (enum tap_state astate) |
Function tap_is_state_stable returns true if the astate is stable. More... | |
int | tap_move_ndx (enum tap_state astate) |
Function tap_move_ndx when given a stable state, returns an index from 0-5. More... | |
void | tap_set_end_state (enum tap_state new_end_state) |
This function sets the state of an "end state follower" which tracks the state that any cable driver thinks will be the end (resultant) state of the current TAP SIR or SDR operation. More... | |
void | tap_set_state_impl (enum tap_state new_state) |
implementation of wrapper function tap_set_state() More... | |
enum tap_state | tap_state_by_name (const char *name) |
Provides user-friendly name lookup of TAP states. More... | |
const char * | tap_state_name (enum tap_state state) |
Function tap_state_name Returns a string suitable for display representing the JTAG tap_state. More... | |
enum tap_state | tap_state_transition (enum tap_state cur_state, bool tms) |
Function tap_state_transition takes a current TAP state and returns the next state according to the tms value. More... | |
void | tap_use_new_tms_table (bool use_new) |
Allow switching between old and new TMS tables. More... | |
bool | tap_uses_new_tms_table (void) |
Variables | |
static enum tap_state | end_state_follower = TAP_RESET |
static const struct tms_sequences | old_tms_seqs [6][6] |
static const struct tms_sequences | short_tms_seqs [6][6] |
static enum tap_state | state_follower = TAP_RESET |
static const struct name_mapping | tap_name_mapping [] |
static tms_table * | tms_seqs = &short_tms_seqs |
Definition at line 123 of file interface.c.
#define B8__ | ( | x | ) |
Definition at line 113 of file interface.c.
#define HEX__ | ( | n | ) | 0x##n##LU |
Definition at line 111 of file interface.c.
Definition at line 368 of file interface.c.
#define JTAG_DEBUG_STATE_PRINT | ( | a, | |
b, | |||
astr, | |||
bstr | |||
) |
Definition at line 370 of file interface.c.
typedef const struct tms_sequences tms_table[6][6] |
Definition at line 61 of file interface.c.
enum tap_state jtag_debug_state_machine_ | ( | const void * | tms_buf, |
const void * | tdi_buf, | ||
unsigned int | tap_bits, | ||
enum tap_state | next_state | ||
) |
Definition at line 344 of file interface.c.
References ARRAY_SIZE, name_mapping::name, state, and tap_name_mapping.
enum tap_state tap_get_end_state | ( | void | ) |
For more information,.
Definition at line 48 of file interface.c.
References end_state_follower.
Referenced by amt_jtagaccel_runtest(), amt_jtagaccel_scan(), amt_jtagaccel_state_move(), angie_queue_scan(), angie_queue_statemove(), armjtagew_runtest(), armjtagew_scan(), armjtagew_state_move(), bitbang_runtest(), bitbang_scan(), bitbang_state_move(), bitq_execute_queue(), bitq_runtest(), buspirate_runtest(), buspirate_scan(), buspirate_state_move(), cmsis_dap_execute_scan(), cmsis_dap_runtest(), cmsis_dap_state_move(), ftdi_execute_runtest(), ftdi_execute_scan(), ftdi_execute_statemove(), gw16012_runtest(), gw16012_scan(), gw16012_state_move(), jlink_execute_scan(), jlink_runtest(), jlink_state_move(), opendous_runtest(), opendous_scan(), opendous_state_move(), openjtag_execute_runtest(), openjtag_execute_scan(), openjtag_execute_statemove(), osbdm_add_scan(), osbdm_add_statemove(), rlink_runtest(), rlink_scan(), rlink_state_move(), syncbb_runtest(), syncbb_scan(), syncbb_state_move(), ulink_queue_scan(), ulink_queue_statemove(), usbprog_runtest(), usbprog_scan(), usbprog_state_move(), vsllink_runtest(), vsllink_scan(), vsllink_state_move(), xlnx_pcie_xvc_execute_runtest(), xlnx_pcie_xvc_execute_scan(), and xlnx_pcie_xvc_execute_statemove().
enum tap_state tap_get_state | ( | void | ) |
This function gets the state of the "state follower" which tracks the state of the TAPs connected to the cable.
Definition at line 31 of file interface.c.
Referenced by amt_jtagaccel_runtest(), amt_jtagaccel_scan(), amt_jtagaccel_state_move(), angie_queue_pathmove(), angie_queue_runtest(), angie_queue_scan(), angie_queue_stableclocks(), angie_queue_statemove(), armjtagew_path_move(), armjtagew_runtest(), armjtagew_scan(), armjtagew_state_move(), bitbang_path_move(), bitbang_runtest(), bitbang_scan(), bitbang_stableclocks(), bitbang_state_move(), bitq_execute_queue(), bitq_path_move(), bitq_runtest(), bitq_scan_field(), bitq_state_move(), buspirate_path_move(), buspirate_runtest(), buspirate_scan(), buspirate_stableclocks(), buspirate_state_move(), cmsis_dap_execute_scan(), cmsis_dap_pathmove(), cmsis_dap_runtest(), cmsis_dap_stableclocks(), cmsis_dap_state_move(), ftdi_execute_pathmove(), ftdi_execute_runtest(), ftdi_execute_scan(), ftdi_execute_sleep(), ftdi_execute_stableclocks(), ftdi_execute_statemove(), gw16012_path_move(), gw16012_runtest(), gw16012_scan(), gw16012_state_move(), jlink_execute_scan(), jlink_path_move(), jlink_runtest(), jlink_stableclocks(), jlink_state_move(), jtag_vpi_path_move(), jtag_vpi_stableclocks(), jtag_vpi_state_move(), move_to_state(), opendous_path_move(), opendous_runtest(), opendous_scan(), opendous_state_move(), openjtag_execute_runtest(), openjtag_execute_scan(), osbdm_add_pathmove(), osbdm_add_scan(), osbdm_add_stableclocks(), osbdm_add_statemove(), rlink_path_move(), rlink_runtest(), rlink_scan(), rlink_state_move(), syncbb_path_move(), syncbb_runtest(), syncbb_scan(), syncbb_stableclocks(), syncbb_state_move(), ublast_path_move(), ublast_state_move(), ulink_queue_pathmove(), ulink_queue_runtest(), ulink_queue_scan(), ulink_queue_stableclocks(), ulink_queue_statemove(), usbprog_path_move(), usbprog_runtest(), usbprog_scan(), usbprog_state_move(), vdebug_jtag_path_move(), vdebug_jtag_runtest(), vdebug_jtag_scan(), vdebug_jtag_stableclocks(), vdebug_jtag_tlr(), vsllink_execute_queue(), vsllink_path_move(), vsllink_runtest(), vsllink_scan(), vsllink_state_move(), xlnx_pcie_xvc_execute_pathmove(), xlnx_pcie_xvc_execute_runtest(), xlnx_pcie_xvc_execute_scan(), xlnx_pcie_xvc_execute_stableclocks(), and xlnx_pcie_xvc_execute_statemove().
This function provides a "bit sequence" indicating what has to be done with TMS during a sequence of seven TAP clock cycles in order to get from state "from" to state "to".
The length of the sequence must be determined with a parallel call to tap_get_tms_path_len().
from | The starting state. |
to | The desired final state. |
Definition at line 190 of file interface.c.
References tap_move_ndx(), and tms_seqs.
Referenced by angie_queue_scan(), angie_queue_statemove(), armjtagew_state_move(), bitbang_state_move(), bitq_state_move(), buspirate_state_move(), cmsis_dap_state_move(), gw16012_state_move(), jlink_state_move(), jtag_add_statemove(), jtag_vpi_state_move(), move_to_state(), opendous_state_move(), osbdm_add_statemove(), rlink_state_move(), syncbb_state_move(), ublast_state_move(), ulink_queue_scan(), ulink_queue_statemove(), usbprog_state_move(), vdebug_jtag_runtest(), vdebug_jtag_scan(), vdebug_jtag_tlr(), vsllink_state_move(), and xlnx_pcie_xvc_execute_statemove().
Function int tap_get_tms_path_len returns the total number of bits that represents a TMS path transition as given by the function tap_get_tms_path().
For at least one interface (JLink) it's not OK to simply "pad" TMS sequences to fit a whole byte. (I suspect this is a general TAP problem within OOCD.) Padding TMS causes all manner of instability that's not easily discovered. Using this routine we can apply EXACTLY the state transitions required to make something work - no more - no less.
from | is the starting state |
to | is the resultant or final state |
Definition at line 195 of file interface.c.
References tap_move_ndx(), and tms_seqs.
Referenced by angie_queue_scan(), angie_queue_statemove(), armjtagew_state_move(), bitbang_state_move(), bitq_state_move(), buspirate_state_move(), cmsis_dap_state_move(), ftdi_initialize(), gw16012_state_move(), jlink_state_move(), jtag_add_statemove(), jtag_vpi_state_move(), move_to_state(), opendous_state_move(), osbdm_add_statemove(), rlink_state_move(), syncbb_state_move(), ublast_state_move(), ulink_queue_scan(), ulink_queue_statemove(), vdebug_jtag_runtest(), vdebug_jtag_scan(), vdebug_jtag_tlr(), vsllink_state_move(), and xlnx_pcie_xvc_execute_statemove().
bool tap_is_state_stable | ( | enum tap_state | astate | ) |
Function tap_is_state_stable returns true if the astate is stable.
Definition at line 200 of file interface.c.
References TAP_DRPAUSE, TAP_DRSHIFT, TAP_IDLE, TAP_IRPAUSE, TAP_IRSHIFT, and TAP_RESET.
Referenced by amt_jtagaccel_end_state(), angie_queue_stableclocks(), angie_set_end_state(), armjtagew_end_state(), bitbang_end_state(), bitq_end_state(), bitq_state_move(), buspirate_end_state(), cmsis_dap_end_state(), ftdi_end_state(), gw16012_end_state(), jlink_end_state(), jtag_add_clocks(), jtag_add_pathmove(), jtag_add_statemove(), opendous_end_state(), osbdm_add_stableclocks(), rlink_end_state(), syncbb_end_state(), ulink_queue_stableclocks(), ulink_set_end_state(), usbprog_end_state(), and vsllink_end_state().
int tap_move_ndx | ( | enum tap_state | astate | ) |
Function tap_move_ndx when given a stable state, returns an index from 0-5.
The index corresponds to a sequence of stable states which are given in this order:
{ TAP_RESET, TAP_IDLE, TAP_DRSHIFT, TAP_DRPAUSE, TAP_IRSHIFT, TAP_IRPAUSE }
This sequence corresponds to look up tables which are used in some of the cable drivers.
astate | is the stable state to find in the sequence. If a non stable state is passed, this may cause the program to output an error message and terminate. |
Definition at line 61 of file interface.c.
Referenced by amt_jtagaccel_scan(), amt_jtagaccel_state_move(), tap_get_tms_path(), and tap_get_tms_path_len().
void tap_set_end_state | ( | enum tap_state | new_end_state | ) |
This function sets the state of an "end state follower" which tracks the state that any cable driver thinks will be the end (resultant) state of the current TAP SIR or SDR operation.
At completion of that TAP operation this value is copied into the state follower via tap_set_state().
new_end_state | The state the TAPs should enter at completion of a pending TAP operation. |
Definition at line 48 of file interface.c.
Referenced by amt_jtagaccel_end_state(), angie_queue_runtest(), angie_queue_scan(), angie_set_end_state(), armjtagew_end_state(), armjtagew_path_move(), bitbang_end_state(), bitbang_path_move(), bitq_end_state(), bitq_path_move(), buspirate_end_state(), buspirate_path_move(), cmsis_dap_end_state(), ftdi_end_state(), ftdi_execute_pathmove(), gw16012_end_state(), gw16012_path_move(), jlink_end_state(), jlink_path_move(), opendous_end_state(), opendous_path_move(), openjtag_execute_runtest(), openjtag_execute_scan(), openjtag_execute_statemove(), osbdm_add_pathmove(), osbdm_add_scan(), osbdm_add_statemove(), rlink_end_state(), rlink_path_move(), syncbb_end_state(), syncbb_path_move(), ulink_queue_runtest(), ulink_queue_scan(), ulink_set_end_state(), usbprog_end_state(), usbprog_path_move(), vsllink_end_state(), vsllink_path_move(), xlnx_pcie_xvc_execute_command(), xlnx_pcie_xvc_execute_pathmove(), xlnx_pcie_xvc_execute_runtest(), and xlnx_pcie_xvc_execute_scan().
void tap_set_state_impl | ( | enum tap_state | new_state | ) |
implementation of wrapper function tap_set_state()
Definition at line 31 of file interface.c.
enum tap_state tap_state_by_name | ( | const char * | name | ) |
Provides user-friendly name lookup of TAP states.
Definition at line 344 of file interface.c.
Referenced by COMMAND_HANDLER(), and reset_jtag().
const char* tap_state_name | ( | enum tap_state | state | ) |
Function tap_state_name Returns a string suitable for display representing the JTAG tap_state.
Definition at line 344 of file interface.c.
Referenced by angie_queue_pathmove(), angie_set_end_state(), armjtagew_path_move(), bitbang_execute_queue(), bitbang_path_move(), bitq_path_move(), buspirate_execute_queue(), buspirate_path_move(), buspirate_runtest(), cmsis_dap_execute_scan(), cmsis_dap_pathmove(), cmsis_dap_state_move(), COMMAND_HANDLER(), default_interface_jtag_execute_queue(), dummy_reset(), dummy_write(), ftdi_end_state(), ftdi_execute_pathmove(), ftdi_execute_runtest(), ftdi_execute_scan(), ftdi_execute_sleep(), ftdi_execute_stableclocks(), ftdi_execute_statemove(), gw16012_path_move(), jlink_execute_scan(), jlink_path_move(), jtag_add_clocks(), jtag_add_pathmove(), jtag_add_statemove(), move_to_state(), opendous_path_move(), openjtag_execute_scan(), osbdm_add_pathmove(), osbdm_add_stableclocks(), rlink_path_move(), svf_add_statemove(), syncbb_path_move(), ublast_state_move(), ulink_queue_pathmove(), ulink_set_end_state(), usbprog_path_move(), usbprog_runtest(), vsllink_execute_queue(), vsllink_path_move(), xlnx_pcie_xvc_execute_pathmove(), xlnx_pcie_xvc_execute_scan(), and xlnx_pcie_xvc_execute_statemove().
Function tap_state_transition takes a current TAP state and returns the next state according to the tms value.
current_state | is the state of a TAP currently. |
tms | is either zero or non-zero, just like a real TMS line in a jtag interface. |
Definition at line 200 of file interface.c.
Referenced by angie_queue_pathmove(), armjtagew_path_move(), bitbang_path_move(), bitq_path_move(), buspirate_path_move(), cmsis_dap_execute_scan(), cmsis_dap_pathmove(), dummy_write(), ftdi_execute_pathmove(), ftdi_execute_scan(), gw16012_path_move(), jlink_execute_scan(), jlink_path_move(), jtag_add_pathmove(), jtag_add_statemove(), jtag_vpi_path_move(), move_to_state(), opendous_path_move(), osbdm_add_pathmove(), rlink_path_move(), syncbb_path_move(), ublast_path_move(), ulink_queue_pathmove(), usbprog_path_move(), vdebug_jtag_path_move(), vsllink_path_move(), and xlnx_pcie_xvc_execute_pathmove().
void tap_use_new_tms_table | ( | bool | use_new | ) |
Allow switching between old and new TMS tables.
Definition at line 447 of file interface.c.
References old_tms_seqs, short_tms_seqs, and tms_seqs.
Referenced by COMMAND_HANDLER().
bool tap_uses_new_tms_table | ( | void | ) |
Definition at line 451 of file interface.c.
References short_tms_seqs, and tms_seqs.
Referenced by COMMAND_HANDLER().
Definition at line 31 of file interface.c.
Referenced by tap_get_end_state().
|
static |
Definition at line 61 of file interface.c.
Referenced by tap_use_new_tms_table().
|
static |
Definition at line 61 of file interface.c.
Referenced by tap_use_new_tms_table(), and tap_uses_new_tms_table().
Definition at line 1 of file interface.c.
|
static |
Referenced by jtag_debug_state_machine_().
|
static |
Definition at line 188 of file interface.c.
Referenced by tap_get_tms_path(), tap_get_tms_path_len(), tap_use_new_tms_table(), and tap_uses_new_tms_table().