18#ifndef __ROGUE_PROTOCOLS_XILINX_JTAG_DRIVER_H__
19#define __ROGUE_PROTOCOLS_XILINX_JTAG_DRIVER_H__
84 std::shared_ptr<rogue::Logging>
log_;
90 vector<uint8_t> txBuf_;
91 vector<uint8_t> hdBuf_;
103 Header mkShift(
unsigned len);
105 virtual void setHdr(uint8_t* buf,
Header hdr);
134 static const char*
getMsg(
unsigned error);
175 static std::shared_ptr<rogue::protocols::xilinx::JtagDriver>
create(uint16_t port);
215 virtual int xfer(uint8_t* txb,
unsigned txBytes, uint8_t* hdbuf,
unsigned hsize, uint8_t* rxb,
unsigned size) {
234 virtual int xferRel(uint8_t* txb,
unsigned txBytes,
Header* phdr, uint8_t* rxb,
unsigned sizeBytes);
245 virtual uint64_t
query();
287 virtual void sendVectors(uint64_t numBits, uint8_t* tms, uint8_t* tdi, uint8_t* tdo);
294 virtual void dumpInfo(FILE* f = stdout);
Base transport driver for the AxisToJtag firmware protocol.
std::shared_ptr< rogue::Logging > log_
static const unsigned XID_SHIFT
virtual uint64_t getMaxVectorSize()
Returns transport-supported maximum vector size in bytes.
static Xid getXid(Header x)
static const unsigned ERR_NOT_PRESENT
static const Header CMD_E
static const uint32_t UNKNOWN_PERIOD
static const unsigned ERR_BAD_COMMAND
static const unsigned ERR_BAD_VERSION
bool isDone()
Returns completion/shutdown flag.
static const char * getMsg(unsigned error)
static const Header CMD_S
static const Header LEN_MASK
static Header getHdr(uint8_t *buf)
static const Header CMD_MASK
static const Header PVERS
static double REF_FREQ_HZ()
virtual int xfer(uint8_t *txb, unsigned txBytes, uint8_t *hdbuf, unsigned hsize, uint8_t *rxb, unsigned size)
Transport-level transfer primitive implemented by subclass.
virtual uint32_t getPeriodNs()
static const Header ERR_MASK
virtual void sendVectors(uint64_t numBits, uint8_t *tms, uint8_t *tdi, uint8_t *tdo)
Sends JTAG TMS/TDI vectors and receives TDO.
static uint64_t getLen(Header x)
static const unsigned ERR_TRUNCATED
virtual unsigned getWordSize()
virtual void dumpInfo(FILE *f=stdout)
Dumps cached driver/target information.
virtual uint64_t query()
Queries target capabilities and caches protocol parameters.
static void setup_python()
Registers Python bindings for this class.
uint32_t cvtPerNs(Header reply)
virtual uint32_t setPeriodNs(uint32_t newPeriod)
Requests update of TCK period.
unsigned memDepth(Header reply)
unsigned wordSize(Header reply)
static std::shared_ptr< rogue::protocols::xilinx::JtagDriver > create(uint16_t port)
Creates a JTAG driver instance.
static const Header CMD_Q
static const unsigned LEN_SHIFT
static const unsigned ERR_SHIFT
virtual int xferRel(uint8_t *txb, unsigned txBytes, Header *phdr, uint8_t *rxb, unsigned sizeBytes)
Executes transfer with retry and protocol validation.
static uint32_t getCmd(Header x)
virtual unsigned getMemDepth()
static unsigned getErr(Header x)
virtual void init()
Performs post-construction initialization.
static unsigned hdBufMax()
Maximum temporary header buffer size in bytes.
std::shared_ptr< rogue::protocols::xilinx::JtagDriver > JtagDriverPtr