aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jtag/drivers/jtag_vpi.c32
-rw-r--r--tcl/interface/jtag_vpi.cfg12
2 files changed, 39 insertions, 5 deletions
diff --git a/src/jtag/drivers/jtag_vpi.c b/src/jtag/drivers/jtag_vpi.c
index 29dbd482..7c42220d 100644
--- a/src/jtag/drivers/jtag_vpi.c
+++ b/src/jtag/drivers/jtag_vpi.c
@@ -42,6 +42,7 @@
#define CMD_STOP_SIMU 4
int server_port = SERVER_PORT;
+char *server_address;
int sockfd;
struct sockaddr_in serv_addr;
@@ -379,7 +380,10 @@ static int jtag_vpi_init(void)
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(server_port);
- serv_addr.sin_addr.s_addr = inet_addr(SERVER_ADDRESS);
+ if (!server_address)
+ server_address = strdup(SERVER_ADDRESS);
+
+ serv_addr.sin_addr.s_addr = inet_addr(server_address);
if (serv_addr.sin_addr.s_addr == INADDR_NONE) {
LOG_ERROR("inet_addr error occured");
@@ -388,17 +392,18 @@ static int jtag_vpi_init(void)
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
close(sockfd);
- LOG_ERROR("Can't connect to %s : %u", SERVER_ADDRESS, server_port);
+ LOG_ERROR("Can't connect to %s : %u", server_address, server_port);
return ERROR_COMMAND_CLOSE_CONNECTION;
}
- LOG_INFO("Connection to %s : %u succeed", SERVER_ADDRESS, server_port);
+ LOG_INFO("Connection to %s : %u succeed", server_address, server_port);
return ERROR_OK;
}
static int jtag_vpi_quit(void)
{
+ free(server_address);
return close(sockfd);
}
@@ -414,6 +419,20 @@ COMMAND_HANDLER(jtag_vpi_set_port)
return ERROR_OK;
}
+COMMAND_HANDLER(jtag_vpi_set_address)
+{
+ free(server_address);
+
+ if (CMD_ARGC == 0) {
+ LOG_WARNING("You need to set an address");
+ server_address = strdup(SERVER_ADDRESS);
+ } else
+ server_address = strdup(CMD_ARGV[0]);
+
+ LOG_INFO("Set server address to %s", server_address);
+
+ return ERROR_OK;
+}
static const struct command_registration jtag_vpi_command_handlers[] = {
{
@@ -423,6 +442,13 @@ static const struct command_registration jtag_vpi_command_handlers[] = {
.help = "set the port of the VPI server",
.usage = "description_string",
},
+ {
+ .name = "jtag_vpi_set_address",
+ .handler = &jtag_vpi_set_address,
+ .mode = COMMAND_CONFIG,
+ .help = "set the address of the VPI server",
+ .usage = "description_string",
+ },
COMMAND_REGISTRATION_DONE
};
diff --git a/tcl/interface/jtag_vpi.cfg b/tcl/interface/jtag_vpi.cfg
index 2756b254..a37a11ed 100644
--- a/tcl/interface/jtag_vpi.cfg
+++ b/tcl/interface/jtag_vpi.cfg
@@ -1,10 +1,18 @@
interface jtag_vpi
-# Set the VPI JTAG server address
+# Set the VPI JTAG server port
if { [info exists VPI_PORT] } {
set _VPI_PORT $VPI_PORT
} else {
- set _VPI_PORT 50020
+ set _VPI_PORT 5555
+}
+
+# Set the VPI JTAG server address
+if { [info exists VPI_ADDRESS] } {
+ set _VPI_ADDRESS $VPI_ADDRESS
+} else {
+ set _VPI_ADDRESS "127.0.0.1"
}
jtag_vpi_set_port $_VPI_PORT
+jtag_vpi_set_address $_VPI_ADDRESS