From 1992360667ace8fe6930338f6ae9c8e1e84af583 Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Fri, 29 Jan 2021 06:19:42 +0100 Subject: [PATCH] main: catch exception if FPGA can't be claimed. --- src/main.cpp | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2911317..4d011cc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -260,22 +260,28 @@ int main(int argc, char **argv) string fab = fpga_list[idcode].manufacturer; Device *fpga; - if (fab == "xilinx") { - fpga = new Xilinx(jtag, args.bit_file, args.write_flash, args.write_sram, - args.verbose); - } else if (fab == "altera") { - fpga = new Altera(jtag, args.bit_file, args.verbose); - } else if (fab == "anlogic") { - fpga = new Anlogic(jtag, args.bit_file, args.write_flash, args.write_sram, - args.verbose); - } else if (fab == "Gowin") { - fpga = new Gowin(jtag, args.bit_file, args.write_flash, args.write_sram, - args.verbose); - } else if (fab == "lattice") { - fpga = new Lattice(jtag, args.bit_file, args.write_flash, args.write_sram, - args.verbose); - } else { - printError("Error: manufacturer " + fab + " not supported"); + try { + if (fab == "xilinx") { + fpga = new Xilinx(jtag, args.bit_file, args.write_flash, args.write_sram, + args.verbose); + } else if (fab == "altera") { + fpga = new Altera(jtag, args.bit_file, args.verbose); + } else if (fab == "anlogic") { + fpga = new Anlogic(jtag, args.bit_file, args.write_flash, args.write_sram, + args.verbose); + } else if (fab == "Gowin") { + fpga = new Gowin(jtag, args.bit_file, args.write_flash, args.write_sram, + args.verbose); + } else if (fab == "lattice") { + fpga = new Lattice(jtag, args.bit_file, args.write_flash, args.write_sram, + args.verbose); + } else { + printError("Error: manufacturer " + fab + " not supported"); + delete(jtag); + return EXIT_FAILURE; + } + } catch (std::exception &e) { + printError("Error: Failed to claim FPGA device"); delete(jtag); return EXIT_FAILURE; }