xvc_client: allows to select port

This commit is contained in:
Gwenhael Goavec-Merou 2022-10-06 07:07:17 +02:00
parent d4a59bdf09
commit 2d66236533
5 changed files with 17 additions and 13 deletions

View File

@ -70,7 +70,7 @@ using namespace std;
Jtag::Jtag(cable_t &cable, const jtag_pins_conf_t *pin_conf, string dev,
const string &serial, uint32_t clkHZ, int8_t verbose,
const string &ip_adr,
const string &ip_adr, int port,
const bool invert_read_edge, const string &firmware_path):
_verbose(verbose > 1),
_state(RUN_TEST_IDLE),
@ -78,7 +78,7 @@ Jtag::Jtag(cable_t &cable, const jtag_pins_conf_t *pin_conf, string dev,
_board_name("nope"), device_index(0)
{
init_internal(cable, dev, serial, pin_conf, clkHZ, firmware_path,
invert_read_edge, ip_adr);
invert_read_edge, ip_adr, port);
detectChain(5);
}
@ -90,7 +90,7 @@ Jtag::~Jtag()
void Jtag::init_internal(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)
const bool invert_read_edge, const string &ip_adr, int port)
{
switch (cable.type) {
case MODE_ANLOGICCABLE:
@ -129,7 +129,7 @@ void Jtag::init_internal(cable_t &cable, const string &dev, const string &serial
#endif
case MODE_XVC_CLIENT:
#ifdef ENABLE_XVC
_jtag = new XVC_client(ip_adr, clkHZ, _verbose);
_jtag = new XVC_client(ip_adr, port, clkHZ, _verbose);
break;
#else
std::cerr << "Jtag: support for xvc-client was not enabled at compile time" << std::endl;

View File

@ -19,7 +19,7 @@ class Jtag {
public:
Jtag(cable_t &cable, const jtag_pins_conf_t *pin_conf, std::string dev,
const std::string &serial, uint32_t clkHZ, int8_t verbose,
const std::string &ip_adr,
const std::string &ip_adr, int port,
const bool invert_read_edge = false,
const std::string &firmware_path = "");
~Jtag();
@ -108,7 +108,8 @@ class Jtag {
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);
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
* if found insert idcode and irlength in _devices_list and

View File

@ -405,8 +405,8 @@ int main(int argc, char **argv)
Jtag *jtag;
try {
jtag = new Jtag(cable, &pins_config, args.device, args.ftdi_serial,
args.freq, args.verbose, args.ip_adr, args.invert_read_edge,
args.probe_firmware);
args.freq, args.verbose, args.ip_adr, args.port,
args.invert_read_edge, args.probe_firmware);
} catch (std::exception &e) {
printError("JTAG init failed with: " + string(e.what()));
return EXIT_FAILURE;

View File

@ -27,10 +27,11 @@
using namespace std;
XVC_client::XVC_client(const std::string &ip_addr, uint32_t clkHz,
int8_t verbose):
XVC_client::XVC_client(const std::string &ip_addr, int port,
uint32_t clkHz, int8_t verbose):
_verbose(verbose > 0), _xfer_buf(NULL), _tms(NULL), _tditdo(NULL),
_num_bits(0), _last_tms(0), _last_tdi(0), _buffer_size(0), _sock(0)
_num_bits(0), _last_tms(0), _last_tdi(0), _buffer_size(0), _sock(0),
_port(port)
{
if (!open_connection(ip_addr))
throw std::runtime_error("connection failure");
@ -221,7 +222,7 @@ bool XVC_client::open_connection(const string &ip_addr)
{
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(2542);
addr.sin_port = htons(_port);
addr.sin_addr.s_addr = inet_addr(ip_addr.c_str());
_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

View File

@ -22,7 +22,8 @@ class XVC_client: public JtagInterface {
* \param[in] verbose: verbose level -1 quiet, 0 normal,
* 1 verbose, 2 debug
*/
XVC_client(const std::string &ip_addr, uint32_t clkHz, int8_t verbose);
XVC_client(const std::string &ip_addr, int port, uint32_t clkHz,
int8_t verbose);
~XVC_client();
@ -120,5 +121,6 @@ class XVC_client: public JtagInterface {
std::string _server_name;
std::string _server_vers;
int _sock;
int _port; /*!< target port */
};
#endif // SRC_XVC_CLIENT_HPP_