mirror of
https://github.com/trabucayre/openFPGALoader.git
synced 2026-08-30 18:02:38 +02:00
review fixes: refactoring and readme update
This commit is contained in:
@@ -22,20 +22,6 @@ typedef struct {
|
||||
FTDIpp_MPSSE::mpsse_bit_config config;
|
||||
} cable_t;
|
||||
|
||||
inline int ftdi_update_channel(cable_t &cable, unsigned int channel_num)
|
||||
{
|
||||
int mapping[] = {INTERFACE_A,INTERFACE_B, INTERFACE_C, INTERFACE_D};
|
||||
|
||||
if (cable.type != MODE_FTDI_SERIAL && cable.type != MODE_FTDI_BITBANG)
|
||||
return -1;
|
||||
|
||||
if (channel_num > 3)
|
||||
return -2;
|
||||
|
||||
cable.config.interface = mapping[channel_num];
|
||||
return 0;
|
||||
}
|
||||
|
||||
static std::map <std::string, cable_t> cable_list = {
|
||||
// last 4 bytes are ADBUS7-0 value, ADBUS7-0 direction, ACBUS7-0 value, ACBUS7-0 direction
|
||||
// some cables requires explicit values on some of the I/Os
|
||||
|
||||
+12
-7
@@ -116,15 +116,13 @@ int main(int argc, char **argv)
|
||||
cable = select_cable->second;
|
||||
|
||||
if (args.ftdi_channel != -1) {
|
||||
if (args.ftdi_channel < 0 or args.ftdi_channel > 3) {
|
||||
printError("Error: valid FTDI channels are 0-3.");
|
||||
if (cable.type != MODE_FTDI_SERIAL && cable.type != MODE_FTDI_BITBANG){
|
||||
printError("Error: FTDI channel param is for FTDI cables.");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (ftdi_update_channel(cable, args.ftdi_channel)) {
|
||||
printError("Error: FTDI channel param is invalid. Is it a FTDI cable?");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
int mapping[] = {INTERFACE_A, INTERFACE_B, INTERFACE_C, INTERFACE_D};
|
||||
cable.config.interface = mapping[args.ftdi_channel];
|
||||
}
|
||||
|
||||
/* jtag base */
|
||||
@@ -262,7 +260,7 @@ int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *p
|
||||
("b,board", "board name, may be used instead of cable",
|
||||
cxxopts::value<string>(args->board))
|
||||
("c,cable", "jtag interface", cxxopts::value<string>(args->cable))
|
||||
("ftdi_channel", "FTDI chip channel number (channels 0-3 map to A-D)", cxxopts::value<int>(args->ftdi_channel))
|
||||
("ftdi-channel", "FTDI chip channel number (channels 0-3 map to A-D)", cxxopts::value<int>(args->ftdi_channel))
|
||||
#ifdef USE_UDEV
|
||||
("d,device", "device to use (/dev/ttyUSBx)",
|
||||
cxxopts::value<string>(args->device))
|
||||
@@ -331,6 +329,13 @@ int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *p
|
||||
args->freq = static_cast<uint32_t>(freq);
|
||||
}
|
||||
|
||||
if (result.count("ftdi-channel")) {
|
||||
if (args->ftdi_channel < 0 || args->ftdi_channel > 3) {
|
||||
printError("Error: valid FTDI channels are 0-3.");
|
||||
throw std::exception();
|
||||
}
|
||||
}
|
||||
|
||||
if (result.count("pins")) {
|
||||
if (pins.size() != 4) {
|
||||
printError("Error: pin_config need 4 pins");
|
||||
|
||||
Reference in New Issue
Block a user