diff --git a/README.md b/README.md index e1e6053..506f23d 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,8 @@ openFPGALoader -- a program to flash FPGA --bitstream arg bitstream -b, --board arg board name, may be used instead of cable -c, --cable arg jtag interface + --vid arg probe Vendor ID + --pid arg probe Product ID --ftdi-serial arg FTDI chip serial number --ftdi-channel arg FTDI chip channel number (channels 0-3 map to A-D) diff --git a/src/main.cpp b/src/main.cpp index 080405a..ae3fb0d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,7 +59,9 @@ struct arguments { int index_chain; unsigned int file_size; bool external_flash; - int altsetting; + int16_t altsetting; + uint16_t vid; + uint16_t pid; }; int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *pins_config); @@ -75,7 +77,7 @@ int main(int argc, char **argv) /* command line args. */ struct arguments args = {0, false, false, false, 0, "", "", "-", "", -1, 0, "-", false, false, false, false, Device::WR_SRAM, false, - false, false, "", "", "", -1, 0, false, -1}; + false, false, "", "", "", -1, 0, false, -1, 0, 0}; /* parse arguments */ try { if (parse_opt(argc, argv, &args, &pins_config)) @@ -279,6 +281,18 @@ int main(int argc, char **argv) printInfo("Board altsetting overridden"); altsetting = args.altsetting; } + + if (args.vid != 0) { + if (vid != 0) + printInfo("Board VID overridden"); + vid = args.vid; + } + if (args.pid != 0) { + if (pid != 0) + printInfo("Board PID overridden"); + pid = args.pid; + } + try { dfu = new DFU(args.bit_file, vid, pid, altsetting, args.verbose); } catch (std::exception &e) { @@ -495,12 +509,15 @@ int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *p options .add_options() ("altsetting", "DFU interface altsetting (only for DFU mode)", - cxxopts::value(args->altsetting)) + cxxopts::value(args->altsetting)) ("bitstream", "bitstream", cxxopts::value(args->bit_file)) ("b,board", "board name, may be used instead of cable", cxxopts::value(args->board)) ("c,cable", "jtag interface", cxxopts::value(args->cable)) + ("vid", "probe Vendor ID", cxxopts::value(args->vid)) + ("pid", "probe Product ID", cxxopts::value(args->pid)) + ("ftdi-serial", "FTDI chip serial number", cxxopts::value(args->ftdi_serial)) ("ftdi-channel", "FTDI chip channel number (channels 0-3 map to A-D)", cxxopts::value(args->ftdi_channel)) #ifdef USE_UDEV