|
|
|
|
@ -176,11 +176,11 @@ static __inline void FTDI_BITBANG_SETUP() { |
|
|
|
|
/* Enable bitbang mode */ |
|
|
|
|
success = ftdi_set_bitmode(&__ftdic, dir_state, BITMODE_SYNCBB ); |
|
|
|
|
if( success<0 ){ |
|
|
|
|
DEBUG("Could not change to async. bitbang: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not change to async. bitbang: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
} |
|
|
|
|
success = ftdi_write_data(&__ftdic,&out_state,1); |
|
|
|
|
if( success < 0){ |
|
|
|
|
DEBUG("Could not write pins: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not write pins: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
} |
|
|
|
|
/*ftdi_read_data_set_chunksize(&__ftdic,1);
|
|
|
|
|
ftdi_write_data_set_chunksize(&__ftdic,1);*/ |
|
|
|
|
@ -190,7 +190,7 @@ static __inline void FTDI_BITBANG_SETUP() { |
|
|
|
|
static __forceinline void FTDI_WRITE_OUT_READ_MODE( ) { |
|
|
|
|
int success = ftdi_write_data(&__ftdic,out_state_buff,out_state_buff_pos); |
|
|
|
|
if( success<0 ){ |
|
|
|
|
DEBUG("Could not write pins: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not write pins: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
exit(1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -198,7 +198,7 @@ static __forceinline void FTDI_WRITE_OUT_READ_MODE( ) { |
|
|
|
|
static __forceinline void FTDI_WRITE_OUT( ) { |
|
|
|
|
int success; |
|
|
|
|
if( out_state_buff_pos==0 ){ |
|
|
|
|
DEBUG("buffer is empty %d \n",out_state_buff_pos); |
|
|
|
|
DEBUGF("buffer is empty %d \n",out_state_buff_pos); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
FTDI_WRITE_OUT_READ_MODE( ); |
|
|
|
|
@ -209,7 +209,7 @@ static __forceinline void FTDI_WRITE_OUT( ) { |
|
|
|
|
while(out_state_buff_pos!=0) { |
|
|
|
|
success = ftdi_read_data(&__ftdic,in_buff,out_state_buff_pos); |
|
|
|
|
if( success < 0 ) { |
|
|
|
|
DEBUG("Could not read pins: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not read pins: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
exit(1); |
|
|
|
|
} |
|
|
|
|
out_state_buff_pos -= success; |
|
|
|
|
@ -234,11 +234,11 @@ static __inline void FTDI_BEGIN_READ(){ |
|
|
|
|
|
|
|
|
|
int success = ftdi_set_bitmode(&__ftdic, dir_state, BITMODE_SYNCBB ); |
|
|
|
|
if( success<0 ){ |
|
|
|
|
DEBUG("Could not change to sync. bitbang: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not change to sync. bitbang: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
} |
|
|
|
|
success = ftdi_usb_purge_rx_buffer(&__ftdic); |
|
|
|
|
if( success<0 ){ |
|
|
|
|
DEBUG("Could not flush buffer: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not flush buffer: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//memset ( pin_read_buff, 0, BUFFER_SIZE*sizeof(int) );
|
|
|
|
|
@ -255,13 +255,13 @@ static __inline void FTDI_END_READ(){ |
|
|
|
|
while( remaining ){ |
|
|
|
|
success = ftdi_read_data(&__ftdic,ptr,remaining); |
|
|
|
|
if( success<0 ){ |
|
|
|
|
DEBUG("Error while read: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Error while read: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
exit(1); |
|
|
|
|
} |
|
|
|
|
ptr+=success; |
|
|
|
|
remaining-=success; |
|
|
|
|
} |
|
|
|
|
DEBUG("Read %d/%d bytes\n",(int)(ptr-in_buff),out_state_buff_pos); |
|
|
|
|
DEBUGF("Read %d/%d bytes\n",(int)(ptr-in_buff),out_state_buff_pos); |
|
|
|
|
out_state_buff_pos = 0; |
|
|
|
|
|
|
|
|
|
for(i=0;i<pin_read_pos;i++){ |
|
|
|
|
@ -276,7 +276,7 @@ static __inline void FTDI_END_READ(){ |
|
|
|
|
|
|
|
|
|
success = ftdi_set_bitmode(&__ftdic, dir_state, BITMODE_SYNCBB ); |
|
|
|
|
if( success<0 ){ |
|
|
|
|
DEBUG("Could not change to async. bitbang: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not change to async. bitbang: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -326,7 +326,7 @@ static __inline void DAP_SETUP (void) { |
|
|
|
|
/* Open FTDI device based on FT232R vendor & product IDs */ |
|
|
|
|
success = ftdi_usb_open(&__ftdic, VID, PID); |
|
|
|
|
if(success < 0) { |
|
|
|
|
DEBUG("Can't open device [%x:%x]: %s\n",VID,PID,ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Can't open device [%x:%x]: %s\n",VID,PID,ftdi_get_error_string(&__ftdic)); |
|
|
|
|
exit(1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -336,7 +336,7 @@ static __inline void DAP_SETUP (void) { |
|
|
|
|
|
|
|
|
|
success = ftdi_set_baudrate (&__ftdic, DAP_DEFAULT_SWJ_CLOCK/2); |
|
|
|
|
if( success < 0){ |
|
|
|
|
DEBUG("Could not set baudrate: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not set baudrate: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
} |
|
|
|
|
/*uint8_t foo;
|
|
|
|
|
success = ftdi_read_data(&__ftdic,&foo,1);*/ |
|
|
|
|
@ -374,11 +374,11 @@ static __forceinline uint32_t PIN_IN ( uint8_t pin ) { |
|
|
|
|
if( dir_state & pin ){ |
|
|
|
|
//dir_state &= ~pin;
|
|
|
|
|
//ftdi_set_bitmode(&__ftdic, dir_state, BITMODE_SYNCBB );
|
|
|
|
|
DEBUG("Pin %s is not an input pin!\n", pin_to_str(pin)); |
|
|
|
|
DEBUGF("Pin %s is not an input pin!\n", pin_to_str(pin)); |
|
|
|
|
} |
|
|
|
|
int success = ftdi_read_pins(&__ftdic,&c); |
|
|
|
|
if(success < 0){ |
|
|
|
|
DEBUG("Could not read pin: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not read pin: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
} |
|
|
|
|
return (c & pin)!=0 ? 1 : 0; |
|
|
|
|
} |
|
|
|
|
@ -387,7 +387,7 @@ static __forceinline void PIN_SET ( uint8_t pin, uint32_t bit ) { |
|
|
|
|
if( !(dir_state & pin) ){ |
|
|
|
|
//dir_state |= pin;
|
|
|
|
|
//ftdi_set_bitmode(&__ftdic, dir_state, BITMODE_SYNCBB );
|
|
|
|
|
DEBUG("Pin %s is not an output pin!\n", pin_to_str(pin)); |
|
|
|
|
DEBUGF("Pin %s is not an output pin!\n", pin_to_str(pin)); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
/*if(bit & ~1){
|
|
|
|
|
@ -573,7 +573,7 @@ static __forceinline void PIN_SWDIO_OUT_ENABLE (void) { |
|
|
|
|
dir_state |= TMS_SWDIO; |
|
|
|
|
int success = ftdi_set_bitmode(&__ftdic, dir_state, __ftdic.bitbang_mode ); |
|
|
|
|
if( success<0 ){ |
|
|
|
|
DEBUG("Could not change SWDIO to out: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not change SWDIO to out: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -588,7 +588,7 @@ static __forceinline void PIN_SWDIO_OUT_DISABLE (void) { |
|
|
|
|
|
|
|
|
|
int success = ftdi_set_bitmode(&__ftdic, dir_state, __ftdic.bitbang_mode ); |
|
|
|
|
if( success<0 ){ |
|
|
|
|
DEBUG("Could not change SWDIO to in: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
DEBUGF("Could not change SWDIO to in: %s\n",ftdi_get_error_string(&__ftdic)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|