OpenCores
URL https://opencores.org/ocsvn/adv_debug_sys/adv_debug_sys/trunk

Subversion Repositories adv_debug_sys

[/] [adv_debug_sys/] [trunk/] [Software/] [adv_jtag_bridge/] [cable_sim.c] - Diff between revs 8 and 55

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 8 Rev 55
Line 28... Line 28...
 
 
#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/in.h>
#include <netdb.h>
#include <netdb.h>
 
 
 
#include "cable_sim.h"
#include "cable_common.h"
 
#include "errcodes.h"
#include "errcodes.h"
 
 
#define debug(...) //fprintf(stderr, __VA_ARGS__ )
#define debug(...) //fprintf(stderr, __VA_ARGS__ )
 
 
/* Only used in the vpi */
/* Only used in the vpi */
 
jtag_cable_t vpi_cable_driver = {
 
    .name = "vpi",
 
    .inout_func = cable_vpi_inout,
 
    .out_func = cable_vpi_out,
 
    .init_func = cable_vpi_init,
 
    .opt_func = cable_vpi_opt,
 
    .bit_out_func = cable_common_write_bit,
 
    .bit_inout_func = cable_common_read_write_bit,
 
    .stream_out_func = cable_common_write_stream,
 
    .stream_inout_func = cable_common_read_stream,
 
    .flush_func = NULL,
 
    .opts = "s:p:",
 
    .help = "-p [port] Port number that the VPI module is listening on\n\t-s [server] Server that the VPI module is running on\n",
 
};
 
 
static int vpi_comm;
static int vpi_comm;
static int vpi_port = 4567;
static int vpi_port = 4567;
static char *vpi_server = "localhost";
static char *vpi_server = "localhost";
 
 
/* Only used for the rtl_sim */
/* Only used for the rtl_sim */
 
jtag_cable_t rtl_cable_driver = {
 
    .name ="rtl_sim",
 
    .inout_func = cable_rtl_sim_inout,
 
    .out_func = cable_rtl_sim_out,
 
    .init_func = cable_rtl_sim_init,
 
    .opt_func = cable_rtl_sim_opt,
 
    .bit_out_func = cable_common_write_bit,
 
    .bit_inout_func = cable_common_read_write_bit,
 
    .stream_out_func = cable_common_write_stream,
 
    .stream_inout_func = cable_common_read_stream,
 
    .flush_func = NULL,
 
    .opts = "d:",
 
    .help = "-d [directory] Directory in which gdb_in.dat/gdb_out.dat may be found\n"
 
};
 
 
static char *gdb_in = "gdb_in.dat";
static char *gdb_in = "gdb_in.dat";
static char *gdb_out = "gdb_out.dat";
static char *gdb_out = "gdb_out.dat";
 
 
 
 
 
 
/*-------------------------------------------[ rtl_sim specific functions ]---*/
/*-------------------------------------------[ rtl_sim specific functions ]---*/
 
jtag_cable_t *cable_rtl_get_driver(void)
 
{
 
  return &rtl_cable_driver;
 
}
 
 
int cable_rtl_sim_init()
int cable_rtl_sim_init()
{
{
  FILE *fin = fopen (gdb_in, "wt+");
  FILE *fin = fopen (gdb_in, "wt+");
  if(!fin) {
  if(!fin) {
    fprintf(stderr, "Can not open %s\n", gdb_in);
    fprintf(stderr, "Can not open %s\n", gdb_in);
Line 82... Line 116...
  } while(!r || (num_read != (0x10 | value)));
  } while(!r || (num_read != (0x10 | value)));
  debug("\n");
  debug("\n");
  return APP_ERR_NONE;
  return APP_ERR_NONE;
}
}
 
 
uint8_t cable_rtl_sim_inout(uint8_t value, uint8_t *inval)
int cable_rtl_sim_inout(uint8_t value, uint8_t *inval)
{
{
  FILE *fin = 0;
  FILE *fin = 0;
  char ch;
  char ch;
  uint8_t data;
  uint8_t data;
  debug("IO (");
  debug("IO (");
Line 142... Line 176...
  }
  }
  return APP_ERR_NONE;
  return APP_ERR_NONE;
}
}
 
 
/*-----------------------------------------------[ VPI specific functions ]---*/
/*-----------------------------------------------[ VPI specific functions ]---*/
 
jtag_cable_t *cable_vpi_get_driver(void)
 
{
 
  return &vpi_cable_driver;
 
}
 
 
 
 
int cable_vpi_init()
int cable_vpi_init()
{
{
  struct sockaddr_in addr;
  struct sockaddr_in addr;
  struct hostent *he;
  struct hostent *he;
 
 
Line 191... Line 231...
    if(ret < 0) {
    if(ret < 0) {
      printf("Error during receive (%s)\n", strerror(errno));
      printf("Error during receive (%s)\n", strerror(errno));
      return APP_ERR_CONNECT;
      return APP_ERR_CONNECT;
    }
    }
  } while(ack != (value | 0x10));
  } while(ack != (value | 0x10));
 
 
 
  cable_vpi_wait();  // finish the transaction
 
 
  return APP_ERR_NONE;
  return APP_ERR_NONE;
}
}
 
 
int cable_vpi_inout(uint8_t value, uint8_t *inval)
int cable_vpi_inout(uint8_t value, uint8_t *inval)
{
{
Line 211... Line 254...
    fprintf(stderr, "Unexpected value: %i\n", dat);
    fprintf(stderr, "Unexpected value: %i\n", dat);
 
 
  cable_vpi_out(value);
  cable_vpi_out(value);
 
 
  *inval = dat;
  *inval = dat;
 
 
 
  cable_vpi_wait();  // finish the transaction
 
 
  return APP_ERR_NONE;
  return APP_ERR_NONE;
}
}
 
 
void cable_vpi_wait()
void cable_vpi_wait()
{
{

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.