main: add optional probe-firmware
This commit is contained in:
parent
167d430c34
commit
42b7279a4b
10
src/jtag.cpp
10
src/jtag.cpp
|
|
@ -67,13 +67,14 @@ using namespace std;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Jtag::Jtag(cable_t &cable, const jtag_pins_conf_t *pin_conf, string dev,
|
Jtag::Jtag(cable_t &cable, const jtag_pins_conf_t *pin_conf, string dev,
|
||||||
const string &serial, uint32_t clkHZ, bool verbose):
|
const string &serial, uint32_t clkHZ, bool verbose,
|
||||||
|
const string &firmware_path):
|
||||||
_verbose(verbose),
|
_verbose(verbose),
|
||||||
_state(RUN_TEST_IDLE),
|
_state(RUN_TEST_IDLE),
|
||||||
_tms_buffer_size(128), _num_tms(0),
|
_tms_buffer_size(128), _num_tms(0),
|
||||||
_board_name("nope")
|
_board_name("nope")
|
||||||
{
|
{
|
||||||
init_internal(cable, dev, serial, pin_conf, clkHZ);
|
init_internal(cable, dev, serial, pin_conf, clkHZ, firmware_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
Jtag::~Jtag()
|
Jtag::~Jtag()
|
||||||
|
|
@ -83,7 +84,7 @@ Jtag::~Jtag()
|
||||||
}
|
}
|
||||||
|
|
||||||
void Jtag::init_internal(cable_t &cable, const string &dev, const string &serial,
|
void Jtag::init_internal(cable_t &cable, const string &dev, const string &serial,
|
||||||
const jtag_pins_conf_t *pin_conf, uint32_t clkHZ)
|
const jtag_pins_conf_t *pin_conf, uint32_t clkHZ, const string &firmware_path)
|
||||||
{
|
{
|
||||||
switch (cable.type) {
|
switch (cable.type) {
|
||||||
case MODE_ANLOGICCABLE:
|
case MODE_ANLOGICCABLE:
|
||||||
|
|
@ -101,7 +102,8 @@ void Jtag::init_internal(cable_t &cable, const string &dev, const string &serial
|
||||||
_jtag = new DirtyJtag(clkHZ, _verbose);
|
_jtag = new DirtyJtag(clkHZ, _verbose);
|
||||||
break;
|
break;
|
||||||
case MODE_USBBLASTER:
|
case MODE_USBBLASTER:
|
||||||
_jtag = new UsbBlaster(_verbose);
|
_jtag = new UsbBlaster(cable.config.vid, cable.config.pid,
|
||||||
|
firmware_path, _verbose);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
std::cerr << "Jtag: unknown cable type" << std::endl;
|
std::cerr << "Jtag: unknown cable type" << std::endl;
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,8 @@
|
||||||
class Jtag {
|
class Jtag {
|
||||||
public:
|
public:
|
||||||
Jtag(cable_t &cable, const jtag_pins_conf_t *pin_conf, std::string dev,
|
Jtag(cable_t &cable, const jtag_pins_conf_t *pin_conf, std::string dev,
|
||||||
const std::string &serial, uint32_t clkHZ, bool verbose = false);
|
const std::string &serial, uint32_t clkHZ, bool verbose = false,
|
||||||
|
const std::string &firmware_path="");
|
||||||
~Jtag();
|
~Jtag();
|
||||||
|
|
||||||
/* maybe to update */
|
/* maybe to update */
|
||||||
|
|
@ -79,7 +80,8 @@ class Jtag {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init_internal(cable_t &cable, const std::string &dev, const std::string &serial,
|
void init_internal(cable_t &cable, const std::string &dev, const std::string &serial,
|
||||||
const jtag_pins_conf_t *pin_conf, uint32_t clkHZ);
|
const jtag_pins_conf_t *pin_conf, uint32_t clkHZ,
|
||||||
|
const std::string &firmware_path);
|
||||||
bool _verbose;
|
bool _verbose;
|
||||||
int _state;
|
int _state;
|
||||||
int _tms_buffer_size;
|
int _tms_buffer_size;
|
||||||
|
|
|
||||||
10
src/main.cpp
10
src/main.cpp
|
|
@ -63,6 +63,7 @@ struct arguments {
|
||||||
bool spi;
|
bool spi;
|
||||||
string file_type;
|
string file_type;
|
||||||
string fpga_part;
|
string fpga_part;
|
||||||
|
string probe_firmware;
|
||||||
};
|
};
|
||||||
|
|
||||||
int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *pins_config);
|
int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *pins_config);
|
||||||
|
|
@ -78,7 +79,7 @@ int main(int argc, char **argv)
|
||||||
/* command line args. */
|
/* command line args. */
|
||||||
struct arguments args = {0, false, false, 0, "", "", "-", "", -1, 6000000, "-",
|
struct arguments args = {0, false, false, 0, "", "", "-", "", -1, 6000000, "-",
|
||||||
false, false, false, false, Device::WR_SRAM, false, false, "",
|
false, false, false, false, Device::WR_SRAM, false, false, "",
|
||||||
""};
|
"", ""};
|
||||||
/* parse arguments */
|
/* parse arguments */
|
||||||
try {
|
try {
|
||||||
if (parse_opt(argc, argv, &args, &pins_config))
|
if (parse_opt(argc, argv, &args, &pins_config))
|
||||||
|
|
@ -230,7 +231,8 @@ int main(int argc, char **argv)
|
||||||
/* jtag base */
|
/* jtag base */
|
||||||
Jtag *jtag;
|
Jtag *jtag;
|
||||||
try {
|
try {
|
||||||
jtag = new Jtag(cable, &pins_config, args.device, args.ftdi_serial, args.freq, false);
|
jtag = new Jtag(cable, &pins_config, args.device, args.ftdi_serial,
|
||||||
|
args.freq, false, args.probe_firmware);
|
||||||
} catch (std::exception &e) {
|
} catch (std::exception &e) {
|
||||||
printError("Error: Failed to claim cable");
|
printError("Error: Failed to claim cable");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
@ -244,6 +246,8 @@ int main(int argc, char **argv)
|
||||||
cout << "found " << std::to_string(found) << " devices" << endl;
|
cout << "found " << std::to_string(found) << " devices" << endl;
|
||||||
if (found > 1) {
|
if (found > 1) {
|
||||||
printError("Error: currently only one device is supported");
|
printError("Error: currently only one device is supported");
|
||||||
|
for (int i = 0; i < found; i++)
|
||||||
|
printf("0x%08x\n", listDev[i]);
|
||||||
delete(jtag);
|
delete(jtag);
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
} else if (found < 1) {
|
} else if (found < 1) {
|
||||||
|
|
@ -394,6 +398,8 @@ int parse_opt(int argc, char **argv, struct arguments *args, jtag_pins_conf_t *p
|
||||||
cxxopts::value<unsigned int>(args->offset))
|
cxxopts::value<unsigned int>(args->offset))
|
||||||
("pins", "pin config (only for ft232R) TDI:TDO:TCK:TMS",
|
("pins", "pin config (only for ft232R) TDI:TDO:TCK:TMS",
|
||||||
cxxopts::value<vector<string>>(pins))
|
cxxopts::value<vector<string>>(pins))
|
||||||
|
("probe-firmware", "firmware for JTAG probe (usbBlasterII)",
|
||||||
|
cxxopts::value<string>(args->probe_firmware))
|
||||||
("quiet", "Produce quiet output (no progress bar)",
|
("quiet", "Produce quiet output (no progress bar)",
|
||||||
cxxopts::value<bool>(quiet))
|
cxxopts::value<bool>(quiet))
|
||||||
("r,reset", "reset FPGA after operations",
|
("r,reset", "reset FPGA after operations",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue