From: kc8apf Date: Mon, 18 May 2009 17:42:36 +0000 (+0000) Subject: JLink support for non-7-cycle state moves by Dick Hollenbeck X-Git-Tag: v0.2.0~684 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=10923655d65eb773d0ad9e7b76ff3871bb546628 JLink support for non-7-cycle state moves by Dick Hollenbeck git-svn-id: svn://svn.berlios.de/openocd/trunk@1826 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- diff --git a/src/jtag/jlink.c b/src/jtag/jlink.c index 90fb42c4cf..10563a0d90 100644 --- a/src/jtag/jlink.c +++ b/src/jtag/jlink.c @@ -39,6 +39,11 @@ #define JLINK_USB_TIMEOUT 1000 // 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_OUT_BUFFER_SIZE 2*2048+4 #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(); + jlink_tap_ensure_space(1,num_cycles + 16); + /* only do a state_move when we're not already in 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; - jlink_tap_ensure_space(1, scan_size + 8); + jlink_tap_ensure_space(1, scan_size + 16); 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 */ -/* 2048 is the max value we can use here */ -#define JLINK_TAP_BUFFER_SIZE 1024 static unsigned tap_length=0; 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) { 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) { @@ -649,6 +654,7 @@ static void jlink_tap_append_step(int tms, int tdi) if (index >= JLINK_TAP_BUFFER_SIZE) { LOG_ERROR("jlink_tap_append_step: overflow"); + *(u32 *)0xFFFFFFFF = 0; exit(-1); }