target/arm_adi_v5, cortex_m: retry ahbap_debugport_init few times in case of an error
Some targets need arbitrary amount of time (usually not too long) after reset (both sysresetreq and srst) to do initialisation, and SWD/JTAG is not available during that. According to PSoC4 docs, the debugger should try connecting until it succeeds. Also ahbap_debugport_init might be necessary to perform after using hardware srst too, so add it there (except for the targets that support srst_nogate since they are very unlikely to need it). Change-Id: I3598d5ff7b8e0bf3a5566a57dec4b0b2b243d297 Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/2601 Tested-by: jenkins
This commit is contained in:
@@ -1107,6 +1107,17 @@ static int cortex_m_deassert_reset(struct target *target)
|
||||
/* deassert reset lines */
|
||||
adapter_deassert_reset();
|
||||
|
||||
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
||||
|
||||
if ((jtag_reset_config & RESET_HAS_SRST) &&
|
||||
!(jtag_reset_config & RESET_SRST_NO_GATING)) {
|
||||
int retval = ahbap_debugport_init(target_to_cm(target)->armv7m.arm.dap);
|
||||
if (retval != ERROR_OK) {
|
||||
LOG_ERROR("DP initialisation failed");
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
|
||||
return ERROR_OK;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user