diff --git a/README.md b/README.md index ef96ad3..34d0fb4 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ openFPGALoader -- a program to flash FPGA --list-fpga list all supported FPGA -m, --write-sram write bitstream in SRAM (default: true) -o, --offset arg start offset in EEPROM - --pins arg pin config (only for ft232R) TDI:TDO:TCK:TMS + --pins arg pin config TDI:TDO:TCK:TMS --probe-firmware arg firmware for JTAG probe (usbBlasterII) --protect-flash arg protect SPI flash area --quiet Produce quiet output (no progress bar) diff --git a/src/board.hpp b/src/board.hpp index f4ffbfa..4ac10bc 100644 --- a/src/board.hpp +++ b/src/board.hpp @@ -12,14 +12,14 @@ /* AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R */ enum { - FT232RL_TXD = (1 << 0), - FT232RL_RXD = (1 << 1), - FT232RL_RTS = (1 << 2), - FT232RL_CTS = (1 << 3), - FT232RL_DTR = (1 << 4), - FT232RL_DSR = (1 << 5), - FT232RL_DCD = (1 << 6), - FT232RL_RI = (1 << 7) + FT232RL_TXD = 0, + FT232RL_RXD = 1, + FT232RL_RTS = 2, + FT232RL_CTS = 3, + FT232RL_DTR = 4, + FT232RL_DSR = 5, + FT232RL_DCD = 6, + FT232RL_RI = 7 }; /* AN_108_Command_Processor_for_MPSSE_and_MCU_Host_Bus_Emulation_Modes */ diff --git a/src/ftdiJtagBitbang.cpp b/src/ftdiJtagBitbang.cpp index d2a9117..8c537b9 100644 --- a/src/ftdiJtagBitbang.cpp +++ b/src/ftdiJtagBitbang.cpp @@ -38,20 +38,22 @@ FtdiJtagBitBang::FtdiJtagBitBang(const FTDIpp_MPSSE::mpsse_bit_config &cable, { unsigned char *ptr; - _tck_pin = 1 << pin_conf->tck_pin; - _tms_pin = 1 << pin_conf->tms_pin; - _tdi_pin = 1 << pin_conf->tdi_pin; - _tdo_pin = 1 << pin_conf->tdo_pin; - /* Validate pins */ - uint8_t pins[] = {_tck_pin, _tms_pin, _tdi_pin, _tdo_pin}; + uint8_t pins[] = {pin_conf->tck_pin, pin_conf->tms_pin, + pin_conf->tdi_pin, pin_conf->tdo_pin}; for (int i = 0; i < sizeof(pins) / sizeof(pins[0]); i++) { if (pins[i] > FT232RL_RI || pins[i] < FT232RL_TXD) { + printf("%d\n", pins[i]); printError("Invalid pin ID"); throw std::exception(); } } + _tck_pin = 1 << pin_conf->tck_pin; + _tms_pin = 1 << pin_conf->tms_pin; + _tdi_pin = 1 << pin_conf->tdi_pin; + _tdo_pin = 1 << pin_conf->tdo_pin; + /* store FTDI TX Fifo size */ if (_pid == 0x6001) // FT232R _rx_size = 256; diff --git a/src/main.cpp b/src/main.cpp index b4353f6..b153215 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -624,14 +624,6 @@ static int parse_eng(string arg, double *dst) { } } -static int get_bit_index(int mask) -{ - for (int i = 0; i < 32; i++) - if (mask & (1 << i)) - return i; - return -1; -} - /* arguments parser */ int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *pins_config) { @@ -807,14 +799,14 @@ int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *p } static std::map pins_list = { - {"TXD", get_bit_index(FT232RL_TXD)}, - {"RXD", get_bit_index(FT232RL_RXD)}, - {"RTS", get_bit_index(FT232RL_RTS)}, - {"CTS", get_bit_index(FT232RL_CTS)}, - {"DTR", get_bit_index(FT232RL_DTR)}, - {"DSR", get_bit_index(FT232RL_DSR)}, - {"DCD", get_bit_index(FT232RL_DCD)}, - {"RI" , get_bit_index(FT232RL_RI) }}; + {"TXD", FT232RL_TXD}, + {"RXD", FT232RL_RXD}, + {"RTS", FT232RL_RTS}, + {"CTS", FT232RL_CTS}, + {"DTR", FT232RL_DTR}, + {"DSR", FT232RL_DSR}, + {"DCD", FT232RL_DCD}, + {"RI" , FT232RL_RI}}; for (int i = 0; i < 4; i++) { int pin_num;