Author: Michael Bruck <mbruck@digenius.de>
[openocd.git] / src / jtag / jlink.c
index f95b1cbe13fa224f178ea2ec92a4e697689fb4e7..10563a0d9063defd7835a17fe3e4dad2b9ea4ee6 100644 (file)
 #include "config.h"
 #endif
 
-#include "replacements.h"
-
 #include "jtag.h"
 
 #include <usb.h>
-#include <string.h>
-#include <errno.h>
 
-#include "log.h"
 
 #define VID 0x1366
 #define PID 0x0101
 #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
@@ -88,7 +88,7 @@ static void jlink_end_state(tap_state_t state);
 static void jlink_state_move(void);
 static void jlink_path_move(int num_states, tap_state_t *path);
 static void jlink_runtest(int num_cycles);
-static void jlink_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command);
+static void jlink_scan(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command);
 static void jlink_reset(int trst, int srst);
 static void jlink_simple_command(u8 command);
 static int jlink_get_status(void);
@@ -417,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)
        {
@@ -439,11 +441,11 @@ static void jlink_runtest(int num_cycles)
        }
 }
 
-static void jlink_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command)
+static void jlink_scan(bool ir_scan, enum scan_type type, u8 *buffer, int scan_size, scan_command_t *command)
 {
        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();
 
@@ -609,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];
@@ -639,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)
        {
@@ -654,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);
        }
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)