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

📄 ft2232.c

📁 UrJTAG package is free software, covered by the GNU General Public License, and you are welcome to
💻 C
📖 第 1 页 / 共 4 页
字号:
          params->last_tdo_valid = last_tdo_valid_finish = 0;        }      case CABLE_GET_TRST:        {          int m = cable_add_queue_item( cable, &(cable->done) );          cable->done.data[m].action = CABLE_GET_TRST;          cable->done.data[m].arg.value.trst = 1;          break;        }      case CABLE_TRANSFER:        {          int  r = ft2232_transfer_finish( cable,                                           cable->todo.data[j].arg.transfer.len,                                           cable->todo.data[j].arg.transfer.out );          last_tdo_valid_finish = params->last_tdo_valid;          free( cable->todo.data[j].arg.transfer.in );          if (cable->todo.data[j].arg.transfer.out)          {            int m = cable_add_queue_item( cable, &(cable->done) );            if (m < 0)              printf("out of memory!\n");            cable->done.data[m].action = CABLE_TRANSFER;            cable->done.data[m].arg.xferred.len = cable->todo.data[j].arg.transfer.len;            cable->done.data[m].arg.xferred.res = r;            cable->done.data[m].arg.xferred.out = cable->todo.data[j].arg.transfer.out;          }        }      default:        break;      }      j++;      if (j >= cable->todo.max_items)        j = 0;      cable->todo.num_items--;    }    cable->todo.next_item = i;  }}static intft2232_connect( char *params[], cable_t *cable ){  params_t *cable_params;  int result;  /* perform generic_usbconn_connect */  if ( ( result = generic_usbconn_connect( params, cable ) ) != 0 )    return result;  cable_params = (params_t *)malloc( sizeof(params_t) );  if (!cable_params) {    printf( _("%s(%d) malloc failed!\n"), __FILE__, __LINE__);    /* NOTE:     * Call the underlying usbport driver (*free) routine directly     * not generic_usbconn_free() since it also free's cable->params     * (which is not established) and cable (which the caller will do)     */    cable->link.usb->driver->free( cable->link.usb );    return 4;  }    cable_params->mpsse_frequency = 0;    cable_params->last_tdo_valid  = 0;    cx_cmd_init( &(cable_params->cmd_root) );    /* exchange generic cable parameters with our private parameter set */    free( cable->params );    cable->params = cable_params;  return 0;}static voidft2232_cable_free( cable_t *cable ){  params_t *params = (params_t *)cable->params;  cx_cmd_deinit( &(params->cmd_root) );  generic_usbconn_free( cable );}usbconn_cable_t usbconn_cable_ft2232_ftdi;usbconn_cable_t usbconn_cable_armusbocd_ftdi;usbconn_cable_t usbconn_cable_gnice_ftdi;usbconn_cable_t usbconn_cable_jtagkey_ftdi;usbconn_cable_t usbconn_cable_oocdlinks_ftdi;usbconn_cable_t usbconn_cable_turtelizer2_ftdi;usbconn_cable_t usbconn_cable_usbtojtagif_ftdi;usbconn_cable_t usbconn_cable_signalyzer_ftdi;static voidft2232_usbcable_help( const char *cablename ){  usbconn_cable_t *conn;  conn = &usbconn_cable_armusbocd_ftdi;  if (strcasecmp( conn->name, cablename ) == 0)    goto found;  conn = &usbconn_cable_gnice_ftdi;  if (strcasecmp( conn->name, cablename ) == 0)    goto found;  conn = &usbconn_cable_jtagkey_ftdi;  if (strcasecmp( conn->name, cablename ) == 0)    goto found;  conn = &usbconn_cable_oocdlinks_ftdi;  if (strcasecmp( conn->name, cablename ) == 0)    goto found;  conn = &usbconn_cable_turtelizer2_ftdi;  if (strcasecmp( conn->name, cablename ) == 0)    goto found;  conn = &usbconn_cable_usbtojtagif_ftdi;  if (strcasecmp( conn->name, cablename ) == 0)    goto found;  conn = &usbconn_cable_signalyzer_ftdi;  if (strcasecmp( conn->name, cablename ) == 0)    goto found;  conn = &usbconn_cable_ft2232_ftdi;found:  printf( _(            "Usage: cable %s [vid=VID] [pid=PID] [desc=DESC] [driver=DRIVER]\n"            "\n"            "VID        vendor ID (hex), defaults to %04X\n"            "PID        product ID (hex), defaults to %04X\n"            "DESC       Some string to match in description or serial no.\n"            "DRIVER     usbconn driver, either ftdi-mpsse or ftd2xx-mpsse\n"            "           defaults to %s if not specified\n"            "\n"            ),          cablename,          conn->vid, conn->pid,          DEFAULT_DRIVER          );}cable_driver_t ft2232_cable_driver = {  "FT2232",  N_("Generic FTDI FT2232 Cable"),  ft2232_connect,  generic_disconnect,  ft2232_cable_free,  ft2232_generic_init,  ft2232_generic_done,  ft2232_set_frequency,  ft2232_clock,  ft2232_get_tdo,  ft2232_transfer,  ft2232_set_trst,  generic_get_trst,  ft2232_flush,  ft2232_usbcable_help};usbconn_cable_t usbconn_cable_ft2232_ftdi = {  "FT2232",           /* cable name */  NULL,               /* string pattern, not used */  "ftdi-mpsse",       /* default usbconn driver */  0x0000,             /* VID */  0x0000              /* PID */};usbconn_cable_t usbconn_cable_ft2232_ftd2xx = {  "FT2232",           /* cable name */  NULL,               /* string pattern, not used */  "ftd2xx-mpsse",     /* default usbconn driver */  0x0000,             /* VID */  0x0000              /* PID */};cable_driver_t ft2232_armusbocd_cable_driver = {  "ARM-USB-OCD",  N_("Olimex ARM-USB-OCD (FT2232) Cable"),  ft2232_connect,  generic_disconnect,  ft2232_cable_free,  ft2232_armusbocd_init,  ft2232_armusbocd_done,  ft2232_set_frequency,  ft2232_clock,  ft2232_get_tdo,  ft2232_transfer,  ft2232_set_trst,  generic_get_trst,  ft2232_flush,  ft2232_usbcable_help};usbconn_cable_t usbconn_cable_armusbocd_ftdi = {  "ARM-USB-OCD",      /* cable name */  NULL,               /* string pattern, not used */  "ftdi-mpsse",       /* default usbconn driver */  0x15BA,             /* VID */  0x0003              /* PID */};usbconn_cable_t usbconn_cable_armusbocd_ftd2xx = {  "ARM-USB-OCD",      /* cable name */  NULL,               /* string pattern, not used */  "ftd2xx-mpsse",     /* default usbconn driver */  0x15BA,             /* VID */  0x0003              /* PID */};cable_driver_t ft2232_gnice_cable_driver = {  "gnICE",  N_("Analog Devices Blackfin gnICE (FT2232) Cable (EXPERIMENTAL)"),  ft2232_connect,  generic_disconnect,  ft2232_cable_free,  ft2232_gnice_init,  ft2232_gnice_done,  ft2232_set_frequency,  ft2232_clock,  ft2232_get_tdo,  ft2232_transfer,  ft2232_set_trst,  generic_get_trst,  ft2232_flush,  ft2232_usbcable_help};usbconn_cable_t usbconn_cable_gnice_ftdi = {  "gnICE",            /* cable name */  NULL,               /* string pattern, not used */  "ftdi-mpsse",       /* default usbconn driver */  0x0456,             /* VID */  0xF000              /* PID */};usbconn_cable_t usbconn_cable_gnice_ftd2xx = {  "gnICE",            /* cable name */  NULL,               /* string pattern, not used */  "ftd2xx-mpsse",     /* default usbconn driver */  0x0456,             /* VID */  0xF000              /* PID */};cable_driver_t ft2232_jtagkey_cable_driver = {  "JTAGkey",  N_("Amontec JTAGkey (FT2232) Cable"),  ft2232_connect,  generic_disconnect,  ft2232_cable_free,  ft2232_jtagkey_init,  ft2232_jtagkey_done,  ft2232_set_frequency,  ft2232_clock,  ft2232_get_tdo,  ft2232_transfer,  ft2232_set_trst,  generic_get_trst,  ft2232_flush,  ft2232_usbcable_help};usbconn_cable_t usbconn_cable_jtagkey_ftdi = {  "JTAGkey",          /* cable name */  NULL,               /* string pattern, not used */  "ftdi-mpsse",       /* default usbconn driver */  0x0403,             /* VID */  0xCFF8              /* PID */};usbconn_cable_t usbconn_cable_jtagkey_ftd2xx = {  "JTAGkey",          /* cable name */  NULL,               /* string pattern, not used */  "ftd2xx-mpsse",     /* default usbconn driver */  0x0403,             /* VID */  0xCFF8              /* PID */};cable_driver_t ft2232_oocdlinks_cable_driver = {  "OOCDLink-s",  N_("OOCDLink-s (FT2232) Cable (EXPERIMENTAL)"),  ft2232_connect,  generic_disconnect,  ft2232_cable_free,  ft2232_oocdlinks_init,  ft2232_oocdlinks_done,  ft2232_set_frequency,  ft2232_clock,  ft2232_get_tdo,  ft2232_transfer,  ft2232_set_trst,  generic_get_trst,  ft2232_flush,  ft2232_usbcable_help};usbconn_cable_t usbconn_cable_oocdlinks_ftdi = {  "OOCDLink-s",       /* cable name */  NULL,               /* string pattern, not used */  "ftdi-mpsse",       /* default usbconn driver */  0x0403,             /* VID */  0xbaf8              /* PID */};usbconn_cable_t usbconn_cable_oocdlinks_ftd2xx = {  "OOCDLink-s",       /* cable name */  NULL,               /* string pattern, not used */  "ftd2xx-mpsse",     /* default usbconn driver */  0x0403,             /* VID */  0xbaf8              /* PID */};cable_driver_t ft2232_turtelizer2_cable_driver = {  "Turtelizer2",  N_("Turtelizer 2 Rev. B (FT2232) Cable (EXPERIMENTAL)"),  ft2232_connect,  generic_disconnect,  ft2232_cable_free,  ft2232_turtelizer2_init,  ft2232_turtelizer2_done,  ft2232_set_frequency,  ft2232_clock,  ft2232_get_tdo,  ft2232_transfer,  ft2232_set_trst,  generic_get_trst,  ft2232_flush,  ft2232_usbcable_help};usbconn_cable_t usbconn_cable_turtelizer2_ftdi = {  "Turtelizer2",      /* cable name */  NULL,               /* string pattern, not used */  "ftdi-mpsse",       /* default usbconn driver */  0x0403,             /* VID */  0xBDC8              /* PID */};usbconn_cable_t usbconn_cable_turtelizer2_ftd2xx = {  "Turtelizer2",      /* cable name */  NULL,               /* string pattern, not used */  "ftd2xx-mpsse",     /* default usbconn driver */  0x0403,             /* VID */  0xBDC8              /* PID */};cable_driver_t ft2232_usbtojtagif_cable_driver = {  "USB-to-JTAG-IF",  N_("USB to JTAG Interface (FT2232) Cable (EXPERIMENTAL)"),  ft2232_connect,  generic_disconnect,  ft2232_cable_free,  ft2232_usbtojtagif_init,  ft2232_usbtojtagif_done,  ft2232_set_frequency,  ft2232_clock,  ft2232_get_tdo,  ft2232_transfer,  ft2232_set_trst,  generic_get_trst,  ft2232_flush,  ft2232_usbcable_help};usbconn_cable_t usbconn_cable_usbtojtagif_ftdi = {  "USB-to-JTAG-IF",   /* cable name */  NULL,               /* string pattern, not used */  "ftdi-mpsse",       /* default usbconn driver */  0x0000,             /* VID */  0x0000              /* PID */};usbconn_cable_t usbconn_cable_usbtojtagif_ftd2xx = {  "USB-to-JTAG-IF",   /* cable name */  NULL,               /* string pattern, not used */  "ftd2xx-mpsse",     /* default usbconn driver */  0x0000,             /* VID */  0x0000              /* PID */};cable_driver_t ft2232_signalyzer_cable_driver = {  "Signalyzer",  N_("Xverve DT-USB-ST Signalyzer Tool (FT2232) Cable (EXPERIMENTAL)"),  ft2232_connect,  generic_disconnect,  ft2232_cable_free,  ft2232_signalyzer_init,  ft2232_signalyzer_done,  ft2232_set_frequency,  ft2232_clock,  ft2232_get_tdo,  ft2232_transfer,  ft2232_set_trst,  generic_get_trst,  ft2232_flush,  ft2232_usbcable_help};usbconn_cable_t usbconn_cable_signalyzer_ftdi = {  "Signalyzer",       /* cable name */  NULL,               /* string pattern, not used */  "ftdi-mpsse",       /* default usbconn driver */  0x0000,             /* VID */  0x0000              /* PID */};usbconn_cable_t usbconn_cable_signalyzer_ftd2xx = {  "Signalyzer",       /* cable name */  NULL,               /* string pattern, not used */  "ftd2xx-mpsse",     /* default usbconn driver */  0x0000,             /* VID */  0x0000              /* PID */};/* Local Variables: mode:C c-default-style:gnu indent-tabs-mode:nil End:*/

⌨️ 快捷键说明

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