add interface id in mpsse_bit_config.
This commit is contained in:
parent
78f66a33ec
commit
1ef72b0da6
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
16
src/jtag.cpp
16
src/jtag.cpp
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue