ft2232.c

来自「UrJTAG package is free software, covered」· C语言 代码 · 共 1,641 行 · 第 1/4 页

C
1,641
字号
  cx_cmd_push( cmd_root, params->low_byte_value | BITMASK_TMS );  cx_cmd_push( cmd_root, params->low_byte_dir | BITMASK_TCK | BITMASK_TDI | BITMASK_TMS );  /* Set Data Bits High Byte     default:     TRST = 1     TRST buffer enable = 0     SRST = 1     SRST buffer enable = 0 */  params->high_byte_value_trst_active   = BITMASK_OOCDLINKS_nSRST;  params->high_byte_value_trst_inactive = BITMASK_OOCDLINKS_nTRST    | BITMASK_OOCDLINKS_nSRST;  params->high_byte_dir                 = BITMASK_OOCDLINKS_nTRST    | BITMASK_OOCDLINKS_nTRST_nOE    | BITMASK_OOCDLINKS_nSRST    | BITMASK_OOCDLINKS_nSRST_nOE;  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, params->high_byte_value_trst_inactive );  cx_cmd_push( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, params->high_byte_value_trst_inactive );  cx_cmd_push( cmd_root, params->high_byte_dir );  ft2232_set_frequency( cable, FT2232_MAX_TCK_FREQ );  params->last_tdo_valid = 0;  return 0;}static intft2232_turtelizer2_init( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  if (usbconn_open( cable->link.usb )) return -1;  /* static low byte value and direction:     set nJTAGOE to '0' -> activate output enables     set RST to 0 -> inactive nSRST */  params->low_byte_value = 0;  params->low_byte_dir   = BITMASK_TURTELIZER2_nJTAGOE | BITMASK_TURTELIZER2_RST;  /* Set Data Bits Low Byte     TCK = 0, TMS = 1, TDI = 0 */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, params->low_byte_value | BITMASK_TMS );  cx_cmd_push( cmd_root, params->low_byte_dir | BITMASK_TCK | BITMASK_TDI | BITMASK_TMS );  /* Set Data Bits High Byte     default:     TX1LED on     RX1LED on */  params->high_byte_value_trst_active   = 0;  params->high_byte_value_trst_inactive = 0;  params->high_byte_dir                 = BITMASK_TURTELIZER2_nTX1LED | BITMASK_TURTELIZER2_nRX1LED;  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, params->high_byte_value_trst_inactive );  cx_cmd_push( cmd_root, params->high_byte_dir );  ft2232_set_frequency( cable, FT2232_MAX_TCK_FREQ );  params->last_tdo_valid = 0;  return 0;}static intft2232_usbtojtagif_init( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  if (usbconn_open( cable->link.usb )) return -1;  /* static low byte value and direction:     nTRST = 1, RST = 1, DBGRQ = 0 */  params->low_byte_value = BITMASK_USBTOJTAGIF_nTRST | BITMASK_USBTOJTAGIF_RST;  params->low_byte_dir   = BITMASK_USBTOJTAGIF_nTRST | BITMASK_USBTOJTAGIF_RST | BITMASK_USBTOJTAGIF_DBGRQ;  /* Set Data Bits Low Byte     TCK = 0, TMS = 1, TDI = 0 */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, params->low_byte_value | BITMASK_TMS );  cx_cmd_push( cmd_root, params->low_byte_dir | BITMASK_TCK | BITMASK_TDI | BITMASK_TMS );  /* Set Data Bits High Byte     default:     RxLED on     TxLED on */  params->high_byte_value_trst_active   = 0;  params->high_byte_value_trst_inactive = 0;  params->high_byte_dir                 = BITMASK_USBTOJTAGIF_nRxLED | BITMASK_USBTOJTAGIF_nTxLED;  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, params->high_byte_value_trst_inactive );  cx_cmd_push( cmd_root, params->high_byte_dir );  /* I-couplers can only work up to 3 MHz     ref. http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html */  ft2232_set_frequency( cable, FT2232_MAX_TCK_FREQ/2 );  params->last_tdo_valid = 0;  return 0;}static intft2232_signalyzer_init( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  if (usbconn_open( cable->link.usb )) return -1;  /* static low byte value and direction:     nTRST = 1, RST = 1, DBGRQ = 0 */  params->low_byte_value = BITMASK_SIGNALYZER_nTRST | BITMASK_SIGNALYZER_nSRST;  params->low_byte_dir   = BITMASK_SIGNALYZER_nTRST | BITMASK_SIGNALYZER_nSRST;  /* Set Data Bits Low Byte     TCK = 0, TMS = 1, TDI = 0 */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, params->low_byte_value | BITMASK_TMS );  cx_cmd_push( cmd_root, params->low_byte_dir | BITMASK_TCK | BITMASK_TDI | BITMASK_TMS );  /* Set Data Bits High Byte */  params->high_byte_value_trst_active   = 0;  params->high_byte_value_trst_inactive = 0;  params->high_byte_dir                 = 0;  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, params->high_byte_value_trst_inactive );  cx_cmd_push( cmd_root, params->high_byte_dir );  ft2232_set_frequency( cable, FT2232_MAX_TCK_FREQ );  params->last_tdo_valid = 0;  return 0;}static voidft2232_generic_done( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  /* Set Data Bits Low Byte     set all to input */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, 0 );  cx_cmd_push( cmd_root, 0 );  /* Set Data Bits High Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, 0 );  cx_cmd_push( cmd_root, 0 );  cx_xfer( cmd_root, &imm_cmd, cable, COMPLETELY );  generic_usbconn_done( cable );}static voidft2232_jtagkey_done( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  /* Set Data Bits Low Byte     disable output drivers */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, BITMASK_JTAGKEY_nOE );  cx_cmd_push( cmd_root, BITMASK_JTAGKEY_nOE );  /* Set Data Bits Low Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, BITMASK_JTAGKEY_nOE );  cx_cmd_push( cmd_root, 0 );  /* Set Data Bits High Byte     disable output drivers */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root,               BITMASK_JTAGKEY_TRST_N_OUT               | BITMASK_JTAGKEY_TRST_N_OE_N               | BITMASK_JTAGKEY_SRST_N_OUT               | BITMASK_JTAGKEY_SRST_N_OE_N );  cx_cmd_push( cmd_root,               BITMASK_JTAGKEY_TRST_N_OUT               | BITMASK_JTAGKEY_TRST_N_OE_N               | BITMASK_JTAGKEY_SRST_N_OUT               | BITMASK_JTAGKEY_SRST_N_OE_N );  /* Set Data Bits High Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root,               BITMASK_JTAGKEY_TRST_N_OUT               | BITMASK_JTAGKEY_TRST_N_OE_N               | BITMASK_JTAGKEY_SRST_N_OUT               | BITMASK_JTAGKEY_SRST_N_OE_N );  cx_cmd_push( cmd_root, 0 );  cx_xfer( cmd_root, &imm_cmd, cable, COMPLETELY );  generic_usbconn_done( cable );}static voidft2232_armusbocd_done( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  /* Set Data Bits Low Byte     disable output drivers */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, BITMASK_ARMUSBOCD_nOE );  cx_cmd_push( cmd_root, BITMASK_ARMUSBOCD_nOE );  /* Set Data Bits Low Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, BITMASK_ARMUSBOCD_nOE );  cx_cmd_push( cmd_root, 0 );  /* Set Data Bits High Byte     disable output drivers */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root,               BITMASK_ARMUSBOCD_nTRST               | BITMASK_ARMUSBOCD_nTRST_nOE               | BITMASK_ARMUSBOCD_nTSRST );  cx_cmd_push( cmd_root,               BITMASK_ARMUSBOCD_nTRST               | BITMASK_ARMUSBOCD_nTRST_nOE               | BITMASK_ARMUSBOCD_nTSRST               | BITMASK_ARMUSBOCD_RED_LED );  /* Set Data Bits High Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root,               BITMASK_ARMUSBOCD_nTRST               | BITMASK_ARMUSBOCD_nTRST_nOE               | BITMASK_ARMUSBOCD_nTSRST );  cx_cmd_push( cmd_root, 0 );  cx_xfer( cmd_root, &imm_cmd, cable, COMPLETELY );  generic_usbconn_done( cable );}static voidft2232_gnice_done( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  /* Set Data Bits Low Byte     disable output drivers */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, 0 );  cx_cmd_push( cmd_root, 0 );  /* Set Data Bits High Byte     disable output drivers */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, BITMASK_GNICE_nTRST);  cx_cmd_push( cmd_root, BITMASK_GNICE_nTRST | BITMASK_GNICE_nLED);  /* Set Data Bits High Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, BITMASK_GNICE_nTRST);  cx_cmd_push( cmd_root, 0 );  cx_xfer( cmd_root, &imm_cmd, cable, COMPLETELY );  generic_usbconn_done( cable );}static voidft2232_oocdlinks_done( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  /* Set Data Bits Low Byte     set all to input */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, 0 );  cx_cmd_push( cmd_root, 0 );  /* Set Data Bits High Byte     disable output drivers */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root,               BITMASK_OOCDLINKS_nTRST               | BITMASK_OOCDLINKS_nTRST_nOE               | BITMASK_OOCDLINKS_nSRST               | BITMASK_OOCDLINKS_nSRST_nOE );  cx_cmd_push( cmd_root,               BITMASK_OOCDLINKS_nTRST               | BITMASK_OOCDLINKS_nTRST_nOE               | BITMASK_OOCDLINKS_nSRST               | BITMASK_OOCDLINKS_nSRST_nOE );  /* Set Data Bits High Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root,               BITMASK_OOCDLINKS_nTRST               | BITMASK_OOCDLINKS_nTRST_nOE               | BITMASK_OOCDLINKS_nSRST               | BITMASK_OOCDLINKS_nSRST_nOE );  cx_cmd_push( cmd_root, 0 );  cx_xfer( cmd_root, &imm_cmd, cable, COMPLETELY );  generic_usbconn_done( cable );}static voidft2232_turtelizer2_done( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  /* Set Data Bits Low Byte     disable output drivers */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, BITMASK_TURTELIZER2_nJTAGOE );  cx_cmd_push( cmd_root, BITMASK_TURTELIZER2_nJTAGOE );  /* Set Data Bits Low Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, BITMASK_TURTELIZER2_nJTAGOE );  cx_cmd_push( cmd_root, 0 );  /* Set Data Bits High Byte     switch off LEDs */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, BITMASK_TURTELIZER2_nTX1LED | BITMASK_TURTELIZER2_nRX1LED );  cx_cmd_push( cmd_root, BITMASK_TURTELIZER2_nTX1LED | BITMASK_TURTELIZER2_nRX1LED );  /* Set Data Bits High Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, 0 );  cx_cmd_push( cmd_root, 0 );  cx_xfer( cmd_root, &imm_cmd, cable, COMPLETELY );  generic_usbconn_done( cable );}static voidft2232_usbtojtagif_done( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  /* Set Data Bits Low Byte     set all to input */  cx_cmd_queue( cmd_root, 0 );  cx_cmd_push( cmd_root, SET_BITS_LOW );  cx_cmd_push( cmd_root, BITMASK_USBTOJTAGIF_nTRST | BITMASK_USBTOJTAGIF_RST );  cx_cmd_push( cmd_root, 0 );  /* Set Data Bits High Byte     disable output drivers */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, BITMASK_USBTOJTAGIF_nRxLED | BITMASK_USBTOJTAGIF_nTxLED );  cx_cmd_push( cmd_root, BITMASK_USBTOJTAGIF_nRxLED | BITMASK_USBTOJTAGIF_nTxLED );  /* Set Data Bits High Byte     set all to input */  cx_cmd_push( cmd_root, SET_BITS_HIGH );  cx_cmd_push( cmd_root, BITMASK_USBTOJTAGIF_nRxLED | BITMASK_USBTOJTAGIF_nTxLED );  cx_cmd_push( cmd_root, 0 );  cx_xfer( cmd_root, &imm_cmd, cable, COMPLETELY );  generic_usbconn_done( cable );}static voidft2232_signalyzer_done( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_root_t *cmd_root = &(params->cmd_root);  /* Set Data Bits Low Byte     set all to input */  cx_cmd_queue( cmd_root, 0 );

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?