armjtagew_runtest(cmd->cmd.runtest->num_cycles);
break;
- case JTAG_STATEMOVE:
+ case JTAG_TLR_RESET:
DEBUG_JTAG_IO("statemove end in %i", cmd->cmd.statemove->end_state);
armjtagew_end_state(cmd->cmd.statemove->end_state);
usb_out_buffer[0] = CMD_SET_TCK_FREQUENCY;
- buf_set_u32(usb_out_buffer + 1, 0, 32, speed);
+ buf_set_u32(usb_out_buffer + 1, 0, 32, speed*1000);
- result = armjtagew_usb_message(armjtagew_handle, 4, 4);
+ result = armjtagew_usb_message(armjtagew_handle, 5, 4);
if (result < 0)
{
usb_out_buffer[0] = CMD_GET_TCK_FREQUENCY;
result = armjtagew_usb_message(armjtagew_handle, 1, 4);
- speed_real = (int)buf_get_u32(usb_in_buffer,0,32);
+ speed_real = (int)buf_get_u32(usb_in_buffer,0,32) / 1000;
if (result < 0)
{
LOG_ERROR("ARM-JTAG-EW getting speed failed (%d)", result);
return ERROR_OK;
}
+static int armjtagew_speed_div(int speed, int* khz)
+{
+ *khz = speed;
+
+ return ERROR_OK;
+}
+
+
static int armjtagew_init(void)
{
int check_cnt;
if (result == 0)
{
unsigned int u_tg = buf_get_u32(usb_in_buffer, 0, 16);
- LOG_INFO("U_tg = %d mV, U_aux = %d mV, U_tgpwr = %d mV, I_tgpwr = %d mA, D1 = %d, Target power %s %s\n",
+ LOG_INFO("U_tg = %d mV, U_aux = %d mV, U_tgpwr = %d mV, I_tgpwr = %d mA, D1 = %d, Target power %s %s",
(int)(buf_get_u32(usb_in_buffer + 0, 0, 16)),
(int)(buf_get_u32(usb_in_buffer + 2, 0, 16)),
(int)(buf_get_u32(usb_in_buffer + 4, 0, 16)),
if (u_tg < 1500)
{
- LOG_ERROR("Vref too low. Check Target Power\n");
+ LOG_ERROR("Vref too low. Check Target Power");
}
}
else
{
- LOG_ERROR("ARM-JTAG-EW command CMD_GET_TAPHW_STATE failed (%d)\n", result);
+ LOG_ERROR("ARM-JTAG-EW command CMD_GET_TAPHW_STATE failed (%d)", result);
}
return ERROR_OK;
if (result != 0)
{
- LOG_ERROR("ARM-JTAG-EW command CMD_GET_VERSION failed (%d)\n", result);
+ LOG_ERROR("ARM-JTAG-EW command CMD_GET_VERSION failed (%d)", result);
return ERROR_JTAG_DEVICE_ERROR;
}
usb_in_buffer[1], usb_in_buffer[0], \
isgraph(usb_in_buffer[2]) ? usb_in_buffer[2] : 'X', \
sn, auxinfo);
+
+ if (1 != usb_in_buffer[1] || 6 != usb_in_buffer[0])
+ {
+ LOG_WARNING("ARM-JTAG-EW firmware version %d.%d is untested with this version of OpenOCD. You might experience unexpected behavior.", usb_in_buffer[1], usb_in_buffer[0]);
+ }
return ERROR_OK;
}
};
struct jtag_interface armjtagew_interface = {
- .name = "arm-jtag-ew",
-
- .commands = armjtagew_command_handlers,
-
- .execute_queue = &armjtagew_execute_queue,
- .speed = &armjtagew_speed,
- .khz = &armjtagew_khz,
-
- .init = &armjtagew_init,
- .quit = &armjtagew_quit,
- };
+ .name = "arm-jtag-ew",
+ .commands = armjtagew_command_handlers,
+ .transports = jtag_only,
+
+ .execute_queue = armjtagew_execute_queue,
+ .speed = armjtagew_speed,
+ .speed_div = armjtagew_speed_div,
+ .khz = armjtagew_khz,
+ .init = armjtagew_init,
+ .quit = armjtagew_quit,
+};
/***************************************************************************/
/* ARM-JTAG-EW tap functions */
static void armjtagew_tap_append_step(int tms, int tdi)
{
last_tms = tms;
- int index = tap_length / 8;
+ int index_local = tap_length / 8;
- if (index < ARMJTAGEW_TAP_BUFFER_SIZE)
+ if (index_local < ARMJTAGEW_TAP_BUFFER_SIZE)
{
int bit_index = tap_length % 8;
uint8_t bit = 1 << bit_index;
if (tms)
{
- tms_buffer[index] |= bit;
+ tms_buffer[index_local] |= bit;
}
else
{
- tms_buffer[index] &= ~bit;
+ tms_buffer[index_local] &= ~bit;
}
if (tdi)
{
- tdi_buffer[index] |= bit;
+ tdi_buffer[index_local] |= bit;
}
else
{
- tdi_buffer[index] &= ~bit;
+ tdi_buffer[index_local] &= ~bit;
}
tap_length++;
if (result == 0)
{
- int stat;
+ int stat_local;
- stat = (int)buf_get_u32(usb_in_buffer + byte_length, 0, 32);
- if (stat) {
- LOG_ERROR("armjtagew_tap_execute, emulator returned error code %d for a CMD_TAP_SHIFT command", stat);
+ stat_local = (int)buf_get_u32(usb_in_buffer + byte_length, 0, 32);
+ if (stat_local) {
+ LOG_ERROR("armjtagew_tap_execute, emulator returned error code %d for a CMD_TAP_SHIFT command", stat_local);
return ERROR_JTAG_QUEUE_FAILED;
}