#include <sysexits.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include "dbg_msg.h"
#include "jt_tap.h"
#include "jt_io_usb.h"
#include "jt_arm.h"
#include "arm_gdbstub_callback.h"
#include "convert.h"
#include "transaction.h"
Test Access Port Controller Interface Support functions to access the JTAG interface of FTDI-Chip FT2232 based USB devices
#define HIGH_WATER_MARK (BUFFER_SIZE*7/8) |
Referenced by tap_data_usb_ftdi(), tap_idle_usb_ftdi(), and tap_instr_usb_ftdi().
#define READ_ENDPOINT 0x81 |
Referenced by tap_init_usb_ftdi(), and tap_init_usb_jlink().
#define WRITE_ENDPOINT 0x02 |
Referenced by tap_init_usb_ftdi(), and tap_init_usb_jlink().
#define USBCNTRL_IDX 1 |
Referenced by tap_init_usb_ftdi().
static void olimexLedOn | ( | void | ) | [static] |
References high_direction, high_output, and usbIO_writeBufferAppend().
Referenced by tap_init_usb_ftdi().
static void olimexLedOff | ( | void | ) | [static] |
References high_direction, high_output, and usbIO_writeBufferAppend().
Referenced by tap_init_usb_ftdi().
static void flyswatterLedOn | ( | void | ) | [static] |
References high_direction, high_output, and usbIO_writeBufferAppend().
Referenced by tap_init_usb_ftdi().
static void flyswatterLedOff | ( | void | ) | [static] |
References high_direction, high_output, and usbIO_writeBufferAppend().
Referenced by tap_init_usb_ftdi().
static void turtelLedOn | ( | void | ) | [static] |
References high_direction, high_output, and usbIO_writeBufferAppend().
Referenced by tap_init_usb_ftdi().
static void turtelLedOff | ( | void | ) | [static] |
References high_direction, high_output, and usbIO_writeBufferAppend().
Referenced by tap_init_usb_ftdi().
static void ftdiBlink | ( | void | ) | [static] |
static void ftdiBlinkStop | ( | void | ) | [static] |
Referenced by ftdiBlinkStopCB().
int ftdiBlinkStopCB | ( | int | unusedArg, | |
int | unusedCnt, | |||
struct context * | noContext | |||
) |
References allocateCmdCallbackEntry(), DBG_LEVEL_GDB_ARM_ERROR, dbgPrintf(), ftdiBlinkStop(), inQueueCmdCallbackEntry(), and libusbWriteData().
Referenced by ftdiBlink().
void tap_init_usb_ftdi | ( | void | ) |
References CFG_FLYSWATTER, CFG_JTAGKEY, CFG_MSK, CFG_OLIMEX, CFG_OOCDLINK, CFG_OOCDUSBJTAG, CFG_SIGNALYZER, CFG_SRST_PUSH_PULL, CFG_STM32STICK, CFG_STR9COMSTICK, CFG_TRST_PUSH_PULL, CFG_TURTEL, DBG_LEVEL_GDB_ARM_ERROR, dbgPrintf(), error_exit_code, ERROR_MSG_EXIT, flyswatterLedOff(), flyswatterLedOn(), getHighDataBits_usb_ftdi(), getLowDataBits_usb_ftdi(), high_direction, high_output, libusbReadData(), libusbWriteData(), low_direction, low_output, nSRST_dir_lo, nSRST_hi, nSRST_lo, nSRST_OE_hi, nSRST_OE_lo, nSRSTnOE_hi, nSRSTnOE_lo, nTRST_dir_lo, nTRST_hi, nTRST_lo, nTRSTnOE_hi, nTRSTnOE_lo, olimexLedOff(), olimexLedOn(), READ_ENDPOINT, usb_io_buffer::read_endpoint, usb_io_buffer::readbuffer_offset, usb_io_buffer::readbuffer_remaining, setHighDataBits_usb_ftdi(), setLowDataBits_usb_ftdi(), SRST_hi, SRST_lo, tap_clk_div, turtelLedOff(), turtelLedOn(), usb_io_buffer::usb_read_timeout, usb_io_buffer::usb_write_timeout, USBCNTRL_IDX, usbIO_buf, usbIO_readBufferGetNext(), usbIO_writeBufferAppend(), WRITE_ENDPOINT, and usb_io_buffer::write_endpoint.
void tap_hard_reset_usb_ftdi | ( | void | ) |
References ftdiBlink(), libusbWriteData(), and sendReset().
Referenced by tap_discover_chain_usb_ftdi().
void tap_reset_usb_ftdi | ( | void | ) |
References bit_sendTms(), ftdiBlink(), libusbWriteData(), and low_output.
Referenced by tap_discover_chain_usb_ftdi().
void tap_idle_usb_ftdi | ( | int | now | ) |
References bit_sendTms(), ftdiBlink(), HIGH_WATER_MARK, libusbWriteData(), low_output, transactionActivateFinal(), transactionCreate(), transactionErase(), transactionExecute(), transactionGet(), transactionPenting(), transaction::uplevel, usbIO_buf, and usb_io_buffer::writebuffer_size.
Referenced by tap_discover_chain_usb_ftdi().
void tap_instr_usb_ftdi | ( | int | num_bits, | |
char * | to_dev, | |||
char * | from_dev | |||
) |
References bit_sendTdTo(), bit_sendTdTo_readTdFrom(), bit_sendTms(), bit_sendTms_readTdFrom(), bitsOfBufferToString(), byte_sendTdTo(), byte_sendTdTo_readTdFrom(), bytesOfBufferToString(), DBG_LEVEL_GDB_ARM_ERROR, dbgPrintf(), ftdiBlink(), HIGH_WATER_MARK, ownParam::INSTUCTION_CHAIN_TRANSFER, libusbReadData(), libusbWriteData(), low_output, transaction::parameter, ownParam::remainBits, responseBitLen, responseByteLen, tap_usb_io_ftdi_cb(), transactionActivateFinal(), transactionCreate(), transactionErase(), transactionExecute(), transactionGet(), transactionPenting(), ownParam::transferBytes, ownParam::type, transaction::uplevel, usbIO_buf, usbIO_readBufferGetNext(), and usb_io_buffer::writebuffer_size.
void tap_data_usb_ftdi | ( | int | num_bits, | |
char * | to_dev, | |||
char * | from_dev | |||
) |
References bit_sendTdTo(), bit_sendTdTo_readTdFrom(), bit_sendTms(), bit_sendTms_readTdFrom(), bitsOfBufferToString(), byte_sendTdTo(), byte_sendTdTo_readTdFrom(), bytesOfBufferToString(), ownParam::DATA_CHAIN_TRANSFER, DBG_LEVEL_GDB_ARM_ERROR, dbgPrintf(), ftdiBlink(), HIGH_WATER_MARK, libusbReadData(), libusbWriteData(), low_output, transaction::parameter, ownParam::remainBits, responseBitLen, responseByteLen, tap_usb_io_ftdi_cb(), transactionActivateFinal(), transactionCreate(), transactionErase(), transactionExecute(), transactionGet(), transactionPenting(), ownParam::transferBytes, ownParam::type, transaction::uplevel, usbIO_buf, usbIO_readBufferGetNext(), and usb_io_buffer::writebuffer_size.
void tap_discover_chain_usb_ftdi | ( | void | ) |
References bit_sendTdTo_readTdFrom(), bit_sendTms(), byte_sendTdTo_readTdFrom(), DBG_LEVEL_JTAG_TAP, dbgPrintf(), error_exit_code, ERROR_MSG_EXIT, ftdiBlink(), chain_info::has_idcode, chain_info::idcode, chain_info::instr_len, instrLenByID::instrLen, jtag_supp_bitstr2int_MSB_First(), instrLenByID::jtagID, libusbReadData(), libusbWriteData(), chain_info::next, chain_info::prev, responseBitLen, responseByteLen, tap_hard_reset_usb_ftdi(), tap_idle_usb_ftdi(), tap_reset_usb_ftdi(), and usbIO_readBufferGetNext().
static void bit_sendTms_readTdFrom | ( | int | tdTo, | |
int | numBits, | |||
char * | tmsData | |||
) | [static] |
References responseBitLen, responseByteLen, usbIO_buf, usbIO_writeBufferAppend(), and usb_io_buffer::xferBits.
Referenced by tap_data_usb_ftdi(), tap_instr_usb_ftdi(), and tap_test_1_usb_ftdi().
static void bit_sendTms | ( | int | tdTo, | |
int | numBits, | |||
char * | tmsData | |||
) | [static] |
References usbIO_buf, usbIO_writeBufferAppend(), and usb_io_buffer::xferBits.
Referenced by tap_data_usb_ftdi(), tap_discover_chain_usb_ftdi(), tap_idle_usb_ftdi(), tap_instr_usb_ftdi(), tap_reset_usb_ftdi(), tap_test_1_usb_ftdi(), and tap_test_2_usb_ftdi().
static void byte_sendTdTo_readTdFrom | ( | int | numBits, | |
char * | tdToStr, | |||
int | tdFix | |||
) | [static] |
References responseBitLen, responseByteLen, usbIO_buf, usbIO_writeBufferAppend(), and usb_io_buffer::xferBits.
Referenced by tap_data_usb_ftdi(), tap_discover_chain_usb_ftdi(), and tap_instr_usb_ftdi().
static void byte_sendTdTo | ( | int | numBits, | |
char * | tdToStr, | |||
int | tdFix | |||
) | [static] |
References usbIO_buf, usbIO_writeBufferAppend(), and usb_io_buffer::xferBits.
Referenced by tap_data_usb_ftdi(), and tap_instr_usb_ftdi().
static void bit_sendTdTo_readTdFrom | ( | int | numBits, | |
char * | tdToStr, | |||
int | tdFix | |||
) | [static] |
References responseBitLen, responseByteLen, usbIO_buf, usbIO_writeBufferAppend(), and usb_io_buffer::xferBits.
Referenced by tap_data_usb_ftdi(), tap_discover_chain_usb_ftdi(), tap_instr_usb_ftdi(), and tap_test_2_usb_ftdi().
static void bit_sendTdTo | ( | int | numBits, | |
char * | tdToStr, | |||
int | tdFix | |||
) | [static] |
References usbIO_buf, usbIO_writeBufferAppend(), and usb_io_buffer::xferBits.
Referenced by tap_data_usb_ftdi(), and tap_instr_usb_ftdi().
static void setLowDataBits_usb_ftdi | ( | void | ) | [static] |
References low_direction, low_output, and usbIO_writeBufferAppend().
Referenced by sendReset(), and tap_init_usb_ftdi().
static void setHighDataBits_usb_ftdi | ( | void | ) | [static] |
References high_direction, high_output, and usbIO_writeBufferAppend().
Referenced by sendReset(), and tap_init_usb_ftdi().
static void getLowDataBits_usb_ftdi | ( | void | ) | [static] |
References responseBitLen, responseByteLen, and usbIO_writeBufferAppend().
Referenced by tap_init_usb_ftdi().
static void getHighDataBits_usb_ftdi | ( | void | ) | [static] |
References responseByteLen, and usbIO_writeBufferAppend().
Referenced by tap_init_usb_ftdi().
static void bytesOfBufferToString | ( | int | numBytes, | |
char * | str | |||
) | [static] |
References usbIO_readBufferGetNext().
Referenced by tap_data_usb_ftdi(), tap_instr_usb_ftdi(), and tap_usb_io_ftdi_cb().
static void bitsOfBufferToString | ( | int | numBits, | |
char * | str | |||
) | [static] |
References usbIO_readBufferGetNext().
Referenced by tap_data_usb_ftdi(), tap_instr_usb_ftdi(), and tap_usb_io_ftdi_cb().
static void sendReset | ( | int | trst, | |
int | srst | |||
) | [static] |
References CFG_SRST_PUSH_PULL, CFG_TRST_PUSH_PULL, high_output, low_direction, low_output, nSRST_dir_lo, nSRST_hi, nSRST_lo, nSRST_OE_hi, nSRST_OE_lo, nSRSTnOE_hi, nSRSTnOE_lo, nTRST_dir_lo, nTRST_hi, nTRST_lo, nTRSTnOE_hi, nTRSTnOE_lo, setHighDataBits_usb_ftdi(), setLowDataBits_usb_ftdi(), SRST_hi, and SRST_lo.
Referenced by tap_hard_reset_usb_ftdi().
static void tap_usb_io_ftdi_cb | ( | struct transaction * | context | ) | [static] |
References bitsOfBufferToString(), bytesOfBufferToString(), DBG_LEVEL_GDB_ARM_ERROR, dbgPrintf(), libusbReadData(), libusbWriteData(), transaction::parameter, usb_io_buffer::readbuffer_pos, ownParam::remainBits, transactionErase(), ownParam::transferBytes, ownParam::type, transaction::uplevel, usbIO_buf, usbIO_readBufferGetNext(), and usb_io_buffer::writebuffer_size.
Referenced by tap_data_usb_ftdi(), and tap_instr_usb_ftdi().
void tap_test_1_usb_ftdi | ( | void | ) |
References bit_sendTms(), bit_sendTms_readTdFrom(), libusbReadData(), and libusbWriteData().
Referenced by tap_raw_io_test().
void tap_test_2_usb_ftdi | ( | void | ) |
References bit_sendTdTo_readTdFrom(), bit_sendTms(), libusbReadData(), and libusbWriteData().
Referenced by tap_raw_io_test().
uint32_t tap_clk_div [static] |
Referenced by tap_init_usb_ftdi().
struct ftdiBlinkState ftdiBlinkState [static] |
uint8_t low_output [static] |
uint8_t low_direction [static] |
Referenced by sendReset(), setLowDataBits_usb_ftdi(), and tap_init_usb_ftdi().
uint8_t nTRST_lo [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nTRSTnOE_lo [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nSRST_lo [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nSRSTnOE_lo [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t SRST_lo [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nSRST_OE_lo [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nSRST_dir_lo [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nTRST_dir_lo [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t high_output [static] |
uint8_t high_direction [static] |
uint8_t nTRST_hi [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nTRSTnOE_hi [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nSRST_hi [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nSRSTnOE_hi [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t SRST_hi [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
uint8_t nSRST_OE_hi [static] |
Referenced by sendReset(), and tap_init_usb_ftdi().
int responseByteLen [static] |