#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
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);
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)
{
}
}
-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();
/***************************************************************************/
/* 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];
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)
{
if (index >= JLINK_TAP_BUFFER_SIZE)
{
LOG_ERROR("jlink_tap_append_step: overflow");
+ *(u32 *)0xFFFFFFFF = 0;
exit(-1);
}