always pass cable configuration. Check if /dev if empty or not
This commit is contained in:
parent
deb3d0bed2
commit
e0c19223c0
|
|
@ -42,14 +42,14 @@ using namespace std;
|
|||
|
||||
FtdiJtagBitBang::FtdiJtagBitBang(const FTDIpp_MPSSE::mpsse_bit_config &cable,
|
||||
const jtag_pins_conf_t *pin_conf, string dev, uint32_t clkHZ, bool verbose):
|
||||
FTDIpp_MPSSE(dev, cable.interface, clkHZ, verbose), _bitmode(0), _nb_bit(0)
|
||||
FTDIpp_MPSSE(cable, dev, clkHZ, verbose), _bitmode(0), _nb_bit(0)
|
||||
{
|
||||
init_internal(cable, pin_conf);
|
||||
}
|
||||
|
||||
FtdiJtagBitBang::FtdiJtagBitBang(const FTDIpp_MPSSE::mpsse_bit_config &cable,
|
||||
const jtag_pins_conf_t *pin_conf, uint32_t clkHZ, bool verbose):
|
||||
FTDIpp_MPSSE(cable.vid, cable.pid, cable.interface, clkHZ, verbose),
|
||||
FTDIpp_MPSSE(cable, clkHZ, verbose),
|
||||
_bitmode(0), _nb_bit(0)
|
||||
{
|
||||
init_internal(cable, pin_conf);
|
||||
|
|
|
|||
|
|
@ -42,14 +42,14 @@ using namespace std;
|
|||
|
||||
FtdiJtagMPSSE::FtdiJtagMPSSE(const FTDIpp_MPSSE::mpsse_bit_config &cable,
|
||||
string dev, uint32_t clkHZ, bool verbose):
|
||||
FTDIpp_MPSSE(dev, cable.interface, clkHZ, verbose), _ch552WA(false)
|
||||
FTDIpp_MPSSE(cable, dev, clkHZ, verbose), _ch552WA(false)
|
||||
{
|
||||
init_internal(cable);
|
||||
}
|
||||
|
||||
FtdiJtagMPSSE::FtdiJtagMPSSE(const FTDIpp_MPSSE::mpsse_bit_config &cable,
|
||||
uint32_t clkHZ, bool verbose):
|
||||
FTDIpp_MPSSE(cable.vid, cable.pid, cable.interface, clkHZ, verbose),
|
||||
FTDIpp_MPSSE(cable, clkHZ, verbose),
|
||||
_ch552WA(false)
|
||||
{
|
||||
init_internal(cable);
|
||||
|
|
|
|||
|
|
@ -18,14 +18,20 @@ using namespace std;
|
|||
#define display(...) \
|
||||
do { if (_verbose) fprintf(stdout, __VA_ARGS__);}while(0)
|
||||
|
||||
FTDIpp_MPSSE::FTDIpp_MPSSE(const string &dev, unsigned char interface,
|
||||
FTDIpp_MPSSE::FTDIpp_MPSSE(const mpsse_bit_config &cable, const string &dev,
|
||||
uint32_t clkHZ, bool verbose):_verbose(verbose), _vid(0),
|
||||
_pid(0), _bus(-1), _addr(-1), _product(""), _interface(interface),
|
||||
_pid(0), _bus(-1), _addr(-1), _product(""),
|
||||
_interface(cable.interface),
|
||||
_clkHZ(clkHZ), _buffer_size(2*32768), _num(0)
|
||||
{
|
||||
if (!search_with_dev(dev)) {
|
||||
cerr << "No cable found" << endl;
|
||||
throw std::exception();
|
||||
if (!dev.empty()) {
|
||||
if (!search_with_dev(dev)) {
|
||||
cerr << "No cable found" << endl;
|
||||
throw std::exception();
|
||||
}
|
||||
} else {
|
||||
_vid = cable.vid;
|
||||
_pid = cable.pid;
|
||||
}
|
||||
|
||||
open_device(115200);
|
||||
|
|
@ -38,10 +44,10 @@ FTDIpp_MPSSE::FTDIpp_MPSSE(const string &dev, unsigned char interface,
|
|||
}
|
||||
}
|
||||
|
||||
FTDIpp_MPSSE::FTDIpp_MPSSE(int vid, int pid, unsigned char interface,
|
||||
uint32_t clkHZ, bool verbose):_verbose(verbose), _vid(vid),
|
||||
_pid(pid), _bus(-1),
|
||||
_addr(-1), _product(""), _interface(interface),
|
||||
FTDIpp_MPSSE::FTDIpp_MPSSE(const mpsse_bit_config &cable,
|
||||
uint32_t clkHZ, bool verbose):_verbose(verbose),
|
||||
_vid(cable.vid), _pid(cable.pid), _bus(-1),
|
||||
_addr(-1), _product(""), _interface(cable.interface),
|
||||
_clkHZ(clkHZ), _buffer_size(2*32768), _num(0)
|
||||
{
|
||||
open_device(115200);
|
||||
|
|
@ -186,6 +192,9 @@ int FTDIpp_MPSSE::init(unsigned char latency, unsigned char bitmask_mode,
|
|||
mpsse_write();
|
||||
}
|
||||
|
||||
ftdi_read_data_set_chunksize(_ftdi, _buffer_size);
|
||||
ftdi_write_data_set_chunksize(_ftdi, _buffer_size);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -242,6 +251,7 @@ int FTDIpp_MPSSE::setClkFreq(uint32_t clkHZ, char use_divide_by_5)
|
|||
return -1;
|
||||
}
|
||||
ret = ftdi_read_data(_ftdi, buffer, 4);
|
||||
ftdi_usb_purge_buffers(_ftdi);
|
||||
|
||||
return real_freq;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,12 +5,6 @@
|
|||
|
||||
class FTDIpp_MPSSE {
|
||||
public:
|
||||
FTDIpp_MPSSE(const std::string &dev, unsigned char interface,
|
||||
uint32_t clkHZ, bool verbose = false);
|
||||
FTDIpp_MPSSE(int vid, int pid, unsigned char interface,
|
||||
uint32_t clkHZ, bool verbose = false);
|
||||
~FTDIpp_MPSSE();
|
||||
|
||||
typedef struct {
|
||||
int vid;
|
||||
int pid;
|
||||
|
|
@ -21,6 +15,12 @@ class FTDIpp_MPSSE {
|
|||
int bit_high_dir;
|
||||
} mpsse_bit_config;
|
||||
|
||||
FTDIpp_MPSSE(const mpsse_bit_config &cable, const std::string &dev,
|
||||
uint32_t clkHZ, bool verbose = false);
|
||||
FTDIpp_MPSSE(const mpsse_bit_config &cablen,
|
||||
uint32_t clkHZ, bool verbose = false);
|
||||
~FTDIpp_MPSSE();
|
||||
|
||||
int init(unsigned char latency, unsigned char bitmask_mode, unsigned char mode,
|
||||
mpsse_bit_config &bit_conf);
|
||||
int setClkFreq(uint32_t clkHZ);
|
||||
|
|
|
|||
|
|
@ -62,11 +62,11 @@ void FtdiSpi::setMode(uint8_t mode)
|
|||
}
|
||||
|
||||
static FTDIpp_MPSSE::mpsse_bit_config bit_conf =
|
||||
{0x08, 0x0B, 0x08, 0x0B};
|
||||
{0x403, 0x6010, INTERFACE_B, 0x08, 0x0B, 0x08, 0x0B};
|
||||
|
||||
FtdiSpi::FtdiSpi(int vid, int pid, unsigned char interface, uint32_t clkHZ,
|
||||
bool verbose):
|
||||
FTDIpp_MPSSE(vid, pid, interface, clkHZ, verbose)
|
||||
FTDIpp_MPSSE(bit_conf, clkHZ, verbose)
|
||||
{
|
||||
setCSmode(SPI_CS_AUTO);
|
||||
setEndianness(SPI_MSB_FIRST);
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ Jtag::Jtag(cable_t &cable, const jtag_pins_conf_t *pin_conf,
|
|||
_tms_buffer_size(128), _num_tms(0),
|
||||
_board_name("nope")
|
||||
{
|
||||
init_internal(cable, NULL, pin_conf, clkHZ);
|
||||
init_internal(cable, "", pin_conf, clkHZ);
|
||||
}
|
||||
|
||||
Jtag::~Jtag()
|
||||
|
|
|
|||
Loading…
Reference in New Issue