ftdiJtagMPSSE: don't flush/write everytime
This commit is contained in:
parent
23c9733a6d
commit
adb6efca39
|
|
@ -139,6 +139,7 @@ int FtdiJtagMPSSE::writeTMS(uint8_t *tms, int len, bool flush_buffer)
|
||||||
}
|
}
|
||||||
xfer -= bit_to_send;
|
xfer -= bit_to_send;
|
||||||
}
|
}
|
||||||
|
if (flush_buffer)
|
||||||
mpsse_write();
|
mpsse_write();
|
||||||
if (_ch552WA) {
|
if (_ch552WA) {
|
||||||
uint8_t c[len/8+1];
|
uint8_t c[len/8+1];
|
||||||
|
|
@ -166,9 +167,6 @@ int FtdiJtagMPSSE::toggleClk(uint8_t tms, uint8_t tdi, uint32_t clk_len)
|
||||||
buf[1] = ((len / 8) ) & 0xff;
|
buf[1] = ((len / 8) ) & 0xff;
|
||||||
buf[2] = ((len / 8) >> 8) & 0xff;
|
buf[2] = ((len / 8) >> 8) & 0xff;
|
||||||
mpsse_store(buf, 3);
|
mpsse_store(buf, 3);
|
||||||
ret = mpsse_write();
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
len %= 8;
|
len %= 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -176,16 +174,13 @@ int FtdiJtagMPSSE::toggleClk(uint8_t tms, uint8_t tdi, uint32_t clk_len)
|
||||||
buf[0] = 0x8E;
|
buf[0] = 0x8E;
|
||||||
buf[1] = len - 1;
|
buf[1] = len - 1;
|
||||||
mpsse_store(buf, 2);
|
mpsse_store(buf, 2);
|
||||||
ret = mpsse_write();
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
ret = clk_len;
|
ret = clk_len;
|
||||||
} else {
|
} else {
|
||||||
int byteLen = (len+7)/8;
|
int byteLen = (len+7)/8;
|
||||||
uint8_t buf_tms[byteLen];
|
uint8_t buf_tms[byteLen];
|
||||||
memset(buf_tms, (tms) ? 0xff : 0x00, byteLen);
|
memset(buf_tms, (tms) ? 0xff : 0x00, byteLen);
|
||||||
ret = writeTMS(buf_tms, len, true);
|
ret = writeTMS(buf_tms, len, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
@ -221,6 +216,9 @@ int FtdiJtagMPSSE::writeTDI(uint8_t *tdi, uint8_t *tdo, uint32_t len, bool last)
|
||||||
display("%s len : %d %d %d %d\n", __func__, len, real_len, nb_byte,
|
display("%s len : %d %d %d %d\n", __func__, len, real_len, nb_byte,
|
||||||
nb_bit);
|
nb_bit);
|
||||||
|
|
||||||
|
if ((nb_byte + _num + 3) > _buffer_size)
|
||||||
|
mpsse_write();
|
||||||
|
|
||||||
if ((nb_byte * 8) + nb_bit != real_len) {
|
if ((nb_byte * 8) + nb_bit != real_len) {
|
||||||
printf("pas cool\n");
|
printf("pas cool\n");
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,8 @@ class FTDIpp_MPSSE {
|
||||||
int _clkHZ;
|
int _clkHZ;
|
||||||
struct ftdi_context *_ftdi;
|
struct ftdi_context *_ftdi;
|
||||||
int _buffer_size;
|
int _buffer_size;
|
||||||
private:
|
|
||||||
int _num;
|
int _num;
|
||||||
|
private:
|
||||||
unsigned char *_buffer;
|
unsigned char *_buffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue