From 3bfd63b9877b5f2b0034d687c38a4d4bdebf9ca0 Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Sun, 6 Sep 2020 11:01:41 +0200 Subject: [PATCH] usbBlaster: init: flush FT245 buffer --- src/usbBlaster.cpp | 13 ++++++++++++- src/usbBlaster.hpp | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/usbBlaster.cpp b/src/usbBlaster.cpp index a64c3b2..eec90e4 100644 --- a/src/usbBlaster.cpp +++ b/src/usbBlaster.cpp @@ -50,7 +50,7 @@ using namespace std; UsbBlaster::UsbBlaster(bool verbose): _verbose(verbose), _nb_bit(0), - _curr_tms(0), _buffer_size(64) + _curr_tms(0), _buffer_size(4096) { init_internal(); } @@ -100,6 +100,17 @@ void UsbBlaster::init_internal() _tdi_pin = (1 << 4); _in_buf = (unsigned char *)malloc(sizeof(unsigned char) * _buffer_size); + + /* Force flush internal FT245 internal buffer */ + uint8_t val = DEFAULT | DO_WRITE | DO_BITBB | _tms_pin; + for (_nb_bit = 0; _nb_bit < _buffer_size; _nb_bit += 2) { + _in_buf[_nb_bit ] = val; + _in_buf[_nb_bit + 1] = val | _tck_pin; + } + + ftdi_write_data(_ftdi, _in_buf, _nb_bit); + + _nb_bit = 0; memset(_in_buf, 0, _buffer_size); } diff --git a/src/usbBlaster.hpp b/src/usbBlaster.hpp index 776ebc0..4a5a30c 100644 --- a/src/usbBlaster.hpp +++ b/src/usbBlaster.hpp @@ -89,6 +89,6 @@ class UsbBlaster : public JtagInterface { uint8_t _tdi_pin; /*!< tdi pin: 1 << pin id */ int _nb_bit; uint8_t _curr_tms; - uint8_t _buffer_size; + uint16_t _buffer_size; }; #endif