⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ft2232.c

📁 UrJTAG package is free software, covered by the GNU General Public License, and you are welcome to
💻 C
📖 第 1 页 / 共 4 页
字号:
  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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -