Browse Source

JLink support for non-7-cycle state moves by Dick Hollenbeck <dick@softplc.com>

git-svn-id: svn://svn.berlios.de/openocd/trunk@1826 b42882b7-edfa-0310-969c-e2dbd0fdcd60
tags/v0.2.0
kc8apf 15 years ago
parent
commit
10923655d6
1 changed files with 10 additions and 4 deletions
  1. +10
    -4
      src/jtag/jlink.c

+ 10
- 4
src/jtag/jlink.c View File

@@ -39,6 +39,11 @@
#define JLINK_USB_TIMEOUT 1000 #define JLINK_USB_TIMEOUT 1000


// See Section 1.3.2 of the Segger JLink USB protocol manual // See Section 1.3.2 of the Segger JLink USB protocol manual
/* 2048 is the max value we can use here */
//#define JLINK_TAP_BUFFER_SIZE 2048
#define JLINK_TAP_BUFFER_SIZE 256
//#define JLINK_TAP_BUFFER_SIZE 384

#define JLINK_IN_BUFFER_SIZE 2048 #define JLINK_IN_BUFFER_SIZE 2048
#define JLINK_OUT_BUFFER_SIZE 2*2048+4 #define JLINK_OUT_BUFFER_SIZE 2*2048+4
#define JLINK_EMU_RESULT_BUFFER_SIZE 64 #define JLINK_EMU_RESULT_BUFFER_SIZE 64
@@ -412,6 +417,8 @@ static void jlink_runtest(int num_cycles)


tap_state_t saved_end_state = tap_get_end_state(); tap_state_t saved_end_state = tap_get_end_state();


jlink_tap_ensure_space(1,num_cycles + 16);

/* only do a state_move when we're not already in IDLE */ /* only do a state_move when we're not already in IDLE */
if (tap_get_state() != TAP_IDLE) if (tap_get_state() != TAP_IDLE)
{ {
@@ -438,7 +445,7 @@ static void jlink_scan(bool ir_scan, enum scan_type type, u8 *buffer, int scan_s
{ {
tap_state_t saved_end_state; tap_state_t saved_end_state;


jlink_tap_ensure_space(1, scan_size + 8);
jlink_tap_ensure_space(1, scan_size + 16);


saved_end_state = tap_get_end_state(); saved_end_state = tap_get_end_state();


@@ -604,8 +611,6 @@ static int jlink_handle_jlink_info_command(struct command_context_s *cmd_ctx, ch
/***************************************************************************/ /***************************************************************************/
/* J-Link tap functions */ /* J-Link tap functions */


/* 2048 is the max value we can use here */
#define JLINK_TAP_BUFFER_SIZE 1024


static unsigned tap_length=0; static unsigned tap_length=0;
static u8 tms_buffer[JLINK_TAP_BUFFER_SIZE]; static u8 tms_buffer[JLINK_TAP_BUFFER_SIZE];
@@ -634,7 +639,7 @@ static void jlink_tap_init(void)
static void jlink_tap_ensure_space(int scans, int bits) static void jlink_tap_ensure_space(int scans, int bits)
{ {
int available_scans = MAX_PENDING_SCAN_RESULTS - pending_scan_results_length; int available_scans = MAX_PENDING_SCAN_RESULTS - pending_scan_results_length;
int available_bits = JLINK_TAP_BUFFER_SIZE * 8 - tap_length - 64;
int available_bits = JLINK_TAP_BUFFER_SIZE * 8 - tap_length - 32;


if (scans > available_scans || bits > available_bits) if (scans > available_scans || bits > available_bits)
{ {
@@ -649,6 +654,7 @@ static void jlink_tap_append_step(int tms, int tdi)
if (index >= JLINK_TAP_BUFFER_SIZE) if (index >= JLINK_TAP_BUFFER_SIZE)
{ {
LOG_ERROR("jlink_tap_append_step: overflow"); LOG_ERROR("jlink_tap_append_step: overflow");
*(u32 *)0xFFFFFFFF = 0;
exit(-1); exit(-1);
} }




Loading…
Cancel
Save