add interface id in mpsse_bit_config.

This commit is contained in:
Gwenhael Goavec-Merou 2020-03-07 07:19:20 +01:00
parent 78f66a33ec
commit 1ef72b0da6
7 changed files with 26 additions and 26 deletions

View File

@ -2,14 +2,16 @@
#define CABLE_HPP
#include <map>
#include <string>
#include "ftdipp_mpsse.hpp"
static std::map <std::string, FTDIpp_MPSSE::mpsse_bit_config > cable_list = {
{"digilent", {0x0403, 0x6010, 0xe8, 0xeb, 0x00, 0x60}},
{"digilent_hs2", {0x0403, 0x6014, 0xe8, 0xeb, 0x00, 0x60}},
{"digilent_hs3", {0x0403, 0x6014, 0x88, 0x8B, 0x20, 0x30}},
{"ft2232", {0x0403, 0x6010, 0x08, 0x0B, 0x08, 0x0B}}
static std::map <std::string, FTDIpp_MPSSE::mpsse_bit_config> cable_list = {
{"digilent", {0x0403, 0x6010, INTERFACE_A, 0xe8, 0xeb, 0x00, 0x60}},
{"digilent_hs2", {0x0403, 0x6014, INTERFACE_A, 0xe8, 0xeb, 0x00, 0x60}},
{"digilent_hs3", {0x0403, 0x6014, INTERFACE_A, 0x88, 0x8B, 0x20, 0x30}},
{"ft2232", {0x0403, 0x6010, INTERFACE_A, 0x08, 0x0B, 0x08, 0x0B}},
{"ft232RL", {0x0403, 0x6001, INTERFACE_A, 0x08, 0x0B, 0x08, 0x0B}}
};
#endif

View File

@ -41,15 +41,15 @@ using namespace std;
#endif
FtdiJtagMPSSE::FtdiJtagMPSSE(const FTDIpp_MPSSE::mpsse_bit_config &cable,
string dev, unsigned char interface, uint32_t clkHZ, bool verbose):
FTDIpp_MPSSE(dev, interface, clkHZ, verbose), _ch552WA(false)
string dev, uint32_t clkHZ, bool verbose):
FTDIpp_MPSSE(dev, cable.interface, clkHZ, verbose), _ch552WA(false)
{
init_internal(cable);
}
FtdiJtagMPSSE::FtdiJtagMPSSE(const FTDIpp_MPSSE::mpsse_bit_config &cable,
unsigned char interface, uint32_t clkHZ, bool verbose):
FTDIpp_MPSSE(cable.vid, cable.pid, interface, clkHZ, verbose),
uint32_t clkHZ, bool verbose):
FTDIpp_MPSSE(cable.vid, cable.pid, cable.interface, clkHZ, verbose),
_ch552WA(false)
{
init_internal(cable);

View File

@ -35,9 +35,9 @@
class FtdiJtagMPSSE : public JtagInterface, private FTDIpp_MPSSE {
public:
FtdiJtagMPSSE(const FTDIpp_MPSSE::mpsse_bit_config &cable, std::string dev,
unsigned char interface, uint32_t clkHZ, bool verbose = false);
uint32_t clkHZ, bool verbose = false);
FtdiJtagMPSSE(const FTDIpp_MPSSE::mpsse_bit_config &cable,
unsigned char interface, uint32_t clkHZ, bool verbose);
uint32_t clkHZ, bool verbose);
virtual ~FtdiJtagMPSSE();
int setClkFreq(uint32_t clkHZ) override {

View File

@ -14,6 +14,7 @@ class FTDIpp_MPSSE {
typedef struct {
int vid;
int pid;
int interface;
int bit_low_val;
int bit_low_dir;
int bit_high_val;

View File

@ -64,23 +64,22 @@ using namespace std;
*/
Jtag::Jtag(FTDIpp_MPSSE::mpsse_bit_config &cable, string dev,
unsigned char interface, uint32_t clkHZ, bool verbose):
uint32_t clkHZ, bool verbose):
_verbose(verbose),
_state(RUN_TEST_IDLE),
_tms_buffer_size(128), _num_tms(0),
_board_name("nope")
{
init_internal(cable, interface, clkHZ);
init_internal(cable, clkHZ);
}
Jtag::Jtag(FTDIpp_MPSSE::mpsse_bit_config &cable,
unsigned char interface, uint32_t clkHZ, bool verbose):
Jtag::Jtag(FTDIpp_MPSSE::mpsse_bit_config &cable, uint32_t clkHZ, bool verbose):
_verbose(verbose),
_state(RUN_TEST_IDLE),
_tms_buffer_size(128), _num_tms(0),
_board_name("nope")
{
init_internal(cable, interface, clkHZ);
init_internal(cable, clkHZ);
}
Jtag::~Jtag()
@ -89,10 +88,9 @@ Jtag::~Jtag()
delete _jtag;
}
void Jtag::init_internal(FTDIpp_MPSSE::mpsse_bit_config &cable,
unsigned char interface, uint32_t clkHZ)
void Jtag::init_internal(FTDIpp_MPSSE::mpsse_bit_config &cable, uint32_t clkHZ)
{
_jtag = new FtdiJtagMPSSE(cable, interface, clkHZ, _verbose);
_jtag = new FtdiJtagMPSSE(cable, clkHZ, _verbose);
_tms_buffer = (unsigned char *)malloc(sizeof(unsigned char) * _tms_buffer_size);
bzero(_tms_buffer, _tms_buffer_size);
@ -144,7 +142,7 @@ int Jtag::flushTMS(bool flush_buffer)
if (_num_tms != 0) {
display("%s: %d %x\n", __func__, _num_tms, _tms_buffer[0]);
_jtag->storeTMS(_tms_buffer, _num_tms);
_jtag->storeTMS(_tms_buffer, _num_tms);
/* reset buffer and number of bits */
bzero(_tms_buffer, _tms_buffer_size);

View File

@ -28,8 +28,8 @@
class Jtag {
public:
Jtag(FTDIpp_MPSSE::mpsse_bit_config &cable, std::string dev,
unsigned char interface, uint32_t clkHZ, bool verbose = false);
Jtag(FTDIpp_MPSSE::mpsse_bit_config &cable, unsigned char interface,
uint32_t clkHZ, bool verbose = false);
Jtag(FTDIpp_MPSSE::mpsse_bit_config &cable,
uint32_t clkHZ, bool verbose);
~Jtag();
@ -80,8 +80,7 @@ class Jtag {
void setVerbose(bool verbose){_verbose = verbose;}
private:
void init_internal(FTDIpp_MPSSE::mpsse_bit_config &cable,
unsigned char interface, uint32_t clkHZ);
void init_internal(FTDIpp_MPSSE::mpsse_bit_config &cable, uint32_t clkHZ);
bool _verbose;
int _state;
int _tms_buffer_size;

View File

@ -124,9 +124,9 @@ int main(int argc, char **argv)
/* jtag base */
Jtag *jtag;
if (args.device == "-")
jtag = new Jtag(cable, 1, 6000000, false);
jtag = new Jtag(cable, 6000000, false);
else
jtag = new Jtag(cable, args.device, 1, 6000000, false);
jtag = new Jtag(cable, args.device, 6000000, false);
/* chain detection */
vector<int> listDev;