jtag: merge init_internal to CTOR, pass verbose to jtag drivers

This commit is contained in:
Gwenhael Goavec-Merou 2023-07-30 08:45:57 +02:00
parent 4bf4b94bbb
commit 75d98d12e9
2 changed files with 20 additions and 34 deletions

View File

@ -81,21 +81,6 @@ Jtag::Jtag(const cable_t &cable, const jtag_pins_conf_t *pin_conf,
_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"), device_index(0) _board_name("nope"), device_index(0)
{
init_internal(cable, dev, serial, pin_conf, clkHZ, firmware_path,
invert_read_edge, ip_adr, port);
detectChain(5);
}
Jtag::~Jtag()
{
free(_tms_buffer);
delete _jtag;
}
void Jtag::init_internal(const cable_t &cable, const string &dev, const string &serial,
const jtag_pins_conf_t *pin_conf, uint32_t clkHZ, const string &firmware_path,
const bool invert_read_edge, const string &ip_adr, int port)
{ {
switch (cable.type) { switch (cable.type) {
case MODE_ANLOGICCABLE: case MODE_ANLOGICCABLE:
@ -104,30 +89,30 @@ void Jtag::init_internal(const cable_t &cable, const string &dev, const string &
case MODE_FTDI_BITBANG: case MODE_FTDI_BITBANG:
if (pin_conf == NULL) if (pin_conf == NULL)
throw std::exception(); throw std::exception();
_jtag = new FtdiJtagBitBang(cable, pin_conf, dev, serial, clkHZ, _verbose); _jtag = new FtdiJtagBitBang(cable, pin_conf, dev, serial, clkHZ, verbose);
break; break;
case MODE_FTDI_SERIAL: case MODE_FTDI_SERIAL:
_jtag = new FtdiJtagMPSSE(cable, dev, serial, clkHZ, _jtag = new FtdiJtagMPSSE(cable, dev, serial, clkHZ,
invert_read_edge, _verbose); invert_read_edge, verbose);
break; break;
case MODE_CH552_JTAG: case MODE_CH552_JTAG:
_jtag = new CH552_jtag(cable, dev, serial, clkHZ, _verbose); _jtag = new CH552_jtag(cable, dev, serial, clkHZ, verbose);
break; break;
case MODE_CH347: case MODE_CH347:
_jtag = new CH347Jtag(clkHZ, _verbose); _jtag = new CH347Jtag(clkHZ, verbose);
break; break;
case MODE_DIRTYJTAG: case MODE_DIRTYJTAG:
_jtag = new DirtyJtag(clkHZ, _verbose); _jtag = new DirtyJtag(clkHZ, verbose);
break; break;
case MODE_JLINK: case MODE_JLINK:
_jtag = new Jlink(clkHZ, _verbose, cable.vid, cable.pid); _jtag = new Jlink(clkHZ, verbose, cable.vid, cable.pid);
break; break;
case MODE_USBBLASTER: case MODE_USBBLASTER:
_jtag = new UsbBlaster(cable, firmware_path, _verbose); _jtag = new UsbBlaster(cable, firmware_path, verbose);
break; break;
case MODE_CMSISDAP: case MODE_CMSISDAP:
#ifdef ENABLE_CMSISDAP #ifdef ENABLE_CMSISDAP
_jtag = new CmsisDAP(cable, cable.config.index, _verbose); _jtag = new CmsisDAP(cable, cable.config.index, verbose);
break; break;
#else #else
std::cerr << "Jtag: support for cmsisdap was not enabled at compile time" << std::endl; std::cerr << "Jtag: support for cmsisdap was not enabled at compile time" << std::endl;
@ -135,7 +120,7 @@ void Jtag::init_internal(const cable_t &cable, const string &dev, const string &
#endif #endif
case MODE_XVC_CLIENT: case MODE_XVC_CLIENT:
#ifdef ENABLE_XVC #ifdef ENABLE_XVC
_jtag = new XVC_client(ip_adr, port, clkHZ, _verbose); _jtag = new XVC_client(ip_adr, port, clkHZ, verbose);
break; break;
#else #else
std::cerr << "Jtag: support for xvc-client was not enabled at compile time" << std::endl; std::cerr << "Jtag: support for xvc-client was not enabled at compile time" << std::endl;
@ -143,17 +128,17 @@ void Jtag::init_internal(const cable_t &cable, const string &dev, const string &
#endif #endif
#ifdef ENABLE_LIBGPIOD #ifdef ENABLE_LIBGPIOD
case MODE_LIBGPIOD_BITBANG: case MODE_LIBGPIOD_BITBANG:
_jtag = new LibgpiodJtagBitbang(pin_conf, dev, clkHZ, _verbose); _jtag = new LibgpiodJtagBitbang(pin_conf, dev, clkHZ, verbose);
break; break;
#endif #endif
#ifdef ENABLE_JETSONNANOGPIO #ifdef ENABLE_JETSONNANOGPIO
case MODE_JETSONNANO_BITBANG: case MODE_JETSONNANO_BITBANG:
_jtag = new JetsonNanoJtagBitbang(pin_conf, dev, clkHZ, _verbose); _jtag = new JetsonNanoJtagBitbang(pin_conf, dev, clkHZ, verbose);
break; break;
#endif #endif
#ifdef ENABLE_REMOTEBITBANG #ifdef ENABLE_REMOTEBITBANG
case MODE_REMOTEBITBANG: case MODE_REMOTEBITBANG:
_jtag = new RemoteBitbang_client(ip_adr, port, _verbose); _jtag = new RemoteBitbang_client(ip_adr, port, verbose);
break; break;
#endif #endif
default: default:
@ -163,8 +148,15 @@ void Jtag::init_internal(const cable_t &cable, const string &dev, const string &
_tms_buffer = (unsigned char *)malloc(sizeof(unsigned char) * _tms_buffer_size); _tms_buffer = (unsigned char *)malloc(sizeof(unsigned char) * _tms_buffer_size);
memset(_tms_buffer, 0, _tms_buffer_size); memset(_tms_buffer, 0, _tms_buffer_size);
detectChain(5);
} }
Jtag::~Jtag()
{
free(_tms_buffer);
delete _jtag;
}
int Jtag::detectChain(int max_dev) int Jtag::detectChain(int max_dev)
{ {
char message[256]; char message[256];

View File

@ -110,12 +110,6 @@ class Jtag {
JtagInterface *_jtag; JtagInterface *_jtag;
private: private:
void init_internal(const cable_t &cable, const std::string &dev,
const std::string &serial,
const jtag_pins_conf_t *pin_conf, uint32_t clkHZ,
const std::string &firmware_path,
const bool invert_read_edge,
const std::string &ip_adr, int port);
/*! /*!
* \brief search in fpga_list and misc_dev_list for a device with idcode * \brief search in fpga_list and misc_dev_list for a device with idcode
* if found insert idcode and irlength in _devices_list and * if found insert idcode and irlength in _devices_list and
@ -124,7 +118,7 @@ class Jtag {
* \return false if not found, true otherwise * \return false if not found, true otherwise
*/ */
bool search_and_insert_device_with_idcode(uint32_t idcode); bool search_and_insert_device_with_idcode(uint32_t idcode);
int8_t _verbose; bool _verbose;
int _state; int _state;
int _tms_buffer_size; int _tms_buffer_size;
int _num_tms; int _num_tms;