uint32_t entry_point, uint32_t exit_point, void *arch_info)
{
int retval;
+ int timeout = 0;
/* Set up working area. First word is write pointer, second word is read pointer,
* rest is fifo data area. */
* less than buffer size / flash speed. This is very unlikely to
* run when using high latency connections such as USB. */
alive_sleep(10);
+
+ /* to stop an infinite loop on some targets check and increment a timeout
+ * this issue was observed on a stellaris using the new ICDI interface */
+ if (timeout++ >= 500) {
+ LOG_ERROR("timeout waiting for algorithm, a target reset is recommended");
+ return ERROR_FLASH_OPERATION_FAILED;
+ }
continue;
}
+ /* reset our timeout */
+ timeout = 0;
+
/* Limit to the amount of data we actually want to write */
if (thisrun_bytes > count * block_size)
thisrun_bytes = count * block_size;
return JIM_ERR;
}
- command_print(NULL, "0x%08x ", (int)(addr));
+ command_print_sameline(NULL, "0x%08x ", (int)(addr));
switch (dwidth) {
case 4:
for (x = 0; x < 16 && x < y; x += 4) {
z = target_buffer_get_u32(target, &(target_buf[x]));
- command_print(NULL, "%08x ", (int)(z));
+ command_print_sameline(NULL, "%08x ", (int)(z));
}
for (; (x < 16) ; x += 4)
- command_print(NULL, " ");
+ command_print_sameline(NULL, " ");
break;
case 2:
for (x = 0; x < 16 && x < y; x += 2) {
z = target_buffer_get_u16(target, &(target_buf[x]));
- command_print(NULL, "%04x ", (int)(z));
+ command_print_sameline(NULL, "%04x ", (int)(z));
}
for (; (x < 16) ; x += 2)
- command_print(NULL, " ");
+ command_print_sameline(NULL, " ");
break;
case 1:
default:
for (x = 0 ; (x < 16) && (x < y) ; x += 1) {
z = target_buffer_get_u8(target, &(target_buf[x]));
- command_print(NULL, "%02x ", (int)(z));
+ command_print_sameline(NULL, "%02x ", (int)(z));
}
for (; (x < 16) ; x += 1)
- command_print(NULL, " ");
+ command_print_sameline(NULL, " ");
break;
}
/* ascii-ify the bytes */
/* terminate */
target_buf[16] = 0;
/* print - with a newline */
- command_print(NULL, "%s\n", target_buf);
+ command_print_sameline(NULL, "%s\n", target_buf);
/* NEXT... */
bytes -= 16;
addr += 16;
/* found */
break;
}
+
+ /* check for deprecated name */
+ if (target_types[x]->deprecated_name) {
+ if (0 == strcmp(cp, target_types[x]->deprecated_name)) {
+ /* found */
+ LOG_WARNING("target name is deprecated use: \'%s\'", target_types[x]->name);
+ break;
+ }
+ }
}
if (target_types[x] == NULL) {
Jim_SetResultFormatted(goi->interp, "Unknown target type %s, try one of ", cp);
target->head = head;
curr = curr->next;
}
- if (target->rtos)
+
+ if (target && target->rtos)
retval = rtos_smp_init(head->target);
+
return retval;
}