diff options
author | Tim Newsome <tim@sifive.com> | 2016-06-09 09:49:11 -0700 |
---|---|---|
committer | Tim Newsome <tim@sifive.com> | 2016-09-23 14:16:23 -0700 |
commit | 04cfc35147296385a50fbcacd47d7fed6b120afe (patch) | |
tree | ff8fed6a654438fd3c3a4502ea1a6694b75e0f51 /src/jtag | |
parent | dce4a992a3ffa17a0b268737acdacc31e8bebf58 (diff) | |
download | riscv-openocd-04cfc35147296385a50fbcacd47d7fed6b120afe.zip riscv-openocd-04cfc35147296385a50fbcacd47d7fed6b120afe.tar.gz riscv-openocd-04cfc35147296385a50fbcacd47d7fed6b120afe.tar.bz2 |
Use the dram cache to save some scans.
Diffstat (limited to 'src/jtag')
-rw-r--r-- | src/jtag/core.c | 53 |
1 files changed, 30 insertions, 23 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c index 70ac3aa..2a07129 100644 --- a/src/jtag/core.c +++ b/src/jtag/core.c @@ -838,10 +838,13 @@ int default_interface_jtag_execute_queue(void) int result = jtag->execute_queue(); + // TODO: I like these better than some of the other JTAG debug statements, + // but having both is silly. struct jtag_command *cmd = jtag_command_queue; while (debug_level >= LOG_LVL_DEBUG && cmd) { switch (cmd->type) { case JTAG_SCAN: +#if 0 LOG_DEBUG("JTAG %s SCAN to %s", cmd->cmd.scan->ir_scan ? "IR" : "DR", tap_state_name(cmd->cmd.scan->end_state)); @@ -868,37 +871,44 @@ int default_interface_jtag_execute_queue(void) free(str); } } - uint8_t *buf = NULL; - int scan_bits = jtag_build_buffer(cmd->cmd.scan, &buf); - char *str_out = buf_to_str(buf, scan_bits, 16); - free(buf); - LOG_DEBUG("vvv jtag_scan(%d, %d, %d'h%s, %d); // %s", - cmd->cmd.scan->ir_scan, - scan_bits, - scan_bits, str_out, - cmd->cmd.scan->end_state, tap_state_name(cmd->cmd.scan->end_state)); - free(str_out); - - struct scan_field *last_field = cmd->cmd.scan->fields + cmd->cmd.scan->num_fields - 1; - if (last_field->in_value) { - char *str_in = buf_to_str(last_field->in_value, last_field->num_bits, 16); - LOG_DEBUG("vvv jtag_check_tdo(%d, %d'h%s);", - last_field->num_bits, - last_field->num_bits, str_in); - free(str_in); +#endif + { + uint8_t *buf = NULL; + int scan_bits = jtag_build_buffer(cmd->cmd.scan, &buf); + char *str_out = buf_to_str(buf, scan_bits, 16); + free(buf); + LOG_DEBUG("vvv jtag_scan(%d, %d, %d'h%s, %d); // %s", + cmd->cmd.scan->ir_scan, + scan_bits, + scan_bits, str_out, + cmd->cmd.scan->end_state, tap_state_name(cmd->cmd.scan->end_state)); + free(str_out); + + struct scan_field *last_field = cmd->cmd.scan->fields + cmd->cmd.scan->num_fields - 1; + if (last_field->in_value) { + char *str_in = buf_to_str(last_field->in_value, last_field->num_bits, 16); + LOG_DEBUG("vvv jtag_check_tdo(%d, %d'h%s);", + last_field->num_bits, + last_field->num_bits, str_in); + free(str_in); + } } break; case JTAG_TLR_RESET: +#if 0 LOG_DEBUG("JTAG TLR RESET to %s", tap_state_name(cmd->cmd.statemove->end_state)); +#endif LOG_DEBUG("vvv jtag_tlr_reset(%d); // %s", cmd->cmd.statemove->end_state, tap_state_name(cmd->cmd.statemove->end_state)); break; case JTAG_RUNTEST: +#if 0 LOG_DEBUG("JTAG RUNTEST %d cycles to %s", cmd->cmd.runtest->num_cycles, tap_state_name(cmd->cmd.runtest->end_state)); +#endif LOG_DEBUG("vvv jtag_runtest(%d, %d); // %s", cmd->cmd.runtest->num_cycles, cmd->cmd.runtest->end_state, @@ -906,35 +916,32 @@ int default_interface_jtag_execute_queue(void) break; case JTAG_RESET: { +#if 0 const char *reset_str[3] = { "leave", "deassert", "assert" }; LOG_DEBUG("JTAG RESET %s TRST, %s SRST", reset_str[cmd->cmd.reset->trst + 1], reset_str[cmd->cmd.reset->srst + 1]); +#endif LOG_DEBUG("vvv jtag_reset(%d, %d);", cmd->cmd.reset->trst, cmd->cmd.reset->srst); } break; case JTAG_PATHMOVE: LOG_DEBUG("JTAG PATHMOVE (TODO)"); - abort(); break; case JTAG_SLEEP: LOG_DEBUG("JTAG SLEEP (TODO)"); - abort(); break; case JTAG_STABLECLOCKS: LOG_DEBUG("JTAG STABLECLOCKS (TODO)"); - abort(); break; case JTAG_TMS: LOG_DEBUG("JTAG STABLECLOCKS (TODO)"); - abort(); break; default: LOG_ERROR("Unknown JTAG command: %d", cmd->type); - abort(); break; } cmd = cmd->next; |